Saya memiliki 1 gambar (jpg) dan 1 file audio (MP3) dan saya ingin menampilkan ini sebagai file video (misalnya AVI).
Adakah yang tahu cara menggunakan FFMPEG untuk bergabung dengan keduanya? Saya ingin menunjukkan gambar selama audio.
Ada ide?
Saya memiliki 1 gambar (jpg) dan 1 file audio (MP3) dan saya ingin menampilkan ini sebagai file video (misalnya AVI).
Adakah yang tahu cara menggunakan FFMPEG untuk bergabung dengan keduanya? Saya ingin menunjukkan gambar selama audio.
Ada ide?
Jawaban:
Jika Anda berada di Windows, Anda dapat melakukannya di Windows Movie maker juga ... jika Anda memerlukan instruksi, silakan tinggalkan komentar
Untuk FFmpeg gunakan ini
ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30
-b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
vframes 14490 adalah jumlah bingkai yang harus dilingkarkan agar memiliki gambar berkelanjutan untuk seluruh file audio.mp3
Mis: Selama 8 menit dan 3 detik ((8m x 60d + 3d) x 30fps = 14490 vf)
Sumber daya dari sini
Ada cara yang jauh lebih sederhana daripada yang disarankan di sini, yang tidak perlu menghitung jumlah frame atau memasukkan panjang file individual (terutama lebih baik untuk pemrosesan batch). Dengan ffmpeg versi terbaru, Anda dapat menggunakan -shortest
opsi, yang berhenti menyandikan saat aliran terpendek berakhir - dalam hal ini, input.mp3 (karena gambar akan berulang selamanya, memiliki panjang yang tak terbatas):
ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4
Ini menggunakan 2 frame per detik untuk gambar / video, yang seharusnya baik-baik saja, tetapi Anda dapat mengaturnya ke standar yang lebih 25 jika Anda mau.
Subanki hampir benar. Baris perintah yang berfungsi adalah sebagai berikut;
ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
menimpa file output tanpa diminta
Opsi '-loop_input' tidak digunakan lagi -loop 1. Lihat dokumentasi ffmpeg .
masukan file
Frames Per Second
Juga bisa dinyatakan sebagai: -r 30000/1001 memberikan fps 29,97nnn
bit rate video; semakin tinggi angkanya, semakin baik kualitas dan semakin besar ukuran file.
Seperti dijelaskan di atas; luangkan total waktu file audio Anda dalam detik (mis. 00:02:41 (2 menit 41 detik) sama dengan 161 total detik (2 x 60) + 41). Kemudian kalikan total detik dengan Frames Per Second yang Anda tentukan dengan -r (mis. 161 x 30 = 4830).
-frame dapat diganti dengan -t 161 (-t durasi rekaman atau transcode "durasi" detik audio / video)
Gunakan codec audio yang benar untuk jenis file yang Anda buat. Untuk .mp4 formatnya harus AAC. Codec libvo_aacenc adalah codec penyandian yang benar untuk sistem Windows 7 saya.
laju bit audio
Ini adalah nama file keluaran. Ini bisa berupa nama file hukum apa pun untuk sistem Anda. Ekstensi akan membantu ffmpeg menentukan codec video yang tepat jika Anda tidak menentukan satu menggunakan -vcodec.
Skrip bash / cygwin sederhana yang secara OTOMATIS akan menyandikan semua file ekstensi $ AUDIO dalam direktori ke file video 10FPS mp4 dalam direktori dengan folder.jpg gambar yang disematkan,
berguna untuk unggahan youtube;)
AUDIO=m4a;
$'\n'; for a in `ls -1 *.$AUDIO `; do ffmpeg -i $a &2> $a.info ; done;
cat '' > do.sh
IFS=$'\n';
for a in `ls -1 *.$AUDIO`; do D=`grep Duration $a.info | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1 | head -n1 `; S=$(( $( echo $D | cut -d':' -f2 ) * 60 + 1 + ` echo $D | cut -d':' -f3 ` )) ; echo ffmpeg -loop_input -vframes $(( $S * 10 )) -i folder.jpg -i \"$a\" -y -r 10 -b 2500k -ab 384k -vcodec mpeg4 \"$a.mp4\" >> do.sh; done;
split -l5 do.sh
xa* &
Unduh VirtualDub , lalu lakukan ini:
Buka gambar seperti Anda akan membuka file video normal.
Hitung durasi audio dalam detik dan bulatkan ke seluruh detik terdekat (misalnya 78,34 detik menjadi 79 detik). Nilai ini disebut x mulai sekarang.
Buka "video> frame rate" pilih "ubah ke frame rate (fps)" dan masukkan "1 / x" sebagai nilai. Selain itu, jika Anda ingin memiliki frame rate normal dalam file yang dihasilkan seperti 25 fps, pilih "Convert to fps" dan masukkan frame rate yang diinginkan di sana.
Pilih "video> kompresi" dan pilih rasa favorit Anda. Bisa jadi Anda perlu menyesuaikan ukuran gambar dengan filter ukuran ulang.
Buka "audio> audio dari file lain" dan pilih audio Anda di sana. Jika perlu pilih kompresi untuk audio.
Simpan file.
Sumber: stephanV