web-dev-qa-db-ja.com

ffmpegを使用してjpg画像からビデオを作成する

Ubuntu 12.04LTSでffmpegを使用して短いタイムラプスビデオを作成したいと思います。 DSC_0000.jpgDSC_0001.jpgなどの名前のすべての画像を含むフォルダーがあります。私はこの質問を見つけました ffmpeg:画像からビデオを作成します そして私はそこで述べられているのと同じコマンドを実行しようとします:

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

そしてそれは失敗します

DSC_%d.jpg:そのようなファイルやディレクトリはありません

私も試しました

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

同じエラーで失敗します

また、何らかの理由で、実行すると、ffmpegがオプション-start_numberを理解しません

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

このエラーが発生します:

認識されないオプション 'start_number'

オプション「start_number」の値「0」の設定に失敗しました

助けていただければ幸いです

UPD1:2番目のコマンドを再試行しましたが、何らかの理由で機能します。しかし、出力ビデオファイルは少し奇妙です。正常に起動しますが、フレームごとに品質が低下します。そして、ビデオの終わりにひどくなります。その結果、ビデオファイルは非常に小さくなります(わずか1.2 Mb、46フレームのそれぞれは900 kbです)が、オプション-start_numberはまだそうではありません作業。完全な出力は次のとおりです。

$ 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はこのppaからインストールされます: https://launchpad.net/~jon-severinsson/+archive/ffmpeg

標準のubuntureposからのffmpegからの出力は、最後の2行だけでした。

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

UPD2:以下の回答を参照してください

4
floppydisk

ついに私は解決策を見つけましたが、ffmpegはありませんでした。このコマンドは私が望んでいたことを実行します:

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

少し複雑すぎるようですが、それは仕事をします:)

0
floppydisk