【问题标题】:Getting the frame pkt_pts from ffmpeg从 ffmpeg 获取帧 pkt_pts
【发布时间】:2018-02-02 18:41:43
【问题描述】:

我记录了一个类似的流(但我将图像通过管道传输到标准输出并实时处理帧):

ffmpeg -debug_ts -y -i http://my_stream.com -strict -2 out.mp4

现在我需要将我的帧映射到 pkt_pts。这个 pkt_pts 我可以通过运行得到:

ffprobe -i http://my_stream.com -show_frames -select_streams v:0

虽然启动 ffprobe 不是一个选项,因为我需要确切地知道哪个 pkt_pts 属于哪个框架。 因此,我在我的 ffmpeg 调用中使用了 -debug_ts,这给了我很多到 stderr 的输出,然后我将其解析出来。与帧数匹配的唯一输出行是以:muxer <- type:video 开头的行确实包含 pkt_pts,但它始终以 0 开头(不是全局 pkt_pts强>)。

有没有办法使用 ffmpeg 将帧实时映射到全局 pkt_pts

【问题讨论】:

  • 你能澄清global pkt_pts的意思吗?
  • 是的。所以基本上我所说的全局 pkt_pts 是由流源设置的 pkt_pts(当我开始录制时通常不会从 0 开始)。我的目标是,如果我用 ffmpeg 开始 2 次录制,我可以使用这个 pkt_pts 作为唯一的帧标识符(据我所知,pkt_pts 在 26.5 小时后从 0 重新开始,所以它不是唯一的,但加上它会得到的录制时间独特的)。有没有办法得到这样的帧标识符?
  • -i 之前添加-vsync 0-copyts。先试试前者。
  • 我做了一些实验:-vsync 0 导致 pkt_pts 从大约 11'000 的值开始,如果我在几秒钟后重新开始录制,它会再次以类似的值开始。这不是我用 ffprobe 收到的 pkt_pts。使用 -copyts 视频无法正确录制视频(无法使用 vlc 播放)并且我在 stderr 上没有“muxer

标签: ffmpeg


【解决方案1】:

您可以运行原始命令,并提取以

开头的行

demuxer -> ist_index:X

其中X 是您想要的流的索引号。

在每一行中,例如

demuxer -> ist_index:12 type:video next_dts:10851838034 next_dts_time:10851.8 next_pts:10851705034 next_pts_time:10851.7 pkt_pts:976665480 pkt_pts_time:10851.8 pkt_dts:976665480 pkt_dts_time:10851.8 off:0 off_time:0

-pkt_pts 除以流时基,90000 用于 TS 输入,将为您提供完整精度 pkt_pts_time。如果您不知道时基,请查看流的输入转储

Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 768x432, 29.97 tbr, 90k tbn, 59.94 tbc

并使用tbn 值。

请注意,您的 ffprobe 命令选择了第一个视频流,但您的 ffmpeg 命令将其留给 ffmpeg 选择流,这可能不会选择相同的流。

【讨论】:

  • 恐怕这不会奏效...demuxer -> ist_index:0 仅输出 1595 次 3000(在我执行的一个实验中)帧视频。我不一定需要 pkt_pts_time 我只需要一个标识符......如果 pkt_pts 用作标识符,那么 pkt_pts/90000 也可以。顺便说一句:pkt_pts_time 实际上已经是demuxer -> ist_index 行中的一个字段。还有其他想法吗?
  • a) 你是如何检查有 3000 个输入帧的? b) MP4 复用器将复制帧以保持 CFR。因此,多个输出帧可能具有相同的输入 PTS。
  • pkt_pts_time 以 1 位尾数显示,因此多个输入数据包可以显示相同的值。
  • a) 我确实使用 cv2 遍历了帧并计算了帧数。 b) 好吧,这很有趣……
猜你喜欢
  • 2011-01-02
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 2023-03-12
  • 2013-05-25
相关资源
最近更新 更多