Code once run everywhere, A pure C version of webRTC
MetaRTC是一个跨平台的webRTC SDK,更适合嵌入式/物联网的webRTC应用
MetaRTC is a cross-platform webRTC SDK, more suitable for embedded/Internet of Things webRTC applications.
-
Audio/Video Support
- H264/H265(HEVC)
- OPUS/G711A/G711U/AAC/MP3/SPEEX
- AEC/ANS/AGC/VAD/CNG
-
DataChannels
-
NACK/PLI/FIR/FEC/TWCC
-
STUN/TURN Support
-
IPv4/IPv6
-
Whip/Whep
-
Linux/Windows/Mac/Android/IOS
-
ARM/MIPS/Loongson/RISC-V/X86
-
MP4/FLV Recording
- AAC/H264
- AAC/H265(HEVC)
-
Qt/Flutter/Lvgl/Native
demo/metaplayer7_flutter
download: https://github.com/metartc/metaRTC/releases/tag/7.0.072 file:metartc7.072.linux.7z
demo/metaplayer7_lvgl
download: https://github.com/metartc/metaRTC/releases/tag/7.0.050 file:metartc7.062.linux.lvgl.7z
Implementation of webRTC protocol stack
AEC/ANS/AGC and other audio and video processing libraries
Realize audio and video collection, encoding, decoding, transmission, rendering, and push-pull streaming
To compile libmetartccore7, you'll need to satisfy the following dependencies:
OpenSSL or Mbedtls
libsrtp
usrsctp
int32_t err = Yang_Ok;
char* localSdp=NULL;
char* remoteSdp=NULL;
yangbool enableWhipWhep = yangtrue;
YangRtcDirection direction = YangSendonly;//YangSendrecv,YangSendonly,YangRecvonly
YangPeerConnection *peer = (YangPeerConnection*)yang_calloc(sizeof(YangPeerConnection),1);
yang_create_peerConnection(peer);
peer->addAudioTrack(&peer->peer,Yang_AED_OPUS);
peer->addVideoTrack(&peer->peer,Yang_VED_H264);
peer->addTransceiver(&peer->peer,direction);
//sfu server
if(enableWhipWhep)
err = peer->connectWhipWhepServer(&peer->peer,url);
else
err = peer->connectSfuServer(&peer->peer);
//p2p
peer->createDataChannel(&peer->peer);//add datachannel
if((err=peer->createOffer(&peer->peer, &localSdp))!=Yang_Ok){
yang_error("createOffer fail!");
goto cleanup;
}
if((err=peer->setLocalDescription(&peer->peer, localSdp))!=Yang_Ok){
yang_error("setLocalDescription fail!");
goto cleanup;
}
......
//get remote peer sdp
if((err=peer->setRemoteDescription(&peer->peer,remoteSdp))!=Yang_Ok){
yang_error("setRemoteDescription fail!");
goto cleanup;
}
微信号: taihang82
email: [email protected] [email protected]
twitter: metaRTC@metartc_sdk
./cmake_lib_x64.sh
./cmake_lib_android.sh
./cmake_mips32.sh
#arm64
./cmake_arm.sh
./cmake_x64.sh
#arm64-v8a armeabi x86_64
./cmake_android.sh
libmetartccore7/libmetartccore7.pro
libmetartc7/libmetartc7.pro
project_msvc/
libmetartccore7/libmetartccore7.pro
libmetartc7/libmetartc7.pro
project_xcode/
demo/metapushstream6/metapushstream7.pro
demo/metaplayer6/metaplayer7.pro
android studio ide(api:29)
demo/metapushstream7_android
demo/metaplayer7_android
https://github.com/metartc/metaRTC/wiki/metaRTC-streams-to-janus-via-the-whip-protocol
https://github.com/metartc/metaRTC/wiki/metaRTC-Learning
https://github.com/metartc/metaRTC/wiki/metaRTC-vs-webrtc
https://github.com/metartc/metaRTC/wiki/metaRTC-Features