【发布时间】: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