Closed mars79668 closed 1 year ago
顺序是乱的是指什么?你的意思需要在feed里面排序?
TsPacket 可能不是连续的, 及 当前TsPacket是stream1(audio)的包,下一个TsPacket有些视频里可能是 stream2(video)的包, 所以解析的时候 需要 使用 ElementaryPID 判断当前包是那个stream 的包,无需进行排序
另外还有个问题,就是ts包的处理没有考虑和视频流播放速度,应保存1x 处理速度,目前方式处理速度太快, 播放会出现丢帧卡顿,没有声音,应该要根据pts 做延时处理,我还在学习中,不知对不对; ffmpeg 推流可以使用 -re 参数保持1x 速度推流
可以配置SpeedLimit 全局参数来保持流速,TsPacket前后确实可能是不同的Stream的,但是PES包应该是连续的,在onPES里面会对类型做判断
tsPktArr 应该保存的是 同一个 stream 的 ,否则 两个 stream 的数据混再一起, 后续解析就会有问题
TsPacket 不连续,会导致 pes包解析会乱, 我这里遇到的问题是 将视频数据的解析到音频数据,导致音频后续解析出错 我的解决方法是通过 v.ElementaryPID 记录pes包解析状态,保证乱序包切换 可以将ts包解析到正确的pes 包去
什么情况下tspacket会不连续呢?除非udp包,hls都是tcp的啊
我们这里有比较老的编码设备输出的 hls 就有这种情况
已经兼容这种情况了