解ts流(包含多路视频和一路音频)
上一篇写的多路视频合成ts流,顺便讲下把合成的ts流给解出来;
还是先说思路,我们的目标就是把解出来的多路视频(节目),混成一路,比如ts包含四路,最终出来的画面就是一个田字;
第一步,根据实际ts流里有几路视频就打开几个解码器;
第二步,不断从网络流读取数据,解码出来对应的视频帧,然后把对应的流索引和视频帧,回调给混屏类处理的队列里,混屏类根据对应的索引,插入到四个队列里,这里做的处理就是把四路视频帧图像做拉伸缩放,处理完回调给编码线程进行编码;
第三步:最后Mux从队列里不断取编码后的packet ,发送到指定的地址;
下面是一些关键代码:
根据流数量打开四路视频解码器:
解码后回调给混屏类队列
从混屏类队列里取出混屏的帧数据编码:
最后把编码后的数据发送出去,也可以组播到指定的组播地址,或者分包发送出去,此处的pts每次递增即可。