Pear - WebRTC Toolkit for IoT/Embedded Device

Overview

Pear - WebRTC Toolkit for IoT/Embedded Device

pear-ci

Pear is a WebRTC SDK written in C. The SDK aims to integrate IoT/Embedded device with WebRTC applications.

Notice: This project is a work in progress. Currently, only support streaming H264 video to browser.

Dependencies

Getting Started

# sudo apt -y install libglib2.0-dev libssl-dev git cmake ninja-build
# sudo pip3 install meson
# git clone --recursive https://github.com/sepfy/pear
# ./build-third-party.sh
# mkdir cmake
# cd cmake
# cmake ..
# make

Examples

This example is tested on Raspberry Pi zero W with image 2021-01-11-raspios-buster-armhf-lite.img

  1. Open index.html with browser in your computer
  2. Copy textarea content to remote_sdp.txt
  3. Download test video file
  4. Run local file sample. (Please ensure that remote_sdp.txt and test.264 in the same directory)
./cmake/examples/local_file/local_file
  1. Copy base64 sdp answer to browser.
  2. Click start session.

You will see the video on your browser.

Comments
  • PIPE LINE doesn't work well on VM ubuntu

    PIPE LINE doesn't work well on VM ubuntu

    Hello @sepfy !

    i run the example surveillance at my vm ubuntu. The "PIPE_LINE" doesn't work. i google some other command and still not work well. i don't familiar with gstreamer comand. could you provide an comand which can work well ?

    thanks Robert

    opened by robertqd 3
  • run local_file issues

    run local_file issues

    I don't know how to use the local_file example, and after running it, it prints the following:

    eyJ0eXBlIjogImFuc3dlciIsICJzZHAiOiAidj0wXHJcbm89LSAxNDk1Nzk5ODExMDg0OTcwIDE0OTU3OTk4MTEwODQ5NzAgSU4gSVA0IDAuMC4wLjBcclxucz1TdHJlYW1pbmcgVGVzdFxyXG50PTAgMFxyXG5hPWdyb3VwOkJVTkRMRSAwXHJcbmE9bXNpZC1zZW1hbnRpYzogcGVhclxyXG5tPXZpZGVvIDkgVURQL1RMUy9SVFAvU0FWUEYgMTAyXHJcbmM9SU4gSVA0IDAuMC4wLjBcclxuYT1zZW5kb25seVxyXG5hPW1pZDowXHJcbmE9cnRjcC1tdXhcclxuYT1pY2UtdWZyYWc6UXlGMVxyXG5hPWljZS1wd2Q6R3FVTHhHdTBLWU4yNGZtQk4xUVFEZ1xyXG5hPWljZS1vcHRpb25zOnRyaWNrbGVcclxuYT1maW5nZXJwcmludDpzaGEtMjU2IEE0OkU2Ojg4OkYzOjlBOkI2OjBFOkRFOkQ2OjM5Ojc5OkQxOjBEOjY5Ojc3OjAwOjc5OkE1OjE0OkFCOjczOkNEOkU3OjdCOjc0OkU4OkU2OjJDOjMzOkYwOjhEOjQ5XHJcbmE9c2V0dXA6cGFzc2l2ZVxyXG5hPXJ0cG1hcDoxMDIgSDI2NC85MDAwMFxyXG5hPWZtdHA6MTAyIHBhY2tldGl6YXRpb24tbW9kZT0xXHJcbmE9cnRjcC1mYjoxMDIgbmFja1xyXG5hPXJ0Y3AtZmI6MTAyIG5hY2sgcGxpXHJcbmE9cnRjcC1mYjoxMDIgZ29vZy1yZW1iXHJcbmE9Y2FuZGlkYXRlOjEgMSB1ZHAgMjAxNTM2MzMyNyAxMC4xMS4xNy4xNjcgMzM4MjAgdHlwIGhvc3RcclxuYT1jYW5kaWRhdGU6MiAxIHVkcCAxMDE1MDIxODIzIDEwLjExLjE3LjE2NyAwIHR5cCBob3N0XHJcbmE9Y2FuZGlkYXRlOjMgMSB1ZHAgMTAxMDgyNzUxOSAxMC4xMS4xNy4xNjcgNDIyMTUgdHlwIGhvc3RcclxuYT1jYW5kaWRhdGU6NyAxIHVkcCAxNjc5ODE5MDA3IDU4LjI1MC4yMy4xOTQgMzM4MjAgdHlwIHNyZmx4XHJcbmE9Y2FuZGlkYXRlOjggMSB1ZHAgODQ3MjQ5NjYzIDU4LjI1MC4yMy4xOTQgMCB0eXAgc3JmbHhcclxuYT1jYW5kaWRhdGU6OSAxIHVkcCA4NDMwNTUzNTkgNTguMjUwLjIzLjE5NCA0MjIxNSB0eXAgc3JmbHhcclxuIn0=

    ** (process:18272): WARNING **: 19:56:49.715: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 5 seconds

    ** (process:18272): WARNING **: 19:56:49.715: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 5 seconds

    ** (process:18272): WARNING **: 19:57:00.295: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 10 seconds

    ** (process:18272): WARNING **: 19:57:00.295: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 10 seconds

    ** (process:18272): WARNING **: 19:57:15.297: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 20 seconds

    ** (process:18272): WARNING **: 19:57:15.297: Failed to GET http://192.168.5.1:5500/rootDesc.xml: Could not connect: Socket I/O timed out, retrying in 20 seconds

    ** (process:18272): WARNING **: 19:57:40.297: Maximum number of retries failed, not trying again

    ** (process:18272): WARNING **: 19:57:40.297: Maximum number of retries failed, not trying again

    opened by lbit20131014-berry 3
  • Memory Leak on the gstreamer example

    Memory Leak on the gstreamer example

    When running the gstreamer example on a Pi Zero W , I noticed that the application was slowly but surely increasing it's memory usage, from around 7% as displayed on the top command, to around 70% when the PI crashed after 15 minutes or so. The fix is very simple, you need to unmap the gst buffer once you are done with it.

    I've opened a PR https://github.com/sepfy/pear/pull/9

    opened by icemanaf 1
  • fix crash due to misinitialization of PeerConnection

    fix crash due to misinitialization of PeerConnection

    If PeerConnection is not zeroed upon creation checking for its field to NULL is meaningless (as fields contain garbage) and leads to sigsegvs. For example this happens in peer_connection_ice_recv_cb:

        if(pc->ontrack != NULL) {
          pc->ontrack(buf, len, pc->ontrack_userdata);
        }
    

    This PR contains hotfix for this problem.

    opened by aldoshkind 0
  • docs: fix simple typo, exhange -> exchange

    docs: fix simple typo, exhange -> exchange

    There is a small typo in README.md.

    Should read exchange rather than exhange.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 0
  • The P2P can be established, but the video and audio not display on chrome browse (despite fixing 102 h264 codecs)

    The P2P can be established, but the video and audio not display on chrome browse (despite fixing 102 h264 codecs)

    Hi @sepfy @aldoshkind @icemanaf @timgates42 could you help me ?. Your help will help me a lot at this time.

    I successfully run video on demand example but with surveillance and home_camera examples I can't play video and audio on chorme. The P2P has been established. we can see the data can be sent from device to chrome from wireshark but the video and audio doesn't display on chrome. Even though The P2P has been established. I can see the data can be sent from device to chrome from wireshark but the video and audio doesn't display on chrome. (I fixed h264 codec to 102). (In home_camera, I only see audio data).

    • Chrome version: 107.0.5304.110 (Official Build) (64-bit).
    • I run code on Ubuntu 20.04.5 LTS.

    This is SDP Offer when I run Home_camera example:

    v=0 (6 more lines) o=- 499682685197050615 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 a=extmap-allow-mixed a=msid-semantic: WMS m=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126 (34 more lines) mid=0 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:f++w a=ice-pwd:pJSBZ8xFxWCG1p5Ue4IZDCdL a=ice-options:trickle a=fingerprint:sha-256 AB:5A:07:9C:72:2E:EB:C0:2B:04:39:C5:FC:AA:37:3C:BF:A3:C6:63:45:E0:11:4D:7E:0D:B7:B6:42:64:B0:B7 a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=sendrecv a=msid:- c945ed4d-d989-41c0-b5f8-ca4369406ee7 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 a=ssrc:1238015745 cname:LFwx9XZ3VFIUxAJx a=ssrc:1238015745 msid:- c945ed4d-d989-41c0-b5f8-ca4369406ee7 m=video 9 UDP/TLS/RTP/SAVPF 96 97 102 123 127 122 125 107 108 109 124 121 39 40 45 46 98 99 100 101 120 119 114 (120 more lines) mid=1 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:f++w a=ice-pwd:pJSBZ8xFxWCG1p5Ue4IZDCdL a=ice-options:trickle a=fingerprint:sha-256 AB:5A:07:9C:72:2E:EB:C0:2B:04:39:C5:FC:AA:37:3C:BF:A3:C6:63:45:E0:11:4D:7E:0D:B7:B6:42:64:B0:B7 a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:13 urn:3gpp:video-orientation a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=sendrecv a=msid:- e07a6190-2e38-4c89-a2a6-123a7ddec806 a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:123 rtx/90000 a=fmtp:123 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:122 rtx/90000 a=fmtp:122 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:108 H264/90000 a=rtcp-fb:108 goog-remb a=rtcp-fb:108 transport-cc a=rtcp-fb:108 ccm fir a=rtcp-fb:108 nack a=rtcp-fb:108 nack pli a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:109 rtx/90000 a=fmtp:109 apt=108 a=rtpmap:124 H264/90000 a=rtcp-fb:124 goog-remb a=rtcp-fb:124 transport-cc a=rtcp-fb:124 ccm fir a=rtcp-fb:124 nack a=rtcp-fb:124 nack pli a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=124 a=rtpmap:39 H264/90000 a=rtcp-fb:39 goog-remb a=rtcp-fb:39 transport-cc a=rtcp-fb:39 ccm fir a=rtcp-fb:39 nack a=rtcp-fb:39 nack pli a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f a=rtpmap:40 rtx/90000 a=fmtp:40 apt=39 a=rtpmap:45 AV1/90000 a=rtcp-fb:45 goog-remb a=rtcp-fb:45 transport-cc a=rtcp-fb:45 ccm fir a=rtcp-fb:45 nack a=rtcp-fb:45 nack pli a=rtpmap:46 rtx/90000 a=fmtp:46 apt=45 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:120 red/90000 a=rtpmap:119 rtx/90000 a=fmtp:119 apt=120 a=rtpmap:114 ulpfec/90000 a=ssrc-group:FID 2552703379 1944201314 a=ssrc:2552703379 cname:LFwx9XZ3VFIUxAJx a=ssrc:2552703379 msid:- e07a6190-2e38-4c89-a2a6-123a7ddec806 a=ssrc:1944201314 cname:LFwx9XZ3VFIUxAJx a=ssrc:1944201314 msid:- e07a6190-2e38-4c89-a2a6-123a7ddec806

    This is SDP Answer when I run Home_camera example:

    v=0 (5 more lines) o=- 2023662770 2023662770 IN IP4 0.0.0.0 s=- t=0 0 a=msid-semantic: WMS a=group:BUNDLE 0 1 m=audio 9 UDP/TLS/RTP/SAVP 8 (17 more lines) mid=0 a=rtpmap:8 PCMA/8000 a=ssrc:2 cname:pear c=IN IP4 0.0.0.0 a=sendrecv a=mid:0 a=rtcp-mux a=ice-ufrag:5iV9 a=ice-pwd:iS1uFIj3df0oUBVG2HUcsF a=ice-options:trickle a=fingerprint:sha-256 87:EC:85:7F:EA:36:C4:40:59:DE:40:BD:EE:D0:46:31:51:20:A5:78:97:7B:32:8E:70:DD:04:F6:38:DE:3B:A5 a=setup:passive a=candidate:1 1 udp 2015363327 192.168.50.154 38159 typ host a=candidate:2 1 udp 1015021823 192.168.50.154 0 typ host a=candidate:3 1 udp 1010827519 192.168.50.154 49283 typ host a=candidate:7 1 udp 1679819007 116.104.141.202 5572 typ host a=candidate:8 1 udp 847249663 116.104.141.202 0 typ host a=candidate:9 1 udp 843055359 116.104.141.202 49283 typ host m=video 9 UDP/TLS/RTP/SAVPF 96 102 (23 more lines) mid=1 a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:96 profile-level-id=42e01f;level-asymmetry-allowed=1 a=fmtp:102 profile-level-id=42e01f;packetization-mode=1;level-asymmetry-allowed=1 a=fmtp:102 x-google-max-bitrate=6000;x-google-min-bitrate=2000;x-google-start-bitrate=4000 a=rtpmap:96 H264/90000 a=rtpmap:102 H264/90000 a=ssrc:1 cname:pear c=IN IP4 0.0.0.0 a=sendrecv a=mid:1 a=rtcp-mux a=ice-ufrag:5iV9 a=ice-pwd:iS1uFIj3df0oUBVG2HUcsF a=ice-options:trickle a=fingerprint:sha-256 87:EC:85:7F:EA:36:C4:40:59:DE:40:BD:EE:D0:46:31:51:20:A5:78:97:7B:32:8E:70:DD:04:F6:38:DE:3B:A5 a=setup:passive a=candidate:1 1 udp 2015363327 192.168.50.154 38159 typ host a=candidate:2 1 udp 1015021823 192.168.50.154 0 typ host a=candidate:3 1 udp 1010827519 192.168.50.154 49283 typ host a=candidate:7 1 udp 1679819007 116.104.141.202 5572 typ host a=candidate:8 1 udp 847249663 116.104.141.202 0 typ host a=candidate:9 1 udp 843055359 116.104.141.202 49283 typ host

    Stats Table

    image

    opened by caoluong2k 0
  • Segmentation fault (core dumped)

    Segmentation fault (core dumped)

    Hello @sepfy, i often got an error: Segmentation fault (core dumped). Do you know the reason why? Thanks you verymuch.

    [INFO /home/dell/Documents/pear_19_12/src/signaling.c:21] Signaling Create [INFO /home/dell/Documents/pear_19_12/examples/video_on_demand/main.c:193] ---------------> Create signaling service success [INFO /home/dell/Documents/pear_19_12/src/signaling.c:60] Signaling dispatch Segmentation fault (core dumped)

    opened by caoluong2k 0
  • Documention Improvements

    Documention Improvements

    Documentation ( If Missing libraries and tools )

    1. CMake >3.17 needed for meson wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' sudo apt-get update sudo apt install cmake sudo apt install cmake-curses-gui # Recommended, includes ccmake.

    2. While running ./build-third-party.sh

    While compiling add missing lib/headers sudo apt-get install -y gnutls-bin libgupnp-igd-1.0-dev libgirepository1.0-dev libgnutls.*-dev

    1. In Get Started add "cd pear" step git clone --recursive https://github.com/sepfy/pear cd pear ./build-third-party.sh
    opened by cloudties 0
  • Running Surveillance Example on Pi3

    Running Surveillance Example on Pi3

    Hi Sepfy, I started of with video on demand , got that to work just after the change was made to the h264_packetizer.c(102 --> 127) . After I went through the issue list.

    Now trying the Surveillance example . I am using a C270 Logitech camera connected over USB:

    This below are supported formats of camera: ioctl: VIDIOC_ENUM_FMT Type: Video Capture

        [0]: 'YUYV' (YUYV 4:2:2)
        [1]: 'MJPG' (Motion-JPEG, compressed)
    

    The gstream pipeleine setting I use is this: const char PIPE_LINE[] = "v4l2src device=/dev/video0 ! videoconvert ! video/-raw,width=544,height=288,framerate=10/1 ! v4l2h264enc ! h264parse ! mp4mux ! appsink name=peer-connection-sink";

    Just to very above setting work fine dumped stream to mp4 file and it plays back just fine like so: gst-launch-1.0 -e v4l2src device=/dev/video0 ! videoconvert ! video/-raw,width=544,height=288,framerate=10/1 ! v4l2h264enc ! h264parse ! mp4mux ! filesink location=video.mp4

    My problem now is when i run the sample I keep getting this error

    ./examples/surveillance/surveillance Get offer from singaling [INFO /home/pi/myApp/pear/src/dtls_transport.c:291] Remote fingerprint E1:24:F6:04:0E:80:B2:04:AE:3C:6C:18:1B:CD:48:63:A3:97:82:A1:DC:78:C5:E3:07:6B:70:E3:DA:8D:70:03 [INFO /home/pi/myApp/pear/src/dtls_transport.c:292] Local fingerprint 3C:7D:45:8A:DE:52:26:07:49:89:58:B4:8E:B9:E6:44:5E:CD:D4:60:88:4E:32:ED:9B:5C:8D:0C:FD:62:6C:BA [INFO /home/pi/myApp/pear/src/dtls_transport.c:331] Created inbound SRTP session [INFO /home/pi/myApp/pear/src/dtls_transport.c:337] Created outbound SRTP session

    (surveillance:1510): GLib-GObject-CRITICAL **: 20:26:01.074: g_object_set: assertion 'G_IS_OBJECT (object)' failed

    Any hints!!!!

    opened by Vishal5757 1
Owner
null
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

ossrs 20.4k Jan 5, 2023
webrtc c++ library for mediasoup with full sfu c++ demo

项目说明: 本项目是基于mediasoup v3 版本 webrtc m84版本 的sfu的js版本修改成的c++版本,支持和js版本一样的完整demo功能,但是本项目是直接把worker进程代码集成 到了demo可以直接代码级别的调用,支持VC2019,xcode,CLion的开发环境,可以直接断

null 119 Dec 20, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 331 Dec 27, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 139 Jun 30, 2022
Yangwebrtc - Webrtc Libary for PC, non-google lib

MetaRTC(yangwebrtc) Overview MetaRTC(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 yangwebrtc为PC版本 metaRTC为嵌入式版本 https://github.com/metar

meta 331 Dec 27, 2022
Enabling services on your device 81 Jan 6, 2023
Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Overview This project aims to be a convenient location for WebRTC library developers to perform interoperability tests. Who can Participate The projec

Aaron Clauson 106 Dec 18, 2022
OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

AirenSoft 1.8k Jan 8, 2023
Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.

Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.

Espressif Systems 1.4k Jan 7, 2023
IoT for Beginners - 12 Weeks, 24 Lessons, IoT for All!

Azure Cloud Advocates at Microsoft are pleased to offer a 12-week, 24-lesson curriculum all about IoT basics. Each lesson includes pre- and post-lesson quizzes, written instructions to complete the lesson, a solution, an assignment and more. Our project-based pedagogy allows you to learn while building, a proven way for new skills to 'stick'.

Microsoft 11.5k Jan 2, 2023
Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally

Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally. The camera on the front of the car can also be monitored globally. It can go anywhere where sim connection is available. 5th Sem Mini project

Rahul Vijan 6 Dec 3, 2022
Hyelicht is an IoT/embedded project for home decoration/automation.

Hyelicht is an IoT/embedded project for home decoration/automation. Its software allows you to do colorful painting and animations on a LED-b

Eike Hein 107 Dec 23, 2022
BMI_automatics-faceshielding-device - this is a project utilizing STM32, MATLAB,Softmax classifier to achieve a portable face shielding(mask) device

BMI_automatics-faceshielding-device this is a project utilizing STM32, MATLAB,Softmax classifier to achieve a portable face shielding(mask) device in

Lyu Tian 2 Dec 23, 2021
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

ossrs 20.4k Jan 5, 2023
webrtc c++ library for mediasoup with full sfu c++ demo

项目说明: 本项目是基于mediasoup v3 版本 webrtc m84版本 的sfu的js版本修改成的c++版本,支持和js版本一样的完整demo功能,但是本项目是直接把worker进程代码集成 到了demo可以直接代码级别的调用,支持VC2019,xcode,CLion的开发环境,可以直接断

null 119 Dec 20, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 331 Dec 27, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 139 Jun 30, 2022
Share PC desktop to Raspberry Pi with WebRTC

Share PC desktop to Raspberry Pi with WebRTC

null 31 Nov 9, 2022
Yangwebrtc - Webrtc Libary for PC, non-google lib

MetaRTC(yangwebrtc) Overview MetaRTC(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 yangwebrtc为PC版本 metaRTC为嵌入式版本 https://github.com/metar

meta 331 Dec 27, 2022
Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit

CNTK Chat Windows build status Linux build status The Microsoft Cognitive Toolkit (https://cntk.ai) is a unified deep learning toolkit that describes

Microsoft 17.3k Dec 23, 2022