Saya memiliki trek audio 5,1 dari sebuah film di mana kiri depan dan kanan depan berisi musik, dan pusat berisi dialog. Memainkan trek 5.1 di VLC memadukan semuanya dengan baik.
Saya mencoba mengubah trek 5.1 menjadi menggunakan stereo ffmpeg -ac 2
, namun campuran stereo yang dihasilkan memiliki volume yang jauh lebih lemah daripada memutar lagu 5.1 secara asli.
Menambahkan -af "pan=stereo|c0=FL|c1=FR"
memberikan volume yang benar, tetapi kemudian tidak ada dialog karena saluran tengah tidak termasuk.
Jadi solusinya mungkin untuk mencampur kiri / tengah / kanan ke stereo, dan membuang saluran subwoofer belakang? (Saya menduga di sini ...)
Jadi pertanyaannya adalah: Bagaimana cara saya membuat ffmpeg downmix 5.1 menjadi stereo dengan cara yang sama seperti VLC, dengan volume kuat yang sama pada hasil akhirnya?
-ac 2
. Jadi saya bertanya bagaimana membuat ffmpeg menghasilkan hasil yang sama baiknya dengan VLC.Jawaban:
Saya menemukan jawaban yang diberikan Shane untuk menyediakan terlalu sedikit saluran lain dan terlalu banyak pusat. Film dengan headphone terdengar tidak seimbang, dengan semua dialog dan tidak cukup musik latar / efek.
Menurut standar ATSC (bagian 7.8, halaman 91), rumus berikut ini digunakan untuk meng-downmix 5.1 ke stereo konvensional (sebagai lawan dari matriks):
clev dan slev harus 0,707, sesuai dengan tabel 5.9 dan 5.10 dalam dokumen yang disebutkan di atas, dengan asumsi tingkat campuran pusat / surround 0. Nilai-nilai lain disediakan dalam tabel-tabel yang mengurangi jumlah campuran pusat, yang saya tidak menemukan berguna.
Dengan mengingat hal ini, opsi ffmpeg berikut menghasilkan suara seimbang yang baik dengan dialog yang terdengar. Perhatikan bahwa menentukan saluran audio tidak perlu.
Catatan tentang penggunaan simbol kurang dari, dari dokumentasi saringan panci :
sumber
ac -2
saklarnya. Dengan kata lain, satu-satunya perbedaan antara menggunakan filter ini dan melakukanac -2
adalah lebih banyak mengetik.Jawaban atas pertanyaan ini telah menjadi sedikit berantakan, dengan banyak berisi informasi yang berlebihan dan yang lainnya tidak akurat. Jawaban ini merupakan upaya untuk merampingkan informasi dalam jawaban ini sambil menghilangkan masalah di dalamnya.
Yang paling penting, perlu diingat bahwa jawaban Gregory, yang saat ini merupakan jawaban terpilih untuk pertanyaan ini, tidak berbeda dengan menggunakan
-ac 2
saklar - lebih lanjut tentang ini di bawah ini.Downmixing aliran audio saluran 5.1 ke stereo dengan
-ac 2
FFmpeg hadir dengan kemampuan bawaan untuk downmixing trek 5.1 ke stereo, dan ini juga solusi yang direkomendasikan oleh dokumentasi FFmpeg :
The
-ac 2
beralih bekerja dengan mencampur proporsi yang pertama 5 saluran dari sungai 6-channel sumber ini - Kembali Kiri, Kanan Kembali, Front Kiri, Front Kanan dan Front Center - dalam Front Kiri dan Kanan depan saluran output stream stereo:Saat melakukannya, audio dari saluran LFE ( .1 in 5.1, disediakan untuk subwoofer dan digunakan untuk efek frekuensi rendah yang dalam) dibuang sepenuhnya ketika menggunakan opsi ini.
Sayangnya, dalam pengujian saya
-ac 2
menghasilkan tingkat keseluruhan musik dan dialog yang paling berbeda dengan sumbernya, menjadikannya formula downmix yang memberikan output terburuk dari semua formula yang saya uji, meskipun Anda dapat mengujinya dan menemukan bahwa itu memberi Anda downmix yang cukup memadai untuk kebutuhan Anda, dalam hal ini menggunakan formula lain akan berlebihan bagi Anda.Untuk downmix track DTS dengan
-ac 2
tanpa transcoding (yaitu untuk menjaga codec dan ekstensinya tetap sama):Seperti yang ditunjukkan oleh Mephisto dalam jawabannya, jika dialog dan musik terdengar seimbang antara satu sama lain untuk Anda tetapi tidak memiliki volume, Anda dapat mengurangi aliran sementara juga meningkatkan volumenya:
Untuk
-vol
sakelar, volume 100% di sumber setara dengan nilai integer 256, dan menggunakan nilai lebih besar dari ini akan meningkatkan volume keseluruhan aliran audio. Namun, perhatikan bahwa melakukan terlalu banyak dapat mengakibatkan distorsi atau artefak, terutama selama bagian yang lebih keras.Untukmengurangi aliran audio ke stereo dan transkode ke AC3 codec, misalnya:
Downmixing aliran audio saluran 5.1 ke stereo dengan algoritme campuran khusus
Jika Anda ingin downmix berkualitas lebih tinggi, atau Anda benar-benar harus memasukkan aliran LFE ke dalam output Anda, Anda dapat menggunakan saklar filter audio FFmpeg (
-af
) untuk downmix audio menggunakan formula campuran khusus.Downmixing dengan rumus ATSC (jawaban Gregory)
Pada saat memposting jawaban ini, jawaban pilihan teratas untuk pertanyaan ini adalah milik Gregory , yang menempatkan formula dari spesifikasi ATSC (lihat bagian 7.8.2, Menurunkan ke Dua Saluran ) ke dalam filter audio FFmpeg. Spesifikasi ini sendiri langsung terkait dengan dengan dokumentasi FFmpeg pada topik , menunjukkan itu sangat mungkin menjadi rumus yang sama yang FFmpeg sudah menerapkan untuk perusahaan
-ac 2
switch. Jika ini benar, maka mengetik seluruh rumus dalam jawaban Gregory tidak akan berbeda dengan menggunakan-ac 2
sakelar, dan karenanya membuang-buang waktu.Saya memutuskan untuk menguji hal ini dengan mengkode ulang input audio yang sama menggunakan keduanya
-ac 2
dan-af
filter dari jawaban Gregory (perintah persis yang digunakan dapat dilihat pada catatan kaki untuk jawaban ini).Saya kemudian membandingkan ukuran file output yang dihasilkan dan menemukan mereka, byte-untuk-byte, ukuran yang sama:
Akhirnya, saya membuka kedua file output di Audacity, dan membandingkan bentuk gelombang mereka untuk mengkonfirmasi mereka identik (klik untuk memperbesar):
Karena itu, tampaknya cukup konklusif bahwa rumus ATSC yang dirinci dalam jawaban Gregory adalah yang sama sudah diterapkan oleh FFmpeg , dan bahwa menggunakannya sepenuhnya berlebihan ketika tidak melakukan apa pun yang
-ac 2
tidak, dan merupakan perintah yang jauh lebih rumit.Downmixing tanpa membuang saluran LFE (jawaban Dave_750)
Dari beberapa yang disertakan dalam jawaban, ini adalah satu-satunya formula downmix yang tampaknya mencampur saluran LFE ke stereo output alih-alih membuang seluruhnya, dan sebagai hasilnya, salah satu yang memastikan paling sedikit suara dari sumber adalah kalah.
Tingkat volume keseluruhan lebih tinggi dan lebih lengkap daripada melakukan
-ac 2
, tetapi juga masih lebih rendah daripada downmix Dialog Nightmode di bawah ini. Namun, level musik lebih dekat ke sumber daripada downmix Dialog Nightmode, dan karena dimasukkannya trek LFE, meningkatkan volume output saat menggunakan rumus downmix ini dapat membuat aliran output yang terdengar lebih benar ke sumber 5.1 daripada yang lainnya. rumus yang saya uji.Jika Anda memiliki kemampuan, saya akan sangat menyarankan untuk menyandikan aliran audio Anda menggunakan rumus downmix dan downmix Dialog Nightmode, dan dengan hati-hati membandingkan bentuk gelombang keduanya untuk menentukan mana yang lebih baik.
Untuk downmix trek 5,1 ke stereo menggunakan formula ini dan meningkatkan level volumenya menjadi 425 (di mana 256 adalah 100% dari level volume sumber asli):
Downmixing dengan Dialog Nightmode Robert Collier (jawaban Shane Harrelson)
Rumus Nightmode Dialogue, yang dibuat oleh Robert Collier di forum Doom9 dan bersumber dari Shane Harrelson dalam jawabannya, menghasilkan downmix yang jauh lebih baik daripada
-ac 2
switch - alih-alih dialog yang terlalu sunyi, itu membawa mereka kembali ke level yang lebih dekat dengan sumber.Dari deskripsi campuran Robert Collier:
Sayangnya, musik formula downmix ini jauh lebih rendah daripada di sumber 5.1 (yang kemungkinan oleh desain mempertimbangkan niat Collier untuk membuat campuran "nightmode") dan karena sepenuhnya kehilangan trek LFE, audio output keseluruhan tidak terdengar penuh atau dekat dengan sumber seperti rumus Dave_750 dengan volume yang ditingkatkan .
Namun, jika karena alasan tertentu Anda ingin menghindari meningkatkan volume keseluruhan aliran, maka Dialog Nightmode kemungkinan akan menjadi pilihan terbaik Anda - meskipun sekali lagi, saya sangat merekomendasikan untuk menyandikan aliran audio Anda ke keduanya dan membandingkan bentuk gelombang keduanya dengan hati-hati. .
Untuk downmix dengan rumus Nightmode Dialogue di FFmpeg:
Jawaban Tarc
Jawaban ini hanya menempatkan rumus downmix Nightmode Dialog dari jawaban Shane Harrelson menjadi perintah untuk mengubah aliran audio dalam wadah MKV. Sementara perintah yang diberikan dalam jawaban ini akan bekerja dengan baik pada aliran audio seperti itu, mengadaptasinya untuk trek audio mandiri akan memberikan kesalahan:
Ini karena codec audio tidak dapat disalin ketika downmixing - seperti semua perubahan lain yang dilakukan FFmpeg ke aliran output, downmix mensyaratkan trek dikodekan ulang agar perubahan diterapkan.
Perintah ini juga termasuk
-ac 2
saklar redundan yang diabaikan oleh FFmpeg.Perintah uji
Untuk menunjukkan keandalan pengujian yang saya lakukan untuk jawaban ini, di bawah ini adalah semua perintah yang saya gunakan untuk menguji setiap rumus downmix.
Perintah tes yang digunakan untuk
-ac 2
opsi:Perintah tes digunakan untuk jawaban Gregory:
Perintah tes yang digunakan untuk jawaban Dave_750:
Perintah uji yang digunakan untuk jawaban Shane Harrelson:
sumber
-ac 2
memberi saya hasil yang lebih rendah untuk memulai, yang mendorong posting asli. Saya akan mencoba ini lagi dan jika mungkin, bagikan kutipan 5.1 yang tidak memberikan hasil yang memuaskan dengan built-in down-mix. Juga sangat bagus untuk mengetahui bahwa Anda dapat melakukan down-mix tanpa transcoding!ac -2
pilihan memberi saya hasil yang lebih rendah yang sebagian besar dari semua formula downmix juga, saya pikir ini hanya gagal formula ATSC standar ini.ffmpeg -i 5.1.mp4 -ac 2 2.mp4
berfungsi, tetapiffplay -i 5.1.mp4 -ac 2
tidak.Coba downmix ini:
seperti yang disarankan oleh Robert Collier di forum Doom9.
sumber
Jadi, dengan menggabungkan @Shane Harrelson dengan jawaban @Jordan Harris untuk pertanyaan lain - dengan mode malas dihidupkan - di sini apa yang diperlukan untuk mengubah
input_51.mkv
(5.1) menjadioutput_stereo.mkv
(stereo):The
-c:v copy
Bagian berarti bahwa aliran video tidak disentuh (saya kira bahwa v ideo c odec pengaturan sedang polisi ied). Tanpa itu, akan membutuhkan waktu lebih lama. Hanya mengulangi dari jawaban di atas untuk kelengkapan,-ac 2
berarti dua saluran audio dan-af
menentukan filter audio.Setelah melihat ke dalam perintah sedikit, saya menemukan bahwa itu mengatur bagaimana dua saluran stereo dikomposisikan; yang
FL
(kiri depan saluran) diambil dari aslinyaFC
(depan tengah) ditambah0.30*FL
(30% dari kiri depan) ditambah0.30*BL
(30% dari bagian belakang kiri) dan sebagainya.sumber
Ini adalah pertanyaan lama sekarang, tetapi mengarahkan saya ke arah yang benar dan ingin membagikan hasil saya:
Menempatkan setengah dari FC dan LFE ke kiri dan kanan memberikan total 1 untuk volume efektif mereka dari kedua speaker. Menggunakan .707 * Depan / Belakang Kiri / Kanan membawa saluran-saluran tersebut ke level yang baik sehingga tidak mengalahkan pusat.
sumber
Jika opsi -ac 2 memberi Anda downmix seimbang di mana baik musik maupun ucapannya tidak terdengar lebih dari komponen lainnya, Anda hanya perlu meningkatkan volume dengan
Saya menggunakan 512 dalam contoh, yang meningkatkan suara membuatnya dua kali lebih keras. Aturannya adalah 256 sama dengan 100%
Jangan terlalu tinggi dengan nilainya, dan pastikan untuk memeriksa hasilnya di bagian-bagian film dengan ledakan atau suara keras. Apakah sangat mudah untuk memperkenalkan distorsi dengan menggunakan nilai yang terlalu tinggi.
sumber
-ac 2
Volume saluran di downmix tidak berubah dengan codec floating point -> pcm_f32le, aac
Volume dalam downmix (5.1 ke 2.0 tanpa LFE) berkurang sebesar 1 / 2.5 = -7.96 dB dengan codec integer -> pcm_s16le, libfdk_aac
Film memiliki suara yang diarahkan ke satu arah, dan tidak ada tekanan suara maksimal di semua saluran. Jadi mengurangi volume downmix salah, sedikit tingkat kompresi adalah cara yang benar. Itulah yang dilakukan Dolby.
sumber
Setelah membaca seluruh halaman ini dan beberapa percobaan, saya membuat skrip yang disebut "down_mix":
Tweak variabel di atas sesuai keinginan Anda. Saya tidak punya masalah dengan volume rendah jadi tinggalkan begitu saja, tetapi mudah ditambahkan.
sumber
Filter ffmpeg "-ac 2" berfungsi dengan baik selama target Anda dikodekan pcm_s16le. Saat menyandikan ke pcm_f32le dalam format wav, volume meningkat sebesar 9dB dan lebih banyak lagi. Karenanya: Jangan gunakan filter "-ac 2" dalam kasus seperti itu.
sumber