Mengonversi FLV ke MP4 Menggunakan FFMPEG dan Memelihara Kualitas

26

Saya mencoba menggunakan ffmpeg untuk mengonversi file flv saya ke mp4 untuk memutarnya di perangkat iOS tetapi video yang dikonversi memiliki kualitas yang jauh lebih buruk daripada yang asli.

Inilah perintah yang saya gunakan:

ffmpeg -i input.flv -ar 22050 output.mp4

Saya akan sangat menghargai jika seseorang dapat memberi saya pengaturan terbaik untuk konversi flv ke mp4.


sumber

Jawaban:

42

Tergantung pada codec yang digunakan dalam FLV Anda, Anda mungkin dapat pergi dengan hanya membungkusnya kembali dalam wadah mp4. Anda harus H.264atau MPEG4 simple profilevideo dan AACaudio. Anda dapat mengetahui beberapa info tentang file sumber Andaffmpeg -i input.flv

Saya tidak yakin apakah hanya memiliki H.264 / MPEG4 Simple + AAC cukup baik atau jika ada opsi spesifik untuk codec yang didukung. Cukup mudah untuk diuji:

Coba gunakan

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytsapakah copy timestampsitu akan membantu sinkronisasi audio.

Jika itu tidak berhasil, coba paksakan codec audio dan video. Ini akan menyandikan ulang file:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

Untuk meningkatkan kualitas video, Anda dapat menggunakan nilai CRF yang lebih rendah, misalnya apa saja hingga 18. Untuk mendapatkan file yang lebih kecil, gunakan CRF yang lebih tinggi, tetapi perhatikan bahwa ini akan menurunkan kualitas.

Untuk meningkatkan kualitas audio, gunakan nilai kualitas yang lebih tinggi. Untuk FAAC, 100default.


Berikut adalah beberapa pemikiran tentang perintah ffmpeg yang disarankan dalam pertanyaan.

-armengacu pada laju sampel audio. Saya akan merekomendasikan tidak mengacaukan hal ini sampai Anda memahami hal-hal dengan lebih baik Jika Anda ingin bermain dengan pengkodean audio, sesuaikan bitrate (mis., -b:a 128k) Dan biarkan pembuat enkode memilih apa yang harus dilakukan berdasarkan itu.

Jika Anda akhirnya menuruni jalan ini ...

Kualitas CD adalah pengambilan sampel 44100Hz; Video khas menggunakan 48000Hz.

Anda dapat mencatat bahwa 22050 dalam contoh pertanyaan asli adalah 1/2 tingkat sampel kualitas cd. jika Anda menurunkan konversi materi CD, ini adalah pilihan yang baik. Jika Anda mulai dengan sumber 48KHz (yang mungkin Anda; lagi, ini jauh lebih umum daripada 44100 dalam file video) saya akan menggunakan 24KHz sebagai gantinya. Mungkin tidak terlalu penting, tetapi mungkin terdengar sedikit lebih baik dan menggunakan sedikit CPU untuk melakukan konversi.

Dan Pritts
sumber
membaca ulang jawaban saya ... Selain baris perintah yang saya berikan di atas, Anda hanya dapat menyalin video atau hanya audio, dan menyandikan ulang yang lain. misalnya ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k-copyts output.mp4" ini akan menyalin aliran video dan menyandikan ulang audio ke AAC. Libfaac tidak memiliki kualitas yang hebat tetapi bekerja dengan baik.
Dan Pritts
Mengenai perintah memaksa audio / video codec: Pada September 2019, saya menemukan bahwa ffmpegdukungan untuk dihentikanlibaac . Pertanyaan ini menyarankan menggunakan ffmpegencoder AAC asli via -c:a aac atau Fraunhofer FDK AAC codec via -c:a libfdk_aac (yang membutuhkan kompilasi ffmpegdengan dukungan untuk libfdk_aac).
aresnick