metaRTC嵌入式webrtc编程指南
metaRTC支持32位和64位编程,支持H264和H265,核心大部分为C实现,少部分为C++实现,为了降低第三方库适配复杂性,很多功能都自己实现并未调用第三方库。
概述
谷歌webrtc系统庞大,代码复杂,第三方类库众多,而且很多算法对cpu要求很高,而嵌入式芯片性能大多比较差,其算力满足不了谷歌webrtc要求,metaRTC为了满足嵌入式编程也下足了功夫。
metaRTC支持32位和64位编程,支持H264和H265,核心大部分为C实现,少部分为C++实现,为了降低第三方库适配复杂性,很多功能都自己实现并未调用第三方库。
第三方类库
谷歌webrtc引用了大量的第三方类库,这些第三方类库的适配是个非常痛苦的事情,有些嵌入式是32位有些是64位,这些重量级的第三方类库对嵌入式就是个很大的负担。
行内人士都在喊编程不要重复造轮子,但这些轮子都是重量级的,嵌入式有限的算力怎么办?
还记得log4j的影响吗?
为了适应嵌入式编程,metaRTC做的工作就是在减轮子,减少第三方库的调用。
metaRTC实现第三方类库功能
- 实现了简易的HTTP协议,去掉libcurl调用
- 实现了简易的JSON,去掉json调用
- 实现了YUV等格式转换和伸缩,可以去掉libyuv
- 实现了解码的简易库yangh264decoder 可以去掉ffmpeg
推流需要的第三方库
- 编码器 x264或x265 ,如果有硬编则不需要
- openssl库,libssl/libcryto
- srtp库
- opus库
拉流需要的第三方库
- 解码器 yangh264decoder/ffmpeg 如有硬解则不需要
- openssl库,libssl/libcryto
- srtp库
- opus库
第三方库选项
在include目录里Yang_Config.h头文件里
#define Yang_HaveWebsockets 0 //using libwebsockets
#define Yang_HaveCurl 0 //using libcurl
#define Yang_HaveJson 0 //using jsonlib
下载源码和类库
https://gitee.com/metartc/metaRTC/releases/2.0.066https://gitee.com/metartc/metaRTC/releases/2.0.066
metartc2_linux_runtime.7z为所需第三方库
编译参考视频
metartc(yangwebrtc)windows版本编译教程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1d3411r742/
webrtc服务器
推荐SRS4.0最新版本,编译参考http://github.com/ossrs/srs#usage
objs/srs -c conf/https.rtc.conf 或者
objs/srs -c conf/rtc.conf
可支持webrtc/rtmp/hls/srt/httpflv等直播。
H265 webrtc服务器
GitHub - metartc/srs-webrtc265https://github.com/metartc/srs-webrtc265
metartc/srs-webrtc265https://gitee.com/metartc/srs-webrtc265编译同上
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)