menggunakan ffmpeg untuk mengubah mp4 ke file avi berkualitas tinggi yang sama?

28

Saya ingin menggunakan ffmpeg untuk mengubah file video mp4 menjadi avi tetapi dengan kualitas yang sama, bahkan jika itu membutuhkan lebih banyak ruang. Jika saya hanya melakukannya:

ffmpeg -i file.mp4 file.mp4.avi

File avi yang dihasilkan berkualitas sangat rendah dan pixelated. Bagaimana saya bisa melakukan transformasi ini sambil menjaga kualitas video dan audio?

719016
sumber
3
Anda dapat menggunakan -sameqswitch, yang akan menempatkan codec video yang sama (dengan asumsi H264) dalam wadah AVI. Jika pemutar Anda tidak mendukung H264 dalam AVI, maka Anda perlu transcode format video sebaik mungkin (H264) ke beberapa format biasa-biasa saja, yang tidak baik. Kemudian Anda menetapkan bitrate video yang lebih tinggi XVID (katakanlah 2000 Kb / s). Audio tidak masalah sebanyak IMHO, tetapi lebih baik untuk mengkonversi ke MP3 kemudian AC3
zetah

Jawaban:

16

Anda selalu kehilangan sedikit kualitas setiap kali Anda transcode dari satu codec ke yang lain, video atau audio, tetapi mungkin Anda bisa menghindarinya jika Anda hanya ingin mengubah dari jenis wadah MP4 ke wadah AVI. codec:copymungkin membantu jika Anda tidak memiliki alasan untuk melakukan transkode (dan itu harus lebih cepat).

Jika Anda harus transcode karena Anda perlu menggunakan codec video tertentu, saya harap Anda dapat menggunakan saran zetah di atas dalam komentarnya dan menggunakan -sameqsaklar. Atau, Anda mungkin ingin menggunakan qscaleopsi untuk mengatur kualitas secara manual. Semakin rendah angkanya semakin baik kualitasnya, tetapi semakin banyak ruang yang dibutuhkan file Anda.

Terakhir kali saya mentranskode video yang saya gunakan qscale=8.0, tetapi saya sarankan agar Anda bereksperimen untuk menemukan yang optimal agar sesuai dengan kualitas input Anda.

Marty Jay dengan senang hati menyebutkan bahwa sameq berarti quantizer yang sama dengan input, yang mungkin tidak menghasilkan kualitas yang sama. Artikel yang dia kutip menyebutkan menggunakan konversi multi-pass, yang merupakan cara yang baik untuk mencapai kompresi yang lebih baik tanpa mengorbankan kualitas.

John S Gruber
sumber
Terima kasih atas tipsnya, saya akan mencoba -sameqmelihat bagaimana kelanjutannya.
719016
8
-sameq TIDAK berarti kualitas yang sama; ffmpeg.org/trac/ffmpeg/wiki/…
3
Tampaknya direkomendasikan untuk menggunakan -qscale 0opsi
user989762
Cukup tua, tapi saya mendapat peringatan ini mencoba melakukan ini hari ini:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg
10

Solusi saya:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

Nikmati!!

kuba
sumber
2
Ketahuilah bahwa menanamkan aliran AVC dalam wadah AVI memerlukan peretasan yang didukung oleh banyak pemutar video berbasis komunitas (mis. VLC, MPlayer, apa pun FFmpeg / Libav atau GStreamer, Media Player Classic) tetapi tidak oleh banyak pemain komersial (mis. Windows Media Player) dan QuickTime / iTunes tidak mendukungnya).
David Foerster
4

Ini adalah 2-pass (Advanced Simple Profile) saya yang saya gunakan sekarang dan kemudian.

lulus 1:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null

lulus 2:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi
duffydack
sumber
Itu hebat, menghasilkan saya avi yang sangat kecil dengan kualitas yang sangat bagus!
jpo38