4.音视频工作流程分析 — Encode 视频编码模块

本骗对 Encode 视频编码模块 进行分析

整体流程图
**加粗样式
**

为什么要编解码? 其中最主要的原因 有利于数据传输 学过 通信原理 的同学 可以用信道 带宽等相关概念来类比理解。

视频编码(H264, H265, JPEG)模块,包含编码通道管理,编码参数设置等功能。

Encoder 模块内部结构:
在这里插入图片描述
如上图所示,编码模块由若干个 Group 组成,每个 Group 由编码 Channel 组成。每个编码 Channel 附带一个输出码流缓冲区,这个缓冲区由多个 buffer 组成。

目前 T31 上支持 6 个 Group,每个 Group 由 2 个 Channel 组成。最多使用 6 个Channel。

一个编码 Channel 可以完成一种协议的编码。目前每个 Group 有两个 Channel,可以添加一个 H264 编码 Channel 与一个 JPEG 编码 Channel。

下面我们可以用 理解代码流程 来了解编码器的工作模式

代码实现流程

初始化步骤

设置编码grop0,通道零0的编码分辨率大小为sensor分辨率大小

video编码器 GROUP+CHAN 初始化(创建 group ,用于传输码流和抓图,绑定venc通道到osd通道,创建 venc 通道, 将通道注册到 group)

先把bind信息注册到信息表中(即存在结构体中),后面会使用 LUX_COMM_Bind_Connect() 建立绑定

工作思路

1.通过sensorname 获取镜头分辨率 设置编码通道分辨率

2.创建GROUP

3.绑定venc通道到OSD通道(注:还未启用绑定,只是把信息存入信息表中)

4.创建VENC通道注册到group

5.初始化完毕之后,会启动编码器,但此时还未开始编码,只有当码流传过来是才开始编码

获取编码帧 (输出输出拼包转换后的码流结构)

6.通过码流通道模式获取到实际编码器通道参数(即 根据 channel 获取要进行编码的编码器通道属性)

7.polling一帧数据(即请求一段内存,用来存储编码之后的码流)

8.获取编码的码流(开始对指定 chnId 通道进行编码,码流存于 pStream 中)

9.打包码流包(将前面获取的所有帧码流打包,以便后面发送)

发送

10.发送码流包到SDK。

over~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值