K230 编码实战 - rtsp sever搭建和推流
1. 环境准备
1.1 硬件环境
- K230-USIP-LP3-EVB-V1.0/K230-UNSIP-LP3-EVB-V1.1
- Ubuntu PC 20.04
- Typec USB线 * 2。
- 一根连接到UART0/3,用于串口收发,UART0对应小核,UART3对应大核。
- 一根连接到DC:5V接口,用于供电。
- USB TypeC转以太网,连接到USB0。
- 网线一根
- SD卡(如果使用SD卡启动,或软件需要访问SD卡)
- 摄像头子板(IMX335,用于rtsp推音视频流)
- 耳机(用于语音对讲)
- 杜邦线一根,按下图连接USB0_OTG_EN和高电平
注意:音频对讲需要两套设备。
1.2 软件环境
- K230 SDK
- VLC播放器
1.3 运行准备
在EVB上执行rtsp程序需要启动网络服务,并保证PC和EVB板在同一个网段。
2. 源码介绍
2.1 源码位置
在SDK中包含的rtsp相关demo位于k230_sdk/src/common/cdk/user/samples
目录下,其中
rtsp_demo
:语音推音视频流程序rtsp
:语音对讲服务器端程序backchannel_client
:语音对讲客户端程序
2.2 源码介绍
K230 SDK采用双核架构,小核运行linux系统,实现网络控制服务。大核运行RTT系统,实现对音视频硬件的控制。小核在启动过程中负责引导大核。大小核通过核间通信进行消息通信和内存共享。多媒体软件架构如下:
小核网络服务移植了live源码,路径为k230_sdk/src/common/cdk/user/thirdparty/live
音频使用G711编码。
音视频推流中,视频默认最大分辨率与配置的sensor_type相关,默认最大分辨率为1920x1080。
2.2.1 程序主要步骤
2.2.1.1 音视频推流程序
new StreamingPlayer
- 初始化核间通信。
- 配置video buffer。
InitVicap
:初始化摄像头。CreateSession
:- 创建server session。
- 创建并开启音频输入通道,音频采样率为44.1k,采样宽度16bit。
- 初始化音频编码,音频采用G711A编码。
- 创建视频编码通道,使能IDR帧。
Start
:- 开启视频编码通道并绑定到vo。
- 开启视频编码通道,并将视频输入绑定到视频编码。
- 开始音视频推流。
2.2.1.2 语音对讲程序
Init
:- 创建server session。
- 初始化核间通信。
- 配置video buffer。
- 创建并开启音频输入通道,音频采样率为8k,采样宽度为16bit。
- 创建音频编码通道,音频采用G711U编码。
- 创建音频输出通道和音频解码通道,并将音频解码绑定到音频输出。
Start
:- 开始推音频流。
- 开启视频编码通道,并将视频输入绑定到视频编码。
3.程序执行
3.1 rtsp推音视频流
3.1.1 参数说明
参数名 | 描述 | 参数范围 | 默认值 |
---|---|---|---|
help | 打印命令行参数信息 | - | - |
n | session个数 | [1, 3] | 1 |
t | 编码类型 | h264、h265、mjpeg | h264 |
w | 视频编码宽度 | [128, 1920] | 1280 |
h | 视频编码高度 | [64, 1080] | 720 |
s | sensor类型。 | 0: ov9732;1: ov9286 ir;2: ov9286 speckle;3: imx335 2LANE 1920Wx1080H;4: imx335 2LANE 2592Wx1944H;5: imx335 4LANE 2592Wx1944H;6: imx335 2LANE MCLK 7425 1920Wx1080H;7: imx335 2LANE MCLK 7425 2592Wx1944H;8: imx335 4LANE MCLK 7425 2592Wx1944H | 7 |
3.1.2 编译程序
在k230_sdk
目录下执行make cdk-user
,在k230_sdk/src/common/cdk/user/out/little/
目录下生成rtsp_demo
程序源码目录k230_sdk/src/common/cdk/user/samples/rtsp_demo
3.1.3 运行程序
支持音视频码流同时推流到rtsp server上,其中通过mapi venc&aenc
接口实现对音视频的编码;推流之后通过url进行拉取,目前支持两路url推拉流。
- 在大核上执行:
cd /sharefs; ./sample_sys_init.elf
- 在小核上执行:
./rtsp_demo
- 小核上运行rtsp_demo后,会打印出形如:
rtsp://ip:8554/session0
和rtsp://ip:8554/session01
的url地址,可通过vlc拉取对应的流进行播放。 vlc拉流方式:媒体->打开网络串流->在打开的窗口中输入对应的url。