buat video dari gambar jpg menggunakan ffmpeg

4

Saya ingin membuat video timelapse singkat menggunakan ffmpeg di bawah ubuntu 12,04 LTS. Saya memiliki folder yang berisi semua gambar dengan nama DSC_0000.jpg DSC_0001.jpg dan seterusnya. Saya menemukan pertanyaan ini ffmpeg: membuat video dari gambar dan saya mencoba menjalankan perintah yang sama seperti yang disebutkan di sana:

ffmpeg -i DSC_%d.jpg -vcodec mpeg4 timelapse.avi

dan gagal dengan

DSC_% d.jpg: Tidak ada file atau direktori seperti itu

Saya juga sudah mencoba

ffmpeg -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi

dan gagal dengan kesalahan yang sama

Dan juga untuk beberapa alasan ffmpeg saya tidak mengerti opsi -start_number , jika saya jalankan

ffmpeg -start_number 0 -i DSC_%d.jpg -vcodec mpeg4 timelapse.avi

Saya mendapatkan kesalahan ini:

Opsi tidak dikenal 'start_number'

Gagal menetapkan nilai '0' untuk opsi 'start_number'

Saya sangat menghargai bantuan apa pun

UPD1: Saya mencoba perintah kedua lagi dan sekarang untuk beberapa alasan itu berhasil. Tetapi file video outputnya sedikit aneh: Ini dimulai secara normal, tetapi kemudian kualitasnya semakin buruk dengan setiap frame. Dan menjadi mengerikan di akhir video. Dan sebagai hasilnya, file video sangat kecil (hanya 1,2 Mb, sedangkan masing-masing dari 46 frame adalah 900 kb) Tapi opsi -start_number masih tidak berfungsi. Ini adalah hasil lengkapnya:

$ ffmpeg -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 26 2014 09:49:36 with gcc 4.6.3
  configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, image2, from 'DSC_%04d.jpg':
  Duration: 00:00:01.84, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p, 2304x1536 [SAR 300:300 DAR 3:2], 25 fps, 25 tbr, 25 tbn, 25 tbc
File 'timelapse.avi' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'yuvj422p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x7134e0] w:2304 h:1536 pixfmt:yuvj422p tb:1/1000000 sar:300/300 sws_param:
[buffersink @ 0x70bbe0] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out'
[scale @ 0x6f7a20] w:2304 h:1536 fmt:yuvj422p -> w:2304 h:1536 fmt:yuv420p flags:0x4
Output #0, avi, to 'timelapse.avi':
  Metadata:
    ISFT            : Lavf53.32.100
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 2304x1536 [SAR 1:1 DAR 3:2], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> mpeg4)
Press [q] to stop, [?] for help
frame=   46 fps= 17 q=31.0 Lsize=    1143kB time=00:00:01.84 bitrate=5090.2kbits/s    
video:1137kB audio:0kB global headers:0kB muxing overhead 0.591912%


roman@Z500i5:~/Camera/Thunder/video$ ffmpeg -start_number 0 -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi
ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 26 2014 09:49:36 with gcc 4.6.3
  configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
Unrecognized option 'start_number'
Failed to set value '0' for option 'start_number'

Ffmpeg saya diinstal dari ppa ini: https://launchpad.net/~jon-severinsson/+archive/ffmpeg

Output dari ffmpeg dari repo ubuntu standar hanya dua baris terakhir:

Unrecognized option 'start_number'
Failed to set value '0' for option 'start_number'

UPD2: Lihat jawabannya di bawah

disket
sumber
1
Harap sertakan ffmpegoutput konsol lengkap . Saya menduga Anda menggunakan " ffmpeg" palsu dari garpu yang mungkin tidak mendukung -start_numberopsi. Output konsol akan mengkonfirmasi ini.
llogan
3
Untuk beberapa alasan yang hanya diketahui oleh pengembang, pengaturan kualitas default untuk ffmpeg diatur ke "sampah". Jadi, kecuali jika Anda menentukan kualitas atau bitrate yang Anda inginkan, ia mengkodekannya seperti Anda ingin mengirimkannya ke seseorang yang menjelajahi web pada modem 14kb / s pada tahun 1995. Coba gunakan pengaturan Constant Rate Factor: di -crf nmana n adalah angka dari 1 (tertinggi kualitas / kompresi paling sedikit) ke 35 (ish) (kualitas sampah, kompatibel dengan netscape navigator 1.0). -Crf 20 akan memberi Anda sekitar encoding kualitas DVD. -mulai angka mungkin berlebihan jika foto Anda mulai dari 0.
stib
Terima kasih telah menutup loop pada pertanyaan Anda. Namun, itu macet di antrian pertanyaan yang tidak dijawab. Format T&J didasarkan pada pertanyaan yang hanya pertanyaan, dan solusi diposting sebagai jawaban. Anda memposting solusi sebagai bagian dari pertanyaan Anda. Bisakah Anda memposting solusi Anda sebagai jawaban? Terima kasih.
fixer1234

Jawaban:

0

Akhirnya saya menemukan solusi, tetapi tanpa ffmpeg. Perintah ini melakukan apa yang saya inginkan:

mencoder "mf://*.jpg" -mf fps=20:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -oac copy -o timelapse.avi

Tampaknya sedikit rumit, tetapi itu berhasil :)

disket
sumber