rtsp sever搭建和推流实验

通过该实验,我们将学会调用K230开发板上的音视频编码器,将其推流到rtsp server上。其中通过mapi venc&aenc接口实现对音视频的编码;推流之后在VLC中通过url进行拉取,目前该demo支持3路url推拉流。

依赖资源

  • 网线x1,用于将开发板连接到局域网,也可使用wifi连接

源码介绍

K230 SDK采用双核架构,小核运行linux系统,实现网络控制服务。大核运行RTT系统,实现对音视频硬件的控制。小核在启动过程中负责引导大核。大小核通过核间通信进行消息通信和内存共享。 小核网络服务移植了live源码,路径为k230_sdk/src/common/cdk/user/thirdparty/live 音频使用G711编码。 音视频推流中,视频默认最大分辨率与配置的sensor_type相关,默认最大分辨率为1920x1080。

程序主要步骤

音视频推流程序
  1. new StreamingPlayer
    • 初始化核间通信。
    • 配置video buffer。
  2. InitVicap:初始化摄像头。
  3. CreateSession
    • 创建server session。
    • 创建并开启音频输入通道,音频采样率为44.1k,采样宽度16bit。
    • 初始化音频编码,音频采用G711A编码。
    • 创建视频编码通道,使能IDR帧。
  4. Start
    • 开启视频编码通道并绑定到vo。
    • 开启视频编码通道,并将视频输入绑定到视频编码。
    • 开始音视频推流。
语音对讲程序
  1. Init
    • 创建server session。
    • 初始化核间通信。
    • 配置video buffer。
    • 创建并开启音频输入通道,音频采样率为8k,采样宽度为16bit。
    • 创建音频编码通道,音频采用G711U编码。
    • 创建音频输出通道和音频解码通道,并将音频解码绑定到音频输出。
  2. Start
    • 开始推音频流。
    • 开启视频编码通道,并将视频输入绑定到视频编码。

实验步骤

  • 在k230_sdk目录下执行make cdk-user,在k230_sdk/src/common/cdk/user/out/little/目录下生成rtsp_demo

    • 相关源码

      在SDK中包含的rtsp相关demo位于k230_sdk/src/common/cdk/user/samples目录下,其中:

      • rtsp_demo:语音推音视频流程序
      • rtsp_server:语音对讲服务器端程序
      • backchannel_client:语音对讲客户端程序

-. 启动开发板

  1. 将开发板连接局域网

  2. 检查k_ipcm模块是否加载

lsmod # 列出已加载的内核模块
insmod k_ipcm.ko # 若未加载,进行k_ipcm加载

通过 lsmod 检查小核侧是否加载k_ipcm模块,如未加载,执行 insmod k_ipcm.ko 加载k_ipcm模块

  1. 在大核,执行
cd sharefs/app
./sample_sys_init.elf #启动核间通信进程
  1. 在小核,执行
cd /mnt
./rtsp_demo -s 24 -n 1 -t h265 -w 1280 -h 720

参数说明

参数名描述参数范围默认值
help打印命令行参数信息--
nsession个数[1, 3]1
t编码类型h264、h265、mjpegh264
w视频编码宽度[640, 1920]1280
h视频编码高度[480, 1080]720
ssensor类型查看camera sensor文档7
  1. 在VLC中打开网络串流

VLC -> 媒体 -> 网络 -> 输入网络URL -> 播放

实验成功,可以在VLC网络串流中实时看到摄像头拍摄的画面