metaRTC嵌入式webrtc编程指南

Posted metaRTC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了metaRTC嵌入式webrtc编程指南相关的知识,希望对你有一定的参考价值。

概述

        谷歌webrtc系统庞大,代码复杂,第三方类库众多,而且很多算法对cpu要求很高,而嵌入式芯片性能大多比较差,其算力满足不了谷歌webrtc要求,metaRTC为了满足嵌入式编程也下足了功夫。

       metaRTC支持32位和64位编程,支持H264和H265,核心大部分为C实现,少部分为C++实现,为了降低第三方库适配复杂性,很多功能都自己实现并未调用第三方库。

第三方类库

谷歌webrtc引用了大量的第三方类库,这些第三方类库的适配是个非常痛苦的事情,有些嵌入式是32位有些是64位,这些重量级的第三方类库对嵌入式就是个很大的负担。

行内人士都在喊编程不要重复造轮子,但这些轮子都是重量级的,嵌入式有限的算力怎么办?

还记得log4j的影响吗?

为了适应嵌入式编程,metaRTC做的工作就是在减轮子,减少第三方库的调用。

metaRTC实现第三方类库功能

  1. 实现了简易的HTTP协议,去掉libcurl调用
  2. 实现了简易的JSON,去掉json调用
  3. 实现了YUV等格式转换和伸缩,可以去掉libyuv
  4. 实现了解码的简易库yangh264decoder 可以去掉ffmpeg

推流需要的第三方库

  1. 编码器 x264或x265 ,如果有硬编则不需要
  2. openssl库,libssl/libcryto
  3. srtp库
  4. opus库

拉流需要的第三方库

  1. 解码器 yangh264decoder/ffmpeg 如有硬解则不需要
  2. openssl库,libssl/libcryto
  3. srtp库
  4. opus库

第三方库选项

在include目录里Yang_Config.h头文件里

#define Yang_HaveWebsockets 0 //using libwebsockets
#define Yang_HaveCurl 0   //using libcurl
#define Yang_HaveJson 0 //using jsonlib

下载源码和类库

https://github.com/metartc/metaRTC/releases/tag/2.0.066https://github.com/metartc/metaRTC/releases/tag/2.0.066

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编译同上

以上是关于metaRTC嵌入式webrtc编程指南的主要内容,如果未能解决你的问题,请参考以下文章

专注于嵌入式/物联网的webrtc native库metaRTC

纯C嵌入式webrtc开发库metaRTC VS AWS KVS

metaRTC3.0稳定版本编译指南

《Spring Boot编程实战与面试指南》05-04:Spring Boot应用的打包和部署

metaRTC实现ZLMediaKit流媒体服务器webrtc推拉流

ffmpeg-metartc推webrtc流(4.0版本)