我知道有一个流以某个帧速率(30 FPS)输出。我想使用ffmpeg制作此流的副本并将其保存到磁盘。
我有以下命令:
ffmpeg -i http://input/ -c copy -map 0 \
-f segment -strftime 1 -segment_time 900 \
-segment_atclocktime 1 -segment_format mp4 %Y-%m-%d_%H-%M-%S.mp4
但是当我运行命令时,我看到以下内容:
frame= 32 fps=3.9 q=-1.0 Lsize=N/A time=00:00:01.27 bitrate=N/A
看起来FPS徘徊在~4.0 FPS左右,time
移动速度比实时慢。
我尝试在输入文件之前添加了-re
(复制输入流的速率)和-r 30
(手动设置速率为30 FPS)标记,但它似乎没有工作。
我还使用-framerate 30
阅读了a similar question here,但该选项在手册页中并不存在,而且是Invalid option
。
非常感谢任何帮助!
所以我让修改后的命令(删除标志-c copy -map 0
)运行了5分钟。运行ffprobe
会产生:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2017-03-10_01-09-12.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.2.100
Duration: 00:00:15.43, start: 0.066016, bitrate: 13416 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1024x768, 13414 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
同样,这只产生15秒的视频,我似乎无法在30 FPS的输入流和30 FPS的实时输出流之间获得1:1的关系。播放视频会产生一些加速的东西。
答案 0 :(得分:1)
这是处理速度,即每秒处理4帧。它不是输出流FPS。在任何情况下,在流复制模式下,FFmpeg都不能改变输出FPS,除非您的输入是原始比特流。