Bergabunglah dengan Audio dan Gambar -> Keluaran sebagai Video menggunakan FFmpeg

8

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?

pengguna41559
sumber
Os mana yang Anda gunakan
subanki

Jawaban:

6

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

subanki
sumber
Hai Subanki - terima kasih atas komentar Anda !! Saya tidak mengerti ini .. Saya perlu meng-output file video dari audio dan gambar. Bagaimana ini bisa terjadi?
user41559
@nayrsllew Saya baru tahu kode itu tidak berfungsi, maaf .. Yah, yang mendasar adalah mengubahnya menjadi video menggunakan ffmpeg -f image2 -i image% d.jpg video.mpg kemudian gabung video dan audio
subanki
memperbarui jawaban saya, itu sulit tetapi pencarian Google 1 jam saya menemukannya, saya senang :)
subanki
Jawabannya benar, mengapa down -vote :(
subanki
Hai, jangan, bisa bantu saya di sini. Video yang dihasilkan terlalu besar. Saya membutuhkan video dengan ukuran yang sama dengan file mp3. File gambar saya sangat kecil. Saya juga perlu mengunggah Video ini ke Youtube.
Parminder
7

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 -shortestopsi, 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.

Evilsoup
sumber
5

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
-y

menimpa file output tanpa diminta

-lalu 1

Opsi '-loop_input' tidak digunakan lagi -loop 1. Lihat dokumentasi ffmpeg .

-saya

masukan file

-r

Frames Per Second
Juga bisa dinyatakan sebagai: -r 30000/1001 memberikan fps 29,97nnn

-b: v

bit rate video; semakin tinggi angkanya, semakin baik kualitas dan semakin besar ukuran file.

-frame

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)

-acodec

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.

-ab

laju bit audio

result.mp4

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.

Jon Hall
sumber
1

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* &
pengguna113368
sumber
0

Unduh VirtualDub , lalu lakukan ini:

  1. Buka gambar seperti Anda akan membuka file video normal.

  2. Hitung durasi audio dalam detik dan bulatkan ke seluruh detik terdekat (misalnya 78,34 detik menjadi 79 detik). Nilai ini disebut x mulai sekarang.

  3. 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.

  4. Pilih "video> kompresi" dan pilih rasa favorit Anda. Bisa jadi Anda perlu menyesuaikan ukuran gambar dengan filter ukuran ulang.

  5. Buka "audio> audio dari file lain" dan pilih audio Anda di sana. Jika perlu pilih kompresi untuk audio.

  6. Simpan file.

Sumber: stephanV

Beruang yang pemarah
sumber
Terima kasih StephanV .. Saya perlu menggunakan FFMpeg tapi ini saran yang bagus .. terima kasih
user41559