Saya menguji sebagian besar jawaban yang diajukan lainnya untuk pertanyaan ini. Kesimpulan data uji di bawah ini. Ini adalah jawaban yang diajukan yang saya uji:
(BR) Ubah bitrate, menggunakan:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) Variasikan Faktor Tingkat Konstan, menggunakan:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) Ubah ukuran layar video (misalnya menjadi setengah ukuran pikselnya), menggunakan:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) Ubah profil H.264 menjadi "dasar", menggunakan:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) Gunakan pemrosesan ffmpeg default, menggunakan:
ffmpeg -i $infile $outfile
DATA
- "size" - persen ukuran piksel dari video yang dikonversi terkait dengan aslinya.
- "bitrate" - bitrate dari video asli dan yang dikonversi.
- "definition" - ukuran piksel video.
- "convert" - waktu untuk mengkonversi video dalam hitungan detik.
Saya menghitung bitrate target untuk (BL) menggunakan metode yang diusulkan.
=== File A - Bagaimana Node Membantu Menggerakkan Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== File B - Menggunakan GraphQL dengan Angular _ By - Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
KESIMPULAN
Metode (SZ) jelas merupakan metode tercepat. Itu 2X hingga 4X lebih cepat. Ini bisa menjadi masalah besar pada video definisi tinggi, karena semua metode lain membutuhkan waktu lebih lama untuk dikonversi daripada panjang video yang sebenarnya! Misalnya, metode (CR) membutuhkan waktu 53 menit untuk mengonversi video 21 menit.
Metode (SZ) jelas merupakan metode terbaik jika definisi video lebih besar dari definisi layar yang akan menampilkannya. Misalnya, jika ponsel Anda hanya dapat menampilkan gambar 1080p, mengirimkannya video 3840x2160 hanya sia-sia. Akan lebih baik setengah ukurannya menjadi 1080p.
Beberapa jawaban yang diajukan sebenarnya MENINGKATKAN ukuran beberapa video. Misalnya, metode (BR) lebih dari dua kali lipat ukuran sampel 1080p. Namun itu membuat ukuran 2160p sepertiga. Untuk sampel definisi tinggi, metode (CR), (BL) dan (DF) semuanya MENINGKATKAN ukuran video.
Jawaban yang benar (atau terbaik)
Itu selalu yang terbaik untuk pertama-tama menurunkan resolusi ke maksimum yang didukung oleh tampilan target Anda.
Jika Anda ingin mengurangi ukuran file lebih lanjut, itu akan tergantung pada pilihan pribadi. Anda dapat mengurangi konten informasi atau meningkatkan kompresi.
Anda dapat menurunkan resolusi lebih banyak jika itu bukan sesuatu yang mengkhawatirkan Anda.
Jika video tidak menyertakan adegan tindakan cepat, Anda mungkin ingin menurunkan kecepatan bingkai.
Jika Anda memiliki prosesor yang kuat dan ruang adalah satu-satunya masalah, Anda dapat meningkatkan tingkat kompresi.
Bit rate adalah kombinasi dari beberapa faktor. Jadi hanya memberitahu ffmpeg untuk menurunkan bit rate mungkin tidak memberi Anda hasil yang Anda inginkan.
Cara lain untuk konten informasi yang lebih rendah adalah dengan menurunkan kedalaman warna. Cara melakukan ini belum dibahas.
ffmpeg
halaman manual menunjukkan-fs
opsi untuk membatasi ukuran output, apakah sesuatu sepertiffmpeg -i in.avi -fs 100M out.avi
bekerja?