Saya menggunakan ffmpeg untuk menambahkan JPG ke MP4 untuk membuat MP4.
Karena hanya ada satu gambar untuk membuat video saya bertanya-tanya apakah ada cara untuk mengurangi ukuran video?
Perintah:
$ ffmpeg -loop 1 -i image.jpg -i audio.mp3 -shortest -c:a copy output.mp4
Hasil:
image.jpg
= 26.7K (gambar tidak begitu jelas)audio.mp3
= 64.6M (54 menit)output.mp4
= 80.6M (hasil video tidak begitu jelas, musik masih bagus)
Apakah ini ukuran yang wajar untuk MP4?
Jawaban:
Untuk mengunggah ke YouTube
H.264: file terkecil
Metode ini menggunakan libx264 untuk menyandikan video H.264. Ini lebih lambat daripada metode salin aliran di bawah ini, tetapi berpotensi menghasilkan ukuran file yang lebih kecil.
Stream copy: proses tercepat
Metode ini hanya mengalirkan salinan (tanpa enkode) gambar ke wadah MKV. Ini super cepat, tetapi jika ukuran lebih penting daripada metode di atas dapat menghasilkan file yang lebih kecil.
YouTube menerima apa saja sehingga perintah ini menggunakan beberapa trik untuk membuat penyandian lebih cepat, atau membuat ukuran file kecil, dan menjaga kualitas tinggi karena YouTube akan menyandikan ulang apa pun yang Anda berikan. Pemain Anda mungkin tidak akan menyukainya tetapi YouTube akan melakukannya.
Dalam contoh-contoh ini frame rate yang sangat rendah digunakan yang seharusnya memproses lebih cepat dari standar 25 fps.
Kompatibilitas terluas untuk semua pemain
Ini harus dimainkan pada apa saja kecuali perangkat yang sangat kuno (ubah
-profile:v main
ke-profile:v baseline
jika itu masalahnya).Jika input audio Anda sudah AAC maka ubah
-c:a aac
ke-c:a copy
untuk menghindari pengkodean ulang yang tidak perlu.Waktu penyandian akan lebih lama dan ukuran file akan lebih besar dari perintah YouTube di atas.
Lihat FFmpeg Wiki: H.264 untuk info lebih lanjut.
sumber
Unrecognized option 'preset'. Error splitting the argument list: Option not found
ffmpeg
perintah lengkap dan output konsol lengkap dari perintah, lalu berikan tautan dalam komentar.Dengan hanya informasi yang Anda berikan ini, apa yang dapat saya pikirkan.
Mari kita berkeping-keping:
Apa yang Anda bicarakan di sana itu frame per detik (fps) tidak bitrate. Dan Anda benar dalam konsep itu. Beign hanya satu gambar diam 1 fps tidak akan menjadi masalah.
Dalam hal ini ukuran gambar tidak akan memiliki bobot yang signifikan karena kita hanya berurusan dengan satu gambar diam. Jika itu adalah video berkualitas tinggi maka itu masalah yang berbeda.
Resolusi yang Anda katakan adalah 1280x720.
Saya tidak melihat titik pada
-loop 1
opsi di sini, itu hanya akan memperlambat proses. Apakah Anda menggunakan-shortest
karena file memiliki lebih dari 1 aliran input? Jika tidak maka tidak ada alasan untuk menggunakannya. Karena Anda menggunakan-acodec copy
saya harus berasumsi bahwa Anda tidak ingin menyandikan ulang.Untuk output 720p 1fps tanpa pengkodean ulang dan tidak menyentuh bitrate:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Beign case yang memiliki lebih dari satu input stream dan Anda ingin ffmpeg menyelesaikan pengkodean pada stream terpendek kemudian:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Sekarang jika Anda harus mengubah bitrate (misalkan 1024k sebagai contoh);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Lihat: Batasi bitrate output
Perhatikan bahwa jika Anda masih menginginkan video ukuran lebih kecil pada satu titik Anda harus mengorbankan kualitas untuk mencapai itu. Dan cara lain untuk melakukannya melibatkan pengodean ulang dengan kompresi lossy.
Dari apa yang Anda katakan, informasi yang Anda berikan dan apa yang Anda coba lakukan, saya pikir tampaknya target Anda adalah menanamkan album-art ke mp3. Jika itu tujuan Anda, ini akan lebih sesuai dengan kebutuhan Anda:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
Jika tidak ada yang sesuai dengan permintaan Anda, beri informasi lebih lanjut.
sumber
-framerate
sebagai opsi input dan menghapus output-r
: jika tidak, framerate input default 25 akan digunakan dan kemudianffmpeg
akan menjatuhkan frame untuk mencapai-r 1
. Jika Anda hanya mendeklarasikan frame rate input maka output akan menggunakan frame rate yang sama.