WebRTC调研

WebRTC是什么,为什么,如何使用

WebRTC有什么优势

WebRTC Architecture

Amazon KVS WebRTC

其它厂商WebRTC

海康门禁WebRTC

海康门禁其他界面整理

威视通WebRTC

局域网

Google浏览器

Microsoft Edge

公网

RTSP

RTMP

NVR

ONVIF

SIP

SRT

WebRTC协议栈的寻找

mongoose + kvs(amazon-kinesis-video-streams-webrtc-sdk-c)

局域网(Web端本地预览需要支持信令交互)

Web端:adapter.js,adapter.min.js,demo.css,jquery-3.0.0.min.js,index.html

设备端:信令服务器设备端web server实现,需要支持WebRTC信令交互(局域网)

STUN server:stun:stun.kinesisvideo.us-west-2.amazonaws.com:443

​ stun:stun.kinesisvideo.ap-east-1.amazonaws.com:443

公网(将信令服务器搭建在公网)

远程访问(米家,海康,TUTK,涂鸦)

信令服务器

PEERJS:https://peerjs.com/

Saltyrtc:https://github.com/saltyrtc

设备支持webrtc

1.音/视频流 不使用链表,使用共享内存(单生产者->多消费者,webrtc、webs、rtsp、rtmp、SIP、nvr、flv、http)

2.kvswebrtc协议栈(https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c),设备实现webrtc交互过程,实现信令交互服务

3.web/客户端/设备支持webrtc

4.信令服务器设计(局域网/互联网,STUN,TURN服务,ICE服务)

其他

编译libwebsocket

复制代码
git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets/
git checkout v4.3.3
git apply --verbose --ignore-whitespace /root/amazon-kinesis-video-streams-webrtc-sdk-c/CMake/Dependencies/libwebsockets-old-gcc-fix-cast-cmakelists.patch

cmake -DCMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc -DCMAKE_CXX_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++ -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_C_FLAGS="-fPIC" -DLWS_WITH_HTTP2=1 -DLWS_HAVE_HMAC_CTX_new=1 -DLWS_HAVE_SSL_EXTRA_CHAIN_CERTS=1 -DLWS_HAVE_OPENSSL_ECDH_H=1 -DLWS_HAVE_EVP_MD_CTX_free=1 -DLWS_WITHOUT_SERVER=1 -DLWS_WITHOUT_TESTAPPS=1 -DLWS_WITHOUT_TEST_SERVER_EXTPOLL=1 -DLWS_WITHOUT_TEST_PING=1 -DLWS_WITHOUT_TEST_CLIENT=1 -DLWS_STATIC_PIC=1 -DLWS_WITH_STATIC=1 -DLWS_WITH_SHARED=0 -DLWS_WITH_MBEDTLS=OFF -DLWS_WITH_MINIMAL_EXAMPLES=1 -DLWS_HAVE_PTHREAD_H=1 -DLWS_WITH_THREADPOOL=0 -DLWS_WITH_ZLIB=0 -DLWS_HAVE_EVENTFD=0 -DLWS_OPENSSL_INCLUDE_DIRS="/root/temp/arm_build/openssl/include/" -DLWS_OPENSSL_LIBRARIES="/root/temp/arm_build/openssl/lib/libssl.so;/root/temp/arm_build/openssl/lib/libcrypto.so" ..
make
make install

编译kvswebrtc

复制代码
安装库
sudo apt-get install cmake m4 pkg-config libssl-dev libcurl4-openssl-dev liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-tools 

git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git
mkdir -p amazon-kinesis-video-streams-webrtc-sdk-c/build; cd amazon-kinesis-video-streams-webrtc-sdk-c/build; cmake ..
make

kvswebrtc运行实例

复制代码
export AWS_ACCESS_KEY_ID=AKIAZIIT3K7LWLLXU3UH
export AWS_SECRET_ACCESS_KEY=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
export AWS_KVS_LOG_LEVEL=LOG_LEVEL_DEBUG
export DEBUG_LOG_SDP=TRUE
export AWS_DEFAULT_REGION=us-east-1

./kvsWebrtcClientMasterGstSample demo-webrtc-channel

./kvsWebrtcClientMaster demo-webrtc-channel

参考链接

https://webrtc.github.io/webrtc-org/architecture/

参考文档

amazon-kvs.pdf

amazon-kvs-builds-the-visual-ecology-of-Iot.pdf