Mendapatkan video terkecil dengan kualitas yang sama, bagaimana dengan FFMPEG?

0

Saya tahu ini pertanyaan "lumpuh", tetapi: katakanlah, saya punya file wmv, avi, dll. BIG. Saya ingin mengonversinya menjadi .MP4, dengan ukuran file sekecil mungkin, dan tentu saja dengan kualitas yang sama dengan audio / video. Bagaimana bisa? Codec apa yang harus saya gunakan? Saya menggunakan FFmpeg

John Smith
sumber
1
Kamu ... tidak bisa. Mengecilkan file akan mengurangi kualitas. Ini adalah bagaimana file video dibuat lebih kecil. H.264 adalah pengkodean yang memiliki kehilangan kualitas yang paling tidak terlihat.
Darth Android

Jawaban:

5

Anda dapat mencoba untuk menyandikan dengan libx264 crf 18. Hal ini terkenal karena menghasilkan hasil (secara visual) lossless.

ffmpeg -i input.avi -vcodec libx264 -x264-params crf=18 -preset veryslow -acodec copy out.mp4

Perhatikan bahwa saya menggunakan preset sangat lambat yang akan memberi Anda file sekecil mungkin. Juga, saya memutuskan untuk menyalin trek audio daripada memasukkannya kembali, terutama karena saya menganggap itu sudah AAC / MP3 stereo dalam sampel Anda.

Jika output terlalu besar untuk Anda, coba dengan nilai crf yang lebih tinggi (hingga 23) tetapi kualitasnya akan menurun.

Ely
sumber
Mengapa menyarankan menggunakan -x264-params crf=18 bukannya sederhana -crf 18?
llogan
Kebiasaan susah hilang.
Ely
4

Mendapatkan video terkecil dengan jumlah kualitas paling sedikit yang hilang lebih merupakan tantangan daripada hal lainnya. Ada panduan yang tersebar di antara Web yang akan merekomendasikan Anda pengaturan untuk digunakan di FFmpeg untuk hal-hal seperti tangkapan game, stream, robekan DVD, dll.

jika kamu mau tanpa kerugian lossless, coba ini:

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

Bagian yang penting adalah -crf 0 bagian yang membuatnya menjadi lossless. Namun, file output umumnya akan sangat besar. Anda bisa mengubahnya menjadi -crf 18 yang akan memberi Anda sesuatu yang dapat diterima dalam kualitas dan bebas dari sebagian besar artefak.

oldmud0
sumber
FYI - menurut wiki FFmpeg - using -qp 0 direkomendasikan untuk libx264 lossless berakhir -crf 0 karena beberapa perbedaan antara 8bit dan 10bit x264. Mungkin juga bukan masalah besar, tapi saya sudah gagal menggunakannya -qp 0 dengan hasil yang bagus. Itu semua mengatakan, itu tidak benar-benar "lossless" ... Ada perbedaan kecil antara output libx264 dan aslinya yang dihasilkan. Tidak mungkin untuk melihat dengan mata telanjang, tetapi mereka perbedaan yang terukur ... - Untuk referensi wiki di atas, lihat: trac.ffmpeg.org/wiki/Encode/H.264#LosslessH.264
occvtech
Saya tidak tahu dari mana Anda mendapatkan bagian terakhir itu, tetapi x264 lossless secara matematis adalah lossless. Coba jalankan md5sum pada input mentah dan stream H.264 lossless yang didekodekan, mereka akan identik.
Ely