工作上遇到这样的需求,录制六路视频,一路音频,合成ts流通过网络发送到指定udp地址,先说下思路:
1.收到六路摄像头数据流,分别进行Demux,并记录对应的的索引号赋值给对应的packet->stream_index;
2.初始化Mux时,根据实际有几路视频流和音频流创建对应的视频流和音频流,然后是有几路视频流就创建几个节目
av_new_program,最后把对应的节目id和流索引加入输出的上下文。 3.在Mux线程里不断从队列里取出数据,需要根据之前的流索引计算pts和dts,可以用一个数组保存pts;
下面把一些关键代码贴出来,仅供参考:
Demux出来后回调到Mux队列里
Mux初始化:
当然也可以把合成后的ts流发送到指定的组播地址。