我有 277 个 800x600 png 文件,文件名格式为 island_sizes-CSH(II)-###.png,其中 ### 是一个以 084 开头、以 360 结尾的数字。
我正在做
ffmpeg -i island_sizes-CSH\(II\)-*.png output.mpg -y
但它不起作用:
ffmpeg -f 图像2 -i island_sizes-CSH\(II\)-*.png 视频.mpg -y ffmpeg 版本 1.2.1 版权所有 (c) 2000-2013 FFmpeg 开发人员 于 2013 年 5 月 10 日 15:14:14 使用 gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4) 构建 配置:--prefix=/usr--libdir=/usr/lib64--shlibdir=/usr/lib64--mandir=/usr/share/man--enable-shared--enable-runtime-cpudetect--enable-gpl--enable-version3--enable-postproc--enable-avfilter--enable-pthreads--enable-x11grab--enable-vdpau--disable-avisynth--enable-frei0r--enable-libopencv--enable-libdc1394--enable-libgsm--enable-libmp3lame--enable-libnut--enable-libopencore-amrnb--enable-libopencore-amrwb--enable-libopenjpeg--enable-librtmp--enable-libspeex--enable-libtheora--enable-libvorbis--enable-libvpx--enable-libx264--enable-libxavs --enable-libxvid --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --disable-stripping libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3.42.103 / 3.42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 输入 #0,图像 2,来自“island_sizes-CSH(II)-084.png”: 时长:00:00:00.04,开始:0.000000,比特率:N/A 流 #0:0:视频:png、rgba、800x600 [SAR 3937:3937 DAR 4:3]、25 tbr、25 tbn、25 tbc [png @ 0x1468c20] ff_frame_thread_encoder_init 失败 输出 #0,图像 2,至‘island_sizes-CSH(II)-085.png’: 流 #0:0:视频:png、rgba、800x600 [SAR 1:1 DAR 4:3]、q=2-31、200 kb/s、90k tbn、25 tbc 输出 #1,图像 2,至‘island_sizes-CSH(II)-086.png’: 流 #1:0:视频:png、rgba、800x600 [SAR 1:1 DAR 4:3]、q=2-31、200 kb/s、90k tbn、25 tbc ... 输出 #274,图像 2,至‘island_sizes-CSH(II)-359.png’: 流 #274:0:视频:无、rgba、800x600 [SAR 1:1 DAR 4:3]、q=2-31、200 kb/s、90k tbn、25 tbc 输出 #275,图像 2,至 'island_sizes-CSH(II)-360.png': 流 #275:0:视频:无、rgba、800x600 [SAR 1:1 DAR 4:3]、q=2-31、200 kb/s、90k tbn、25 tbc 输出 #276,mpeg,至‘video.mpg’: 流 #276:0:视频:无,yuv420p,800x600 [SAR 1:1 DAR 4:3],q=2-31,200 kb/s,90k tbn,25 tbc 流映射: 流 #0:0 -> #0:0 (png -> png) 流 #0:0 -> #1:0 (png -> png) ... 流 #0:0 -> #274:0 (png -> png) 流 #0:0 -> #275:0 (png -> png) 流 #0:0 -> #276:0 (png -> mpeg1video) 打开输出流 #218:0 的编码器时出错 - 可能是 bit_rate、rate、width 或 height 等参数不正确
答案1
这是将多幅图像作为输入传递到 的错误语法ffmpeg
。请参阅 FFmpeg Wiki 指南创建视频幻灯片和image2
解复用器选项。
您需要告诉它使用三位数字作为序列号,并从 84 开始,即
ffmpeg -start_number 84 -i island_sizes-CSH\(II\)-%03d.png output.mpg
进一步提示:
MPEG-1 作为视频编解码器并不是最理想的,在文件较大时质量较差。除非您希望兼容旧设备或计算机(或没有任何编解码器的 Windows XP),否则请放弃它并使用 MPEG-4 Part 10 编码器(H.264),例如
libx264
:ffmpeg -i … -c:v libx264 out.mp4
有关 x264 选项的教程(如何更改质量等),请查看x264 编码指南。
PNG 文件使用 RGB 像素格式,这在普通视频编解码器中不受支持。对于 MPEG-1 来说,这无关紧要,但对于 MPEG-4 编解码器来说,这很重要,因为它
ffmpeg
会自动将像素格式转换为非子采样 YUV。在这种情况下,您需要将其转换为色度二次采样格式例如 YUV 4:2:0,否则你的视频可能无法在大多数应用程序中播放:ffmpeg -i … -c:v libx264 -pix_fmt yuv420p out.mp4