1. metartc介绍
metartc为国内杨大侠部分开源的一款用于嵌入式领域webrtc库,它与谷歌官方webrtc相比,编译到君正平台的可执行文件仅有5M即可实现webrtc的通信。
2. 为什么要在ipc中使用webrtc
1. 在ipc(IPCamera)领域中,以下方式各有其局限性:
rtsp:只能局域网中查看监控视频,无法满足用户远程互联网观看监控视频的需求。
rtmp:需要推流到云服务器然后在前端拉流播放。这种方式将会占用大量的云服务器资源进行中转,造成大量资源浪费。
tutkP2P:已经可以实现端对端直接通信,可以节省大量云服务器资源,然而当NAT穿越(俗称打洞)失败时,却不可避免的造成连接失败。
2. webrtc为音视频领域的皇冠,webrtc的实现为:
当用户端和ipc端为同一局域网中时,将不需要NAT穿越,直接通过局域网内的ip进行直连,不额外占用云服务器资源。
当用户端和ipc端为不在同一局域网中但可以穿越时,将会通过Stun服务器获取到ipc的公网ip地址,进行端到端连接,不占用额外的云服务器资源。
当用户端与ipc端穿越失败时,则通过Turn服务器进行中继转发,兜底连接,提高连接成功率。
3. metartc编译
1. OS版本: Ubuntu 20.04 LTS 开发板:君正T31x
2. 官方网址: https://gitee.com/metartc/metaRTC/releases/tag/v5.0-b1 不一定能跑通,建议下载我整理后的资源,资源在文章最开始的地方。
4. 先解压metartc5_jz.zip,可以看到bin/lib_debug中已经有编译好的libmetartccore5.a了,如果不想重复编译也可以直接使用。
5. 通过君正官方提供的sdk找到mips-gcc540-glibc222-32bit-r3.3.0.tar.gz的压缩包,将其解压到/opt目录中。
sudo tar -zxvf mips-gcc540-glibc222-32bit-r3.3.0.tar.gz -C /opt
6. 执行libmetartccore5的编译脚本
cd libmetartccore5
sudo sh cmake_mips32.sh
7.运行完后,在libmetartccore5/build目录中会有一个libmetartccore5.a文件,将其copy到bin/lib_debug中。
cp build/libmetartccore5.a ../bin/lib_debug/
8. 编译metaipc5可执行文件
cd ../metaipc5_jz/
sudo sh cmake_mips32.sh
4. 开发板运行metaipc5
1. SecureCRT登录开发板,串口连接Ubuntu,开发板连接电源。
2. SecureCRT进入Ubuntu挂载目录,copy metartc5和yang_config.ini到开发板~/metaipc目录中。
cd /mnt/metartc5_jz/metaipc5_jz/build
cp metaipc5 ~/metaipc/
cd /mnt/metartc5_jz/bin/app_debug/
cp yang_config.ini ~/metaipc/
3. SecureCRT运行metaipc5
cp yang_config.ini ~/metaipc/
./metaipc5
4. 下载chrome_linux64_stable_98.0.4758.102 这个版本的chrome,这个版本是2022-02-14更新的chrome,最新版chrome跟metaipc5不兼容,需要下载旧版chrome。
4. ubuntu中进入metap2p5_html文件夹,chrome打开p2pdemo_zb.html文件。修改ip地址为开发板ip地址,点击“播放视频”按钮,下方video标签将会展示出视频。
5. 总结
1. 目前实现的是基于开源版v5.0-b0 版本做的简单修改,官方的好几个版本都多少缺点东西,我这里给整理了一下。目前是局域网连接的webrtc,后续尝试走stun和turn试一下NAT穿越的效果。