您尚未登录。

楼主 # 2021-08-11 15:13:03

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

荔枝派zero主线内核使用cedar硬编码和RTMP推流的网络摄像机

基本思路:
网络摄像机(IPC)由摄像头 编码器 网络 推流 这几个部分组成
摄像头获取图像帧 交给编码器编码 通过网络推流到流媒体服务器 最后从流媒体服务器拉流到就能看到摄像头的画面了

摄像头用的是ov2640 接荔枝派zero的DVP接口 需要配置设备树的DVP引脚和i2c引脚 使用Linux的V4L2框架进行操作摄像头 需要配置内核V4L和多媒体支持 在获取图像时要配置成NV21格式给编码器 配置参考: https://whycan.com/t_2039.html
完成以上操作后 要保证有/dev/video0

编码器是用的主线cedar硬编码 将NV21的图像编码成H264 配置参考: https://whycan.com/t_4219.html
完成以上操作后 要保证能在/dev目录下找到cedar_dev和ion

网络是用的WIFI模块rtl8723bs 配置参考: https://whycan.com/t_652.html

推流是使用ffmpeg库进行RTMP推流到PC的nginx的RTMP流媒体服务器


演示环境搭建
荔枝派zero配置
附件中提供了完成以上配置的用于演示的荔枝派镜像 wifi固件 编译好的应用程序
lichee_zero-linux.dd是镜像文件 在linux下使用dd命令烧录进tf卡 以tf卡是/dev/sdb为例

sudo dd if=lichee_zero-linux.dd of=/dev/sdb bs=1M

烧录好镜像到tf卡后 把tf卡拔了再插进入 然后把下面文件复制进tf卡第二分区200多M的 目录/root里
ipc_cedarc_venc
rtl8723bs_nic.bin

烧录完成后启动系统 需要插入ov2640驱动模块 和配置wifi模块

insmod /lib/modules/5.2.0-licheepi-zero/kernel/drivers/media/i2c/ov2640.ko

复制rtl8723bs固件

mkdir -p /lib/firmware/rtlwifi/ 
cp /root/rtl8723bs_nic.bin /lib/firmware/rtlwifi/

加载驱动 打开网卡

modprobe r8723bs.ko 
ifconfig wlan0 up 

替换wifi配置内容
编辑要连接的wifi名和密码 替换wifiname 和password

vi /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0 
ap_scan=1 
network={
    ssid="wifiname"       
    scan_ssid=1
    key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
    pairwise=TKIP CCMP
    group=CCMP TKIP WEP104 WEP40
    psk="password" 
    priority=5             
}

根据配置开始扫描并连接指定wifi

wpa_supplicant -B -d -i wlan0 -c /etc/wpa_supplicant.conf

等wifi连接后 获取ip等信息

udhcpc -i wlan0

至此荔枝派zero演示环境已经配置好了


PC操作系统为win10
在PC上安装Nginx 并加入RTMP插件 配置好nginx-win.conf文件
附件上有配置好的Nginx 可以直接用

在PC上安装ffmpeg 并配置好环境变量
附件上有ffmpeg 要配置一下环境变量
“计算机”->“属性”->“高级系统设置“->”环境变量“->“系统变量”->“Path“->“编辑” 将.exe文件所在的路径添加进去即可。
例如:
D:\CS\ffmpeg\ffmpeg-4.3.1-win64-shared\bin
配置好环境变量后在cmd输入命令检验

ffmpeg -version

在安装好Nginx和ffmpeg后 进行流媒体服务器推流拉流测试

启动Nginx
打开cmd 进入Nginx目录执行命令启动

比如路径在d:\cs\nginx 1.7.11.3 Gryphon
依次执行以下命令

d:
cd cs\nginx 1.7.11.3 Gryphon
nginx.exe -c conf\nginx-win.conf

执行完后cmd不会输出什么信息 流媒体服务器已经启动了 此时可以关掉这个cmd
再打开两个cmd 进行ffmpeg推流拉流

先进行ffmpeg 拉流:

ffplay rtmp://localhost:1935/live/home

再进行ffmpeg推流:

ffmpeg -re -i d:\bad_apple.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/home

附件上有测试文件bad_apple.mp4
执行完后 出现正在播放视频窗口 说明流媒体服务器和推流拉流测试正常 PC演示环境已经配置好了

推流拉流可能会出现失败提示
[rtmp @ 0x42b50] Cannot read RTMP handshake response
重新再执行一次命令就行 荔枝派推流失败出现同样的提示时同理

在推流的cmd按ctrl+c关掉推流 用同样的方式关掉拉流或者直接关掉视频窗口

接下来用荔枝派zero推流给PC
再在PC打开拉流

ffplay rtmp://localhost:1935/live/home

在荔枝派推流

./ipc_cedarc_venc 800x600 /dev/video0 rtmp://192.168.43.64/live/home

参数分别是 分辨率 输入摄像头设备 输出RTMP流媒体服务器地址
其中192.168.43.64要换成你的PC的IP地址 确保PC和荔枝派在同一个局域网

过一会 就可以在PC看到摄像头画面的视频窗口
有时候过了10-20秒还没出现视频窗口则需要重新执行拉流推流 如果还不行则需要重启荔枝派
至此演示环境搭建好了

演示效果:

验证平台:
硬件 荔枝派zero 主控V3s
Linux 主线内核5.2荔枝派官方的
根目录 Buildroot 2019.08
编译器 Buildroot 里的gcc 8.3
流媒体服务器Nginx 1.7.11.3 Gryphon 带RTMP插件
PC拉流 ffmpeg 4.3.1
荔枝派推流 ffmpeg 4.2                                                               

应用程序编译
项目功能由编程实现 项目附件中有工程源码 交叉编译产生应用程序 工程是用CMake构建Makefile
在PC上安装Cmake

apt-get install cmake

然后在CMakeLists.txt修改链接库路径和编译器路径 修改好后 在源码目录下 输入(注意有个点)

cmake .

再输入

make

就编译出了应用程序 复制进荔枝派就可以运行了

系统构建配置
自己构建系统会比较容易遇到问题 所以我在附件里提供了设备树 内核配置文件 Buildrood配置文件

离线

楼主 #1 2021-08-11 15:16:47

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: 荔枝派zero主线内核使用cedar硬编码和RTMP推流的网络摄像机

离线

楼主 #3 2021-08-15 18:35:12

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: 荔枝派zero主线内核使用cedar硬编码和RTMP推流的网络摄像机

niyazfattahov 说:

Hello, what is a ipc_cedarc_venc?
where can I get it?

exec    荔枝派zero主线内核使用cedar硬编码和RTMP推流的网络摄像机附件\演示环境\应用程序\ipc_cedarc_venc
source 荔枝派zero主线内核使用cedar硬编码和RTMP推流的网络摄像机附件\源码工程\ipc_cedarc_venc

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn