我有一个文件夹,其中包含以下命名方案的 PNG 图像:
IMG_0423.png
IMG_0424.png
...
IMG_0509.png
我想用这些图像制作一部 MP4 电影,但是我收到一条错误消息,说ffmpeg
无法找到这些图像:
$ ffmpeg -i IMG_%04d.png -vf "setpts=6*PTS" ../foo.mp4
ffmpeg version 0.7.13, Copyright (c) 2000-2011 the FFmpeg developers
built on Dec 22 2012 12:45:08 with clang 4.1 ((tags/Apple/clang-421.11.65))
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libvpx --enable-libspeex --disable-libopencore-amrnb --disable-libopencore-amrwb --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.123. 0 / 52.123. 0
libavformat 52.111. 0 / 52.111. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
libpostproc 51. 2. 0 / 51. 2. 0
./IMG_%04d.png: No such file or directory
关于使用此命名方案,我是否遗漏了什么ffmpeg
?感谢您的建议。
编辑
我正在添加运行修改后的命令的输出,该命令仅产生第一帧:
Papillion:png alexpreynolds$ ../ffmpeg -start_number 423 -i "IMG_%04d.png" ../foo.mp4
ffmpeg version N-48159-g1501475-tessus Copyright (c) 2000-2012 the FFmpeg developers
built on Dec 21 2012 22:22:28 with llvm-gcc 4.2.1 (LLVM build 2336.1.00)
configuration: --prefix=/Users/tessus/data/ext/ffmpeg/sw --as=yasm --extra-version=tessus --disable-shared --enable-static --disable-ffplay --disable-ffserver --enable-gpl --enable-pthreads --enable-postproc --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-fontconfig --enable-libfreetype --enable-libass --enable-filters --enable-runtime-cpudetect
libavutil 52. 12.100 / 52. 12.100
libavcodec 54. 81.100 / 54. 81.100
libavformat 54. 49.102 / 54. 49.102
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 29.100 / 3. 29.100
libswscale 2. 1.103 / 2. 1.103
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, image2, from 'IMG_%04d.png':
Duration: 00:00:00.16, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, rgba, 640x480 [SAR 2835:2835 DAR 4:3], 25 fps, 25 tbr, 25 tbn, 25 tbc
File '../foo.mp4' already exists. Overwrite ? [y/N] y
using SAR=1/1
[libx264 @ 0x10202da00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x10202da00] profile High, level 3.0
[libx264 @ 0x10202da00] 264 - core 128 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '../foo.mp4':
Metadata:
encoder : Lavf54.49.102
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame= 4 fps=0.0 q=-2.0 Lsize= 54kB time=00:00:00.08 bitrate=5520.7kbits/s
video:53kB audio:0kB subtitle:0 global headers:0kB muxing overhead 1.554395%
[libx264 @ 0x10202da00] frame I:1 Avg QP:26.72 size: 53541
[libx264 @ 0x10202da00] frame P:1 Avg QP:27.18 size: 27
[libx264 @ 0x10202da00] frame B:2 Avg QP:26.83 size: 40
[libx264 @ 0x10202da00] consecutive B-frames: 25.0% 0.0% 75.0% 0.0%
[libx264 @ 0x10202da00] mb I I16..4: 3.3% 49.4% 47.2%
[libx264 @ 0x10202da00] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.2% 0.0% 0.0% 0.0% 0.0% skip:99.8%
[libx264 @ 0x10202da00] mb B I16..4: 0.1% 0.0% 0.0% B16..8: 1.0% 0.0% 0.0% direct: 0.0% skip:98.9% L0: 5.2% L1:94.8% BI: 0.0%
[libx264 @ 0x10202da00] 8x8 transform intra:49.3% inter:100.0%
[libx264 @ 0x10202da00] coded y,uvDC,uvAC intra: 90.0% 91.1% 75.6% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x10202da00] i16 v,h,dc,p: 14% 21% 12% 52%
[libx264 @ 0x10202da00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 20% 15% 6% 8% 7% 9% 7% 12%
[libx264 @ 0x10202da00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 22% 13% 7% 8% 9% 8% 6% 9%
[libx264 @ 0x10202da00] i8c dc,h,v,p: 53% 23% 15% 10%
[libx264 @ 0x10202da00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x10202da00] kb/s:2682.40
答案1
我假设IMG_0423.png
这是您的第一张图片。如果您的图片不是以“1”开头,那么您有几种选择(忽略重命名),就像IMG_0001.png
您的情况一样。
使用-start_number
您可以使用-start_number
输入选项来声明哪个文件应该开始该序列:
ffmpeg -start_number 423 -i IMG_%04d.png … output
全局模式
另一个选择是使用 glob 模式:
ffmpeg -pattern_type glob -i "IMG_*.png" … output
用一个cat
您可以ffmpeg
通过传输图像cat
。
cat *.png | ffmpeg -f image2pipe -c:v png -i - … output
请注意,你可能必须使用较新的版本ffmpeg
才能使所有这些示例正常运行。请参阅FFmpeg 下载页面包含 Linux、OS X 和 Windows 版本的链接。
答案2
在 Windows 上,这是我唯一能用到的方法来处理一堆不按顺序命名的 jpeg(例如 DMC003.JPG、DMC006.JPG、DMC009.JPG)
- 在 Powershell 中重命名为顺序文件:
dir *.jpg | %{$x=0} {Rename-Item $_ -NewName "Frame$($x.tostring('000000')).jpg"; $x++ }
然后在 Anaconda 提示符下:
ffmpeg -framerate 15 -i Frame%06d.jpg output.mp4
这是使用 conda 安装的 ffmpeg:
conda create -n ffmpeg -c conda-forge ffmpeg
conda activate ffmpeg