多路视频和多路音频合成录制ts流

工作上遇到这样的需求,录制六路视频,一路音频,合成ts流通过网络发送到指定udp地址,先说下思路:

1.收到六路摄像头数据流,分别进行Demux,并记录对应的的索引号赋值给对应的packet->stream_index;

2.初始化Mux时,根据实际有几路视频流和音频流创建对应的视频流和音频流,然后是有几路视频流就创建几个节目

av_new_program,最后把对应的节目id和流索引加入输出的上下文。
3.在Mux线程里不断从队列里取出数据,需要根据之前的流索引计算pts和dts,可以用一个数组保存pts;

下面把一些关键代码贴出来,仅供参考:

Demux出来后回调到Mux队列里

多路视频和多路音频合成录制ts流_第1张图片

Mux初始化:

多路视频和多路音频合成录制ts流_第2张图片

多路视频和多路音频合成录制ts流_第3张图片

多路视频和多路音频合成录制ts流_第4张图片

当然也可以把合成后的ts流发送到指定的组播地址。

你可能感兴趣的:(Windows/C/C++编程,ffmpeg,网络通信)