使用 ffmpeg 将 png 文件制作成电影

使用 ffmpeg 将 png 文件制作成电影

我有 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
    

相关内容