RV1126多路编码讲解第一课:多路编码的整体代码框架讲解

RV1126多路编码讲解第一课:多路编码的整体代码框架讲解

一. 多路码流功能的介绍

多路码流编码就是指一个CMOS摄像头、一个麦克风数据通过视频编码和音频编码后推送到多个流媒体服务器。多路编码在我们开发中经常会使用。

二. 多路码流大致的框图

image.png

上图是RV1126多路码流的总体框图,多路码流程序设计的核心是把VENC的数据和AENC数据分别存放到不同的数据队列里面,比方说VENC数据存放到video_queue[0]、video_queue[1]、video_queue[2]。AENC数据存放到audio_queue[0]、audio_queue[1]、audio_queue[2]。

存放完成之后,则通过需求从对应的VENC队列和AENC队列分别拿数据合成音视频复合流。比方说video_queue[0]和audio_queue[0]数据进行合成第一个复合流并推送到对应的流媒体服务器、video_queue[1]和audio_queue[1]数据合成第二个复合流推送到第二个流媒体服务器、video_queue[2]和audio_queue[2]数据合成推送到第三个流媒体服务器。

三. 多路码流的源代码文件框架

rv1126_ffmpeg_main_multi.cpp:多路码流的程序入口,也是整个main函数

address_operation.cpp:网络流媒体数组的增删改查操作

network_address_manage.cpp:初始化所有流媒体地址

rkmedia_data_process.cpp:rv1126具体的业务代码实现,包括:视频编码、音频编码、音视频合成线程等等

rkmedia_ffmpeg_config.cpp:rv1126多路码流的ffmpeg模块的管理

rkmedia_multi_assignment.cpp:rv1126多路码流推流线程、视频编码线程、音频编码线程的创建

rkmedia_multi_configure.cpp:rkmedia_configure结构体的管理,rkmedia_configure主要是管理流媒体数组的具体操作

ffmpeg_video_queue.cpp:rv1126多路码流的视频队列操作

ffmpeg_audio_queue.cpp:rv1126多路码流的音频队列操作

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容