Cara mengonversi file suara ke Opus

22

Untuk pengujian, saya ingin mengonversi file MP3 dan WAV yang saya miliki ke Opus, apa langkah-langkah untuk melakukan ini?

Luis Alvarado
sumber
1
@EvanCarroll Oleh karena itu bagian yang mengatakan "Untuk pengujian";)
Luis Alvarado
2
@ EvanCarroll Itu tergantung pada apa yang ingin Anda capai dan kualitas bahan input. Jika Anda mencari solusi audiophile absolut, Anda mungkin tidak pernah ingin mempertimbangkan Opus. Mengatakan itu adalah ide yang mengerikan hanyalah pernyataan yang mengerikan, ketika tidak ada penjelasan.
LiveWireBT
1
@LiveWireBT Mengatakan bahwa penyandian mp3 dalam opus bukanlah ide yang mengerikan kecuali jika Anda mencari solusi audiophile mutlak hanya pernyataan yang mengerikan, ketika tidak ada penjelasan.
Evan Carroll
2
@EvanCarroll Opus memiliki dukungan khusus untuk bicara, MP3 tidak. Ini berarti Anda dapat mengurangi ukuran podcast dan buku audio secara signifikan tanpa kehilangan kualitas yang nyata. Saya gagal melihat bagaimana itu adalah ide yang mengerikan.
Christian
3
@EvanCarroll "deteksi otomatis ucapan atau musik untuk memutuskan mode pengodean mana yang akan digunakan" dari opus-codec.org . Dan tentu saja Anda akan kehilangan kualitas. Itu sebabnya itu adalah codec lossy. Anda mengatakan bahwa ini tidak pernah dapat dibenarkan sekalipun dan saya memberi Anda contoh yang baik di mana ukuran adalah masalah besar, kualitas kepentingan sekunder dan sumber lossless tidak tersedia.
Christian

Jawaban:

23

Per default, konverter audio yang dikirimkan dengan alat-alat opus dapat mengkonversi audio dalam format mentah, gelombang atau AIFF. Sintaks minimal menggunakan pengaturan default:

opusenc input.wav output.opus

Kami mungkin ingin menambahkan bitrate yang lebih baik sebagai default 96 kbps dengan opsi --bitrate N.nnn(untuk semua opsi lihat halaman manual untuk opusenc).

Untuk mengkonversi mp3 "on the fly". yaitu tanpa membuat file sementara kita dapat mem-pipe output dari avconv ke opusenc seperti ini:

avconv -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus
Takkat
sumber
Di mana mendapatkan "opusenc"?
shevy
1
@shevy: ia datang dengan alat-alat opus .
Takkat
@shevy: $ sudo apt install opus-tools
Jose Barakat
1
Untuk melakukan ini pada banyak file flac: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(Saya memilih 140 sebagai bitrate karena menurut ini lebih dari cukup untuk file stereo.
Joschua
11

Ubuntu 14.04 dan Debian 8 dikirimkan dengan versi 9 libav-toolsdi repositori mereka, dan Ubuntu memiliki dukungan bawaan untuk Opus melalui paketlibopus0 .

Contoh 1: Masukkan kembali file audio sebagai karya

Dengan versi 9 libav-toolsdan libopus0diinstal Anda dapat, misalnya, melakukan:

avconv -i file.mp3 -map 0:a -codec:a opus -b:a 100k -vbr on file.opus

Apa yang dilakukan opsi

  • -i file.mp3 mengatur file input.
  • -map 0:aakan memilih semua stream audio ( a) dari file input 0. Baca lebih lanjut tentang -mapdi https://libav.org/avconv.html#Advanced-options
  • -codec:a opusmemilih encoder opus untuk stream audio ( a). Baca lebih lanjut tentang -codecdi https://libav.org/avconv.html#Main-options .
  • -b:a 100kmengatur bitrate audio ke 100 kilobit / s. Baca lebih lanjut tentang -bdi https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onmengaktifkan bitrate variabel. Ini adalah opsi khusus untuk libopus. Berikut ini semua opsi untuk libopus:

    $ avconv -h full | grep opus -A 11
    avconv version 9.11-6:9.11-3+b2, Copyright (c) 2000-2013 the Libav developers
      built on Apr  6 2014 17:45:45 with gcc 4.8 (Debian 4.8.2-16)
    libopus AVOptions:
    -application       <int>   E..A. Intended application type
       voip                    E..A. Favor improved speech intelligibility
       audio                   E..A. Favor faithfulness to the input
       lowdelay                E..A. Restrict to only the lowest delay modes
    -frame_duration    <float> E..A. Duration of a frame in milliseconds
    -packet_loss       <int>   E..A. Expected packet loss percentage
    -vbr               <int>   E..A. Variable bit rate mode
       off                     E..A. Use constant bit rate
       on                      E..A. Use variable bit rate
       constrained             E..A. Use constrained VBR
    
  • file.opus mengatur file output.

Contoh 2: Raih audio dari file video dan kodekan sebagai opus

Ambil aliran kedua dari input pertama ( -map 0:1), yang merupakan aliran audio. Encode dengan libopus pada 100 kbit / s dengan bitrate variabel pada:

$ avconv -stats -i linuxactionshowep309-432p.mp4 -map 0:1 -c libopus -b 100k linuxactionshowep309-432p-audio-only.opus
avconv version 9.11-6:9.11-3+b2, Copyright (c) 2000-2013 the Libav developers
  built on Apr  6 2014 17:45:45 with gcc 4.8 (Debian 4.8.2-16)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'linuxactionshowep309-432p.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100
  Duration: 01:14:48.45, start: 0.042667, bitrate: 466 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 768x432 [PAR 1:1 DAR 16:9], 330 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
Output #0, ogg, to 'linuxactionshowep309-432p-audio-only.opus':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf54.20.3
    Stream #0.0(und): Audio: libopus, 48000 Hz, stereo, flt, 100 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (aac -> libopus)
Press ctrl-c to stop encoding
size=   54360kB time=4488.47 bitrate=  99.2kbits/s    
video:0kB audio:53875kB global headers:0kB muxing overhead 0.900602%

Dengan paket mediainfodiinstal:

$ mediainfo linuxactionshowep309-432p-audio-only.opus
General
Complete name                            : linuxactionshowep309-432p-audio-only.opus
Format                                   : OGG
File size                                : 53.1 MiB
Duration                                 : 1h 14mn
Overall bit rate                         : 99.2 Kbps
Writing application                      : Lavf54.20.3
major_brand                              : isom
minor_version                            : 512
compatible_brands                        : isomiso2avc1mp41

Audio
ID                                       : 2104437746 (0x7D6F2BF2)
Format                                   : Opus
Duration                                 : 1h 14mn
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Writing library                          : Lavf54.20.3
Daniel Jonsson
sumber
1
Bekerja di Ubuntu 14.04 dengan sempurna! Bisakah Anda menjelaskan apa -map 0:a? (Dan mungkin merinci seluruh baris?)
425nesp
@ piña Saya telah memperbarui jawabannya dengan penjelasan tentang argumen dan contoh tambahan.
Daniel Jonsson
5

Opus pada 12.04

Pada 12.04 (Precise), bagaimanapun, ada masalah ketergantungan dengan menginstal codec dan alat-alat opus, jadi saya telah menemukan sejauh ini solusi terbaik adalah yang telah tersedia baru-baru ini: kompilasi audio encoder dan decoder opus seperti disebutkan di sini , dan membangun ffmpegdengan dukungan opus dengan menambahkan --enable-opusopsi konfigurasi ffmpeg(seperti yang tercantum pada panduan kompilasi ).

Saya tahu itu ffmpegsudah usang di Ubuntu Libav, tetapi kompilasi adalah cara yang baik untuk mendapatkan opus encoder / decoder yang berfungsi penuh terintegrasi ke dalam ffmpegdirinya sendiri. Anda kemudian dapat menggunakannya untuk mengkonversi file (pertama ke wav) dan kemudian ke .opus. Dokumentasi yang dipasang dengan libopus dan ffmpeg akan mengungkapkan semua opsi yang dapat digunakan untuk mengonversi file.

Saat mengonversi file dengan ffmpegsetelah kompilasi, Anda harus menentukan -acodec libopusatau ffmpegtidak akan menggunakan opus codec:

ffmpeg -i pc.wav -ar 48000 -ac 2 -acodec libopus -ab 256k man.opus

Anda kemudian dapat menguji file yang dibuat dengan

ffplay man.opus

Tips Kompilasi

Tidak perlu mereproduksi panduan di sini secara keseluruhan, tetapi perlu dicatat satu atau dua hal:

  • Pertama-tama Anda harus menginstal dependensi seperti yang tercantum (saya hilangkan yasmdari daftar: lihat poin kedua saya):

     sudo apt-get -y install autoconf build-essential checkinstall git libass-dev libfaac-dev libgpac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev librtmp-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
    
  • Ada satu masalah yang harus ditunjukkan: git build tampaknya ingin yasm-1.2, dan itu tidak tersedia, jadi Anda harus mengkompilasi sumber dari situs resmi , tetapi sederhana. Hapus saja versiyasm , kemudian ekstrak arsip yang diunduh, cdke folder, jalankan ./configure && makedan kemudian sudo checkinstall. Jika ada bangunan lain yang memerlukan versi sebelumnya, Anda bisa menghapus versi ini dan menginstal versi repositori.

  • Hal ini diperlukan untuk menghapus yang ada libav, ffmpeg,x264 , libvpx, atau fdk-aacpaket sebelum Anda mulai kompilasi.

  • Hal ini penting bahwa Anda mengkompilasi dan menginstal x264, fdk-aac,libvpx dan opussebelum Anda membangun ffmpeg, karena perpustakaan tersebut akan digunakan dalam membangun.

  • Jangan lupa untuk menambahkan --enable-opusopsi konfigurasi ketika Anda menjalankan ffmpegkompilasi.

  • Versi opus yang dikompilasi adalah 1.1alpha, jadi Anda mungkin perlu mengkompilasi ulang pustaka opus dan ffmpeg di masa depan lagi ketika versi baru dirilis.

  • Anda dapat menggunakan ffplayuntuk memutar file opus apa pun yang Anda buat.


sumber
ffmpeg adalah solusi buruk untuk apa pun yang ada penggantinya.
Evan Carroll
2
@ EvanCarroll Apa maksudmu dengan ini? Ini hanya keputusan seseorang untuk mencabutnya: ffmpeg masih sebagus libav, yang hanya merupakan garpu saja.
1
Jawaban yang bagus, dan terima kasih atas pengingat pada kebutuhan Yasm. x264 meningkatkan versi minimum menjadi 1.2.0 pada dorongan terakhir mereka. Panduan diperbarui dengan instruksi Yasm.
Logo
@Mik Saya pikir dia ingin mengatakan bahwa encoder yang berdiri sendiri akan memberikan hasil yang lebih baik.
LiveWireBT
Saya melihat beberapa orang mengatakan mengalami kesalahan "opus not found" ketika mengikuti instruksi untuk mengkompilasi ffmpeg. Saya memiliki masalah yang sama di Ubuntu 12.04, dan kemudian menemukan PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" perlu dipotong pada akhirnya.
3

Begitulah cara saya melakukannya:

  • Pertama, buka terminal di direktori yang sama di mana file audio Anda berada.
  • Kemudian, ketikkan perintah ini:
$ opusenc --bitrate 320 --max-delay 10 "18 - Soul Asylum - Runaway Train (Versi Album) .flac" "18 - Soul Asylum - Runaway Train (Versi Album) .opus"

EDIT:

Untuk Audiophiles:

$ opusenc --bitrate 510 --max-delay 10 "18 - Soul Asylum - Runaway Train (Versi Album) .flac" "18 - Soul Asylum - Runaway Train (Versi Album) .opus"

Tidak perlu menentukan --maxdelay 10opsi karena opusencmelakukan ini secara default.

Output Konsol untuk konversi file ini ( --bitrate 320):

    Encoding using libopus 1.1.2 (audio)
    -----------------------------------------------------
       Input: 44.1kHz 2 channels
      Output: 2 channels (2 coupled)
          20ms packets, 320kbit/sec VBR
     Preskip: 356

    Encoding complete   
    -----------------------------------------------------
           Encoded: 4 minutes and 22.4 seconds
           Runtime: 8 seconds
                    (32.8x realtime)
             Wrote: 10955530 bytes, 13120 packets, 13124 pages
           Bitrate: 317.691kbit/s (without overhead)
     Instant rates: 1.2kbit/s to 510.4kbit/s
                    (3 to 1276 bytes per packet)
          Overhead: 4.89% (container+metadata)

Ini sangat cepat! Kurang dari 8 detik dengan kompleksitas 10 (Encoding kompleksitas komputasi (0-10, default: 10). Zero memberikan pengkodean tercepat tetapi kualitas lebih rendah, sedangkan 10 memberikan kualitas tertinggi tetapi pengkodean lebih lambat) dan waktu tunda maksimum 10 ms ( Penundaan kontainer maksimum dalam milidetik (0-1000, default: 1000)), jadi jika Anda melewatkan waktu dalam sebuah lagu, efek kliping akan memiliki durasi 10 ms sehingga tidak dapat dilihat (coba dengan 1000 dan dengarkan perbedaannya dengan melewatkan waktu Anda) mouse). Bitrate adalah VBR secara default. 320kbps bekerja untuk saya jadi opsional, bermain dengan nomor ini:
--bitrate N.nnn => Target bitrate dalam kbit / detik (6-256 per saluran)

Omong-omong, pengkodean dari MP3 ke OPUS bukanlah ide yang baik, itu tidak akan terdengar lebih baik, algoritma kompresi mereka terlalu berbeda. Tetapi dari FLAC atau WAV atau format audio lossless lainnya , itu cerita lain.

Catatan: Untuk menyandikan file lain, cukup tekan Panah Atas di terminal yang sama untuk memanggil perintah terakhir dan ubah nama file input dan output.
Jika Anda mencari GUI ffmpeg / avconv, mungkin TraGtor adalah yang Anda butuhkan.

Anda juga dapat memeriksa perbedaan spektogram antara format Lossless dan Lossy pada bitrate tinggi dengan Spek atau Audacity .

Jose Barakat
sumber
Itu tidak berhasil untuk saya. Saya mendapatkan Error parsing input file: Hardvapour remix-.mp3saya menggunakan 16,04
Sarah Szabo
Pertanyaannya adalah tentang mp3, bukan flac.
Pasang kembali Monica - M. Schröder
0
  1. Temukan CD (atau flac dengan CDEMU) dengan konten yang sama dengan mp3.
  2. Instal opus-toolsdan Audex.
  3. Buka Audex dan tambahkan profil baru bernama Opus, tambahkan pola Perintah;

    opusenc $i --comment="TRACKNUMBER="$trackno"" --artist "$artist" --album "$title" --title "$ttitle" --date "$date" --picture "$cover" $o

dan sufiks opus

  1. biarkan robek!
Joel Garcia
sumber