我们有一个直播流(带有RTP的MPEG-TS),出于测试目的,我们目前使用tcpreplay
对其进行重放。
我们的mpeg-ts流包含4个流(为简洁起见,省略了编解码器详细信息)。
Stream #0:2: Video: h264
Stream #0:1: Audio: mp2
Stream #0:4: Data: bin_data ([6][0][0][0] / 0x0006)
Strean #0:3: Data: bin_data (FBID / 0x4494246)
Stream #0:0: Data: klv (KLVA / 0x41564C4B)
有时流索引是不同的(例如音频流是流0,依此类推,我不知道这是否是正常行为)
我们目前尝试的只是获取流并使用ffmpeg复制它,例如
ffmpeg -nostdin -hide_banner -i rtp://239.0.0.2:3000 -map 0 -codec copy -f rtp_mpegts rtp://239.0.0.1:2000`
这会导致错误Application provided invalid, non monotonically incereasing dts to muxer in stream 0: [NUMBER] >= 0
无论流0包含什么内容,它总是说stream 0
。
如果我添加use_wallclock_as_timestamps
,它可以工作,但会增加延迟(相比之下,从239.0.0.2:3000
直接流式传输的视频大约10秒,而且从未被捕获。
如果我将输出格式设置为mpegts
而不是rpt_mpegts
,那么它将按预期工作,如果不映射KLVA和FBID流,则与我相同。
这种行为是由于壁钟引起的吗?或者我该怎么做use_wallclock_as_timestamps
而又没有延迟或摆脱上面的错误?