我现在有一个完整的video-streaming机制(除了GDCL /Demux过滤器)。结构是这样的。
流光图:
File Source Filter -> GDCL MP4 Demuxer -> My RTP Network Renderer接收方图:
My RTP Network Listener -> GDCL MP4 Muxer -> My Video Renderer我不使用RTSP协议,而是通过一些自定义方法传递所需的启动参数。我连续地流分段的文件。为此,每次到达文件结束时,我都会为下一个文件创建一个新的Streamer Graph。但是,在下一个UDP上继续使用相同的Streamer Graph端口。因此,当新的My RTP Network Listener构建并开始运行时,Streamer Graph就会继续监听并继续运行。
目前,我不使用像RTCP这样的其他通信方法。音频流是不完整的,所以我没有音视频同步问题(还没有!)
来了重要的部分,
我只想从流中获取真实记录的日期/时间信息。MP4文件名采用日期/时间格式。所以我知道文件记录是什么时候开始的。我知道我可以使用以下方法计算记录日期/时间:
Recording Start Date/Time Value + Media TimeStamp Value Of The Stream但是,如果两个录制的文件之间存在差距呢?当我构建一个新的Streamer Graph时,时间戳将再次从零开始计数,对吗?
来了问题
那么,处理这种情况的正确方法是什么呢?我知道RTCP被用于音视频同步。它也能用在我的箱子里吗?还是我需要使用第二个UDP端口(就像RTCP)并发送一些自定义的日期/时间信息消息?
我能想到不止一个解决方案来解决我的问题。但是,如果有一个通常的,更恰当的方式,我不想使用一个丑陋的解决方案。
发布于 2012-02-09 13:29:45
我使用了一个额外的UDP端口来发送日期/时间信息(4字节unix时间戳)。它工作良好,我的播放器正确计数计时器和所有的日期/时间信息与视频流同时接收。我仍然认为应该有一个更好的,行业标准的方式,但由于没有人决定回答我的问题,我想分享我自己的解决方案。
Port Offset : RTP Video Stream
Port Offset+1 : Date/Time Information (Unix TimeStamp)计算unix时间戳(秒):
File Recording Start DataTime + Seek Time + (Media TimeStamp / 100000)希望1:这对将来有类似情况的人有帮助。
希望2:有人回答这个问题,提出一个更好的方法。
https://stackoverflow.com/questions/9199322
复制相似问题