Bagaimana mendapatkan kualitas terbaik saat mengkonversi dari mp4 ke avi dengan ffmpeg?

11

Ketika saya menggunakan ini, kualitasnya tidak terlihat buruk.

ffmpeg -same_quant -i video.mp4 video.avi

Dalam ffmpegdokumentasi tertulis: "Perhatikan bahwa ini BUKAN KUALITAS SAMA. Jangan gunakan opsi ini kecuali Anda tahu Anda membutuhkannya."

Apakah saya mendapatkan -same_quantkualitas terbaik atau apakah ada opsi yang memberikan kualitas yang sama dengan input dan lebih direkomendasikan?

sid_com
sumber
Bergantung pada codec yang digunakan (beberapa codec tidak kompatibel dengan beberapa kontainer), Anda selalu dapat dengan mudah menyalin stream ( -codec copy). Itu adalah cara terbaik untuk menghindari perubahan kualitas, karena Anda tidak memasukkan ulang stream, hanya mengemas ulang mereka dalam wadah yang berbeda.
njsg
Ketika saya mencoba ini saya mendapatkan: Unknown decoder 'copy'.
sid_com
3
Tampaknya -codec copyharus mengejar -i video.mp4 - dapatkah Anda mencoba ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantbekerja di sini juga, tetapi tidak akan melakukan apa-apa, karena ini hanya menyalin aliran)
njsg
Mengenai penempatan opsi baris perintah ffmpeg, lihat Dokumentasi ffmpeg - 2 Keterangan : Berikut ini adalah kutipannya: Sebagai aturan umum, opsi diterapkan ke file yang ditentukan berikutnya . Karena itu, ketertiban itu penting, ...
Peter.O
Terima kasih! Sekarang dengan -codec copytempat yang tepat adalah bekerja.
sid_com

Jawaban:

14

(diadaptasi dari komentar di atas)

Bergantung pada codec yang digunakan (beberapa codec tidak kompatibel dengan beberapa kontainer), Anda selalu dapat dengan mudah menyalin stream ( -codec copy). Itu adalah cara terbaik untuk menghindari perubahan kualitas, karena Anda tidak memasukkan ulang stream, hanya mengemas ulang mereka dalam wadah yang berbeda.

Saat berurusan dengan file audio / video, penting untuk diingat bahwa wadah sebagian besar independen dari codec yang digunakan. Adalah umum untuk melihat orang-orang yang merujuk ke file sebagai "video AVI" atau "video MP4", tetapi itu adalah wadah dan memberi tahu kami sedikit tentang apakah pemain akan dapat memutar stream, selain dari keterbatasan teknis (misalnya, AVI mungkin memiliki masalah dengan h264 dan Ogg Vorbis ), Anda dapat menggunakan codec apa pun.

-same_quanttampaknya menjadi cara untuk memberitahu ffmpeg untuk mencoba mencapai kualitas yang sama, tetapi segera setelah Anda memasukkan kembali video (setidaknya dengan codec lossy), Anda tidak memiliki cara untuk mendapatkan kualitas yang sama. Jika Anda peduli dengan kualitas, aturan praktis yang baik adalah untuk menghindari pengkodean ulang stream jika memungkinkan.

Jadi, untuk menyalin stream dengan ffmpeg, Anda harus:

ffmpeg -i video.mp4 -codec copy video.avi

( Seperti @ Peter.O sebutkan , urutan opsi itu penting, jadi ke situlah -codec copyharus pergi. Anda masih bisa menyimpannya -same_quant, tetapi itu tidak akan berpengaruh apa pun karena Anda tidak memasukkan ulang stream.)

njsg
sumber
Solusi Anda bekerja untuk saya. Saya melihat bahwa avconvsekarang direkomendasikan di tempat ffmpegdan pada kenyataannya adalah apa yang saya gunakan.
Faheem Mitha
3

Di bawah FreeBSD 8. 2, saya mencoba menyalin -codec tapi saya mendapat pesan yang tidak dikenal juga diterjemahkan. Setelah coba-coba saya menemukan yang berfungsi adalah di bawah FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
binyo66
sumber