我正在努力实现稳定的 ffmpeg 输出,该输出可以跨播放器和平台工作,用于从需要以大约 1 fps 滚动的一系列图像生成的视频。
ffmpeg -f image2 -r 1 -i %02d.png video.avi
获取名为“ 01.png, 02.png
”等的文件并以 1 fps 输出。但是结果不会在 VLC 或 Quicktime 上播放——似乎只有 WMP 可以处理它。
ffmpeg -f image2 -r 25 -i %02d.png video.mp4
确实会产生更稳定的输出,但速度只能达到 25 fps - 对我的数据来说太快了。
非常感谢帮助。创建重复的图像来解决这个问题似乎毫无意义。
控制台输出:
ffmpeg version N-53284-gd0a34ae Copyright (c) 2000-2013 the FFmpeg developers
built on May 20 2013 01:07:40 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzli
b --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libblu
ray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libr
tmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwola
me --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 33.100 / 52. 33.100
libavcodec 55. 10.101 / 55. 10.101
libavformat 55. 7.100 / 55. 7.100
libavdevice 55. 1.100 / 55. 1.100
libavfilter 3. 68.101 / 3. 68.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
[image2 @ 00000000025977e0] max_analyze_duration 5000000 reached at 5000000 microseconds
Input #0, image2, from '%02d.png':
Duration: 00:00:40.00, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, pal8, 1300x1100, 1 fps, 1 tbr, 1 tbn, 1 tbc
Output #0, avi, to 'video.avi':
Metadata:
ISFT : Lavf55.7.100
Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1300x1100, q=2-31, 200 kb/s, 1 tbn, 1 tb
c
Stream mapping:
Stream #0:0 -> #0:0 (png -> mpeg4)
Press [q] to stop, [?] for help
frame= 40 fps=6.6 q=31.0 Lsize= 3754kB time=00:00:40.00 bitrate= 768.9kbits/s
video:3748kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.173624%
Run Code Online (Sandbox Code Playgroud)
我不确定为什么播放器不能使用 1 fps,但是您可以使用-framerate
输入和-r
输出来设置不同的帧速率:
ffmpeg -framerate 1 -i %02d.png -r 25 -pix_fmt yuv420p video.mp4
Run Code Online (Sandbox Code Playgroud)
图像输入用于-framerate
设置帧速率,而视频输出使用-r
.
-f image2
通常不需要,因为 demuxer 会将您的输入识别为图像。
在这个例子中,ffmpeg
将复制帧以达到更高的输出帧率,但它仍然每秒显示相同的“图像”。
某些编码器和容器可能会受到它们支持的帧速率的限制,但它们通常会在ffmpeg
控制台输出中通知您。
默认情况下,ffmpeg 将使用libx264
(H.264 视频)作为 MP4 容器输出的编码器。如果它不可用,则将使用mpeg4
(MPEG-4 Part 2 视频)。
-pix_fmt yuv420p
将输出广泛兼容的色度子采样输出。
出于好奇,找出-framerate
适用于所有播放器的最低输出值可能会很有趣。
归档时间: |
|
查看次数: |
3995 次 |
最近记录: |