【问题标题】:ffmpeg copy stream preserving FPSffmpeg复制流保留FPS
【发布时间】:2017-03-10 14:18:54
【问题描述】:

我知道一个流以特定帧速率 (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 的关系。播放视频会加快速度。

【问题讨论】:

    标签: video ffmpeg


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复!我删除了-c copy -map 0。我从输出中看到frame 计数器的递增速度低于每秒 30,FPS 约为 2.0,time 仍在缓慢运行。当我回放这个时,输出看起来加快了,即使原始流是 30 FPS。
    • 显示其中一个段的 ffprobe 输出。
    • 输出看起来很正常,即30 fps。你玩的怎么样?
    • 只需通过我的主机上的 VLC。我绝对认为有问题,因为运行 ffmpeg 5 分钟只产生了 15 秒的视频。我显然希望输出 5 分钟。
    • 那么,5分钟内只创建了一个段文件?您不应将-re 用于实时输入,仅用于文件或完全形成的网络输入。
    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2016-10-15
    • 2016-03-03
    相关资源
    最近更新 更多