解ts流(包含多路视频和一路音频)

上一篇写的多路视频合成ts流,顺便讲下把合成的ts流给解出来;

还是先说思路,我们的目标就是把解出来的多路视频(节目),混成一路,比如ts包含四路,最终出来的画面就是一个田字;

第一步,根据实际ts流里有几路视频就打开几个解码器;

第二步,不断从网络流读取数据,解码出来对应的视频帧,然后把对应的流索引和视频帧,回调给混屏类处理的队列里,混屏类根据对应的索引,插入到四个队列里,这里做的处理就是把四路视频帧图像做拉伸缩放,处理完回调给编码线程进行编码;

第三步:最后Mux从队列里不断取编码后的packet ,发送到指定的地址;

下面是一些关键代码:

根据流数量打开四路视频解码器:

解ts流(包含多路视频和一路音频)

解码后回调给混屏类队列

解ts流(包含多路视频和一路音频)

解ts流(包含多路视频和一路音频)

从混屏类队列里取出混屏的帧数据编码:

解ts流(包含多路视频和一路音频)

 

最后把编码后的数据发送出去,也可以组播到指定的组播地址,或者分包发送出去,此处的pts每次递增即可。

解ts流(包含多路视频和一路音频)