基本思路:
网络摄像机(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配置文件
离线
离线
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
离线