Mengekstrak wav dari mp4 dengan tetap menjaga kualitas setinggi mungkin

39

Saya membaca dokumentasi dan saya dapat mengekstrak wavfile dari mp4file dengan perintah:

ffmpeg -i my_video.mp4 output_audio.wav

Namun, bagaimana saya bisa mengontrol kualitas wavfile? (mis. katakan saya ingin mempertahankan kualitas audio asli sebanyak yang saya bisa)

Amelio Vazquez-Reina
sumber

Jawaban:

20

wavfile biasanya berisi audio yang tidak dikompresi, dan itu adalah default ketika menghasilkan wavfile menggunakan ffmpeg. Jadi perintah Anda sudah akan mempertahankan kualitas maksimum, karena tidak ada kompresi lossy (atau kompresi apa pun) untuk mengurangi kualitas.

Dengan asumsi bahwa audio asli dikompresi, Anda dapat menjaga kualitas yang sama tanpa ukuran file besar yang diperlukan untuk audio yang tidak terkompresi dengan hanya menyalin audio asli (tanpa video) ke mp4file baru :

ffmpeg -i my_video.mp4 -c copy -map 0:a output_audio.mp4

Anda juga dapat menyandikan ulang atau mengonversinya ke codec audio yang berbeda, tetapi jika codec itu menggunakan kompresi lossy maka kualitasnya akan hilang.

mark4o
sumber
Terima kasih. Bagaimana dengan laju sampling dan # byte per detik? Bagaimana ffmpeg memilih ini secara otomatis?
Amelio Vazquez-Reina
Kecepatan sampel akan sama dengan input. Karena tidak dikompresi, bitrate untuk wavfile hanya sample rate × ukuran sampel × jumlah saluran . Jika Anda ingin mengurangi kualitas, Anda dapat meminta ffmpeguntuk membuat sampel ulang ke tingkat yang lebih rendah, ubah ke PCM 8-bit, atau downmix ke mono, tetapi tidak melakukannya secara default.
mark4o
1
BTW Anda juga bisa meminta sampel ulang pada tingkat yang lebih tinggi, tetapi itu hanya akan meningkatkan ukuran file dan bukan kualitasnya, jadi tidak ada banyak gunanya kecuali Anda membutuhkan tingkat sampel tertentu.
mark4o
1
Pada sistem saya dengan Ubuntu 14.04 saya harus menggunakan -acodec copysebagai gantinya-c copy -map 0:a
Daniel Alder
Ini tidak diekspor sebagai file wave, dan tidak menjawab pertanyaan.
Andrew
22

Mengekstrak Audio Lossless / Lossy dari Video ( flv / mp4 to wav / flac / mp3) Menggunakan ffmpegversi 2.3.1 di Ubuntu 14.04

Kunjungi: http://howto-pages.org/ffmpeg/

Pertama-tama temukan data dasar dari sumbernya. Buka video di VLC Player. Pergi ke

> Tools > Codec Information 
> Stream 0 (Video/ Codec/ Resolution/ Frame rate) 
> Stream 1 (Audio/ Codec/ Channel/ Sample rate)

Pertimbangkan file input ( -i), seperti, input.mp4atau file lainnya- flv, avi, ...). Untuk menghapus video ( -vn) dan mengeluarkan audio yang tidak terkompresi ( output.wav) pada laju sampel 44100 Hz ( -ar 44100) dalam kode pulsa yang dimodulasi dengan -acodec pcm_s16lesampel yang ditandatangani, 16 bit, endian kecil ( ) dan 2 saluran (stereo) ( -ac 2) gunakan perintah berikut.

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav

Lainnya -acodecopsi mp3 flac m4a.

-acode flacmengkonversi ke file 24 bit. Untuk sampling 16 bit seharusnya

ffmpeg -i input.mp4 -acodec flac -bits_per_raw_sample 16 -ar 44100 output.flac

file wav dan flac lebih besar dari file mp4

ac3konversi berfungsi dengan -acodec 3F2R/LFE -ac 6tetapi membuat 4 trek tiruan, seperti yang dicek di Audacity.

Untuk konversi mp3, cukup gunakan

ffmpeg -i input.mp4 -vn -acodec mp3 -ab 320k -ar 44100 -ac 2 output.mp3

Orang bisa mendapatkan lebih banyak opsi untuk input dan output dengan mencoba dari daftar yang diperoleh dari baris perintah di terminal

$ ffmpeg -help
dr.murli
sumber
1
Ini tidak menjawab pertanyaan. OP sudah tahu cara mengekstrak audio sebagai file WAV. Mereka bertanya bagaimana mengontrol kualitas — yang tentu saja tidak benar-benar mungkin, dan karenanya seharusnya jawabannya (seperti mark4o). MP3 dan FLAC juga berada di luar jangkauan di sini.
slhck
Saya datang ke tautan ini untuk solusi dan ketika saya sedang mengerjakan, saya mendapat lebih banyak seperti yang saya sebutkan. Masalah yang saya mengerti dan saya juga sedang kerjakan, adalah, "bagaimana saya bisa mengontrol kualitas file wav? (Mis. Katakan saya ingin mempertahankan kualitas audio asli sebanyak yang saya bisa)". Saya bukan seorang teknisi, tetapi seorang penggemar dan baru untuk Ubuntu dan ffmpeg. $ ffmpeg -i input.mp4 juga memberikan semua kualitas awal dan opsi dapat ditambahkan sesuai untuk mendapatkan hasil maksimal.
dr.murli
Unknown encoder 'pcm_s161e'mohon saran tentang cara mengatasi ini.
kRazzy R