【问题标题】:FFmpeg segmentation and inaccurate/wrong framerateFFmpeg 分割和不准确/错误的帧率
【发布时间】:2017-11-19 11:12:17
【问题描述】:

我使用 ffmpeg 在文件中保存 15 fps 的 RTSP 流。命令类似这样(我已经简化了):

ffmpeg -y -i rtsp://IP/media.amp -c copy -r 15 -f 段 -segment_time 60 -reset_timestamps 1 -segment_atclocktime 1 -strftime 1 outputFile%Y-%m-%d_%H- %M-%S.mp4

它基本上是从流中创建 1 分钟长的文件,但问题是每个分段文件的帧率从来都不是 15fps。

我得到的值是这样的。

14.99874 15.00031

这对我来说是个大问题,因为我需要将这些文件与其他 15fps 视频合并,结果并不好。合并后的文件不稳定,随意点击时间栏,图片崩溃,有时甚至VLC崩溃。

如果我只是合并流文件一切都很好,当我尝试将它与其他东西混合时,我无法获得可观看且稳定的视频文件。

这正常吗?我该怎么做才能使片段具有固定的 15fps 而无需重新编码?

提前致谢。

【问题讨论】:

  • 保存到 TS。 MP4 中最后一帧的持续时间被截断。如果需要,可以重新混合到 MP4。
  • 如果你不介意我问,什么是 TS?传输流文件格式?我试图重新混合到 MP4 并且它可以工作,但是我有太多的数据可以在我所拥有的时间限制下完成它。谢谢你的回答,它确实为我打开了一些可能性
  • TS = 传输流。除非您的文件很大,否则 Remux 应该需要几秒钟。
  • 我保存到 TS 并且它可以解决问题,但是当我使用 VLC 打开单个 TS 文件时,它没有显示持续时间,该怎么办?
  • 这是一个 VLC 问题。 ffprobe 显示持续时间,就像 Potplayer 之类的播放器一样。

标签: ffmpeg frame-rate segment


【解决方案1】:

正如 Mulvya 指出的那样,ffmpeg 会截断最后一帧。

有两种方法可以解决这个问题:

1) 将文件保存到mp4以外的其他容器中,可以是TS

2) 删除视频的最后一帧也可以,但您必须使用过滤器,这意味着重新编码在 cpu/ram 上可能又长又重

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2021-11-10
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多