ffmpeg复制流保留FPS

时间:2017-03-10 05:04:51

标签: video ffmpeg

我知道有一个流以某个帧速率(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的关系。播放视频会产生一些加速的东西。

1 个答案:

答案 0 :(得分:1)

这是处理速度,即每秒处理4帧。它不是输出流FPS。在任何情况下,在流复制模式下,FFmpeg都不能改变输出FPS,除非您的输入是原始比特流。