Submit Search
Upload
C++からWebRTC (DataChannel)を利用する
•
3 likes
•
3,951 views
祐司 伊藤
Follow
WebRTC Meetup Tokyo #20
Read less
Read more
Internet
Report
Share
Report
Share
1 of 35
Download now
Download to read offline
Recommended
WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。
tnoho
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
祐司 伊藤
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
Recommended
WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。
tnoho
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
祐司 伊藤
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
MagicOnion入門
MagicOnion入門
torisoup
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
目grep入門 +解説
目grep入門 +解説
murachue
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
例外設計における大罪
例外設計における大罪
Takuto Wada
HTTPを理解する
HTTPを理解する
IIJ
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
Yusuke Naka
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile Web
Ariya Hidayat
[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래
NAVER D2
More Related Content
What's hot
MagicOnion入門
MagicOnion入門
torisoup
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
暁 三宅
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
目grep入門 +解説
目grep入門 +解説
murachue
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
TomomitsuKusaba
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
例外設計における大罪
例外設計における大罪
Takuto Wada
HTTPを理解する
HTTPを理解する
IIJ
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
Yusuke Naka
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
What's hot
(20)
MagicOnion入門
MagicOnion入門
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
react-scriptsはwebpackで何をしているのか
react-scriptsはwebpackで何をしているのか
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
目grep入門 +解説
目grep入門 +解説
Entity Framework(Core)についての概要を学ぼう
Entity Framework(Core)についての概要を学ぼう
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
例外設計における大罪
例外設計における大罪
HTTPを理解する
HTTPを理解する
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Similar to C++からWebRTC (DataChannel)を利用する
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile Web
Ariya Hidayat
[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래
NAVER D2
my accadanic project ppt
my accadanic project ppt
Manivel Thiruvengadam
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
Viktor Gamov
Mark Rendle ".NET Is Dead. Long Live .NET!"
Mark Rendle ".NET Is Dead. Long Live .NET!"
Fwdays
Nodejs and WebSockets
Nodejs and WebSockets
Gonzalo Ayuso
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS Application
Ben Hall
ICEfaces and JSF 2.0 on GlassFish
ICEfaces and JSF 2.0 on GlassFish
Eduardo Pelegri-Llopart
The HTML5 WebSocket API
The HTML5 WebSocket API
David Lindkvist
KSDG-iSlide App 開發心得分享
KSDG-iSlide App 開發心得分享
Chia Wei Tsai
Socket.io
Socket.io
Diego Pacheco
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
JooinK
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
Association Paris-Web
URL Design
URL Design
Walter Ebert
Direct Web Remoting : DWR
Direct Web Remoting : DWR
hussulinux
Csphtp1 20
Csphtp1 20
HUST
Mobile webapplication development
Mobile webapplication development
Ganesh Gembali
Similar to C++からWebRTC (DataChannel)を利用する
(20)
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile Web
[1C2]webrtc 개발, 현재와 미래
[1C2]webrtc 개발, 현재와 미래
my accadanic project ppt
my accadanic project ppt
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
Mark Rendle ".NET Is Dead. Long Live .NET!"
Mark Rendle ".NET Is Dead. Long Live .NET!"
Nodejs and WebSockets
Nodejs and WebSockets
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS Application
ICEfaces and JSF 2.0 on GlassFish
ICEfaces and JSF 2.0 on GlassFish
The HTML5 WebSocket API
The HTML5 WebSocket API
KSDG-iSlide App 開發心得分享
KSDG-iSlide App 開發心得分享
Socket.io
Socket.io
JooinK - DevFest Piemonte 2013
JooinK - DevFest Piemonte 2013
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
URL Design
URL Design
Direct Web Remoting : DWR
Direct Web Remoting : DWR
Csphtp1 20
Csphtp1 20
Mobile webapplication development
Mobile webapplication development
More from 祐司 伊藤
Container Storage Interface のすべて
Container Storage Interface のすべて
祐司 伊藤
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
祐司 伊藤
詳説WebAssembly
詳説WebAssembly
祐司 伊藤
シンプル Processing !
シンプル Processing !
祐司 伊藤
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
祐司 伊藤
PROCESS WARP
PROCESS WARP
祐司 伊藤
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
祐司 伊藤
PROCESS WARP
PROCESS WARP
祐司 伊藤
PIAXで作る P2Pネットワーク
PIAXで作る P2Pネットワーク
祐司 伊藤
新しい分散実行の仕組み PROCESS WARPについて
新しい分散実行の仕組み PROCESS WARPについて
祐司 伊藤
More from 祐司 伊藤
(10)
Container Storage Interface のすべて
Container Storage Interface のすべて
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
詳説WebAssembly
詳説WebAssembly
シンプル Processing !
シンプル Processing !
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
PROCESS WARP
PROCESS WARP
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
PROCESS WARP
PROCESS WARP
PIAXで作る P2Pネットワーク
PIAXで作る P2Pネットワーク
新しい分散実行の仕組み PROCESS WARPについて
新しい分散実行の仕組み PROCESS WARPについて
Recently uploaded
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
eusebiomeyer
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
miss dipika
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
zdzoqco
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Sonam Pathan
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
z xss
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
ys8omjxb
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
LinaWolf1
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
rnrncn29
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Sonam Pathan
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
rnrncn29
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
Paul Calvano
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
Dyna Gilbert
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
Marko4394
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
494f574xmv
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
editsforyah
Recently uploaded
(17)
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
C++からWebRTC (DataChannel)を利用する
1.
C++ WebRTC (DataChannel) / @llamerada_jp WebRTC
Meetup Tokyo #20
2.
SE / / GitHub :
llamerada-jp facebook : ito.yuuji twitter : @llamerada_jp blog : http://llamerad-jp.hatenablog.com/
3.
/ PROCESSWARP Web /
4.
/ www.oinari.app libvein Server
5.
/ libvein Web / 2 PubSub KVS Seed
/ Server
6.
Documents / https://webrtc.org/native-code/development/ & API code
reading WebRTC ( ) https://gist.github.com/szktty/ a47213f0077294c64ea58621c2dcfaf2 android iOS CUI WebRTC https://github.com/llamerada-jp/webrtc-cpp-sample WebRTC https://github.com/llamerada-jp/libwebrtc
7.
Native APIs
8.
WebRTC Native APIs
? WebView / Electron WebSocket iOS / Android (C++ ) WebRTC Native APIs API API
9.
WebRTC API (
) connect SDP ICE send data disconnect event change status recv data raise error
10.
libuv libuv main Thread rtc::Runnable Thread webrtc:: CreatePeerConnectionFactory rtc::Runnable::Run uv_loop uv_async_send
Event!
11.
libvein JavaScritp WebAssembly WebRTC/WebSocket API SDP /
ICE (Server / Seed ) libvein core (C++) WebSocket Wrapper WebRTC Wrapper Native WebRTC Browser WebRTC Browser WebSocket WebSocket++ C++ API C API Python JavaScript
12.
https://webrtc.org/native-code/development/ http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/ docs/html/depot_tools_tutorial.html
13.
$ cd <workdir> $
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $ export PATH=$PATH:`pwd`/depot_tools $ cd <workdir> $ mkdir webrtc-checkout $ cd webrtc-checkout $ fetch --nohooks webrtc $ gclient sync $ gn gen out/Default --args=‘is_debug=false’ $ ninja -C out/Default
14.
Chrome WebRTC
15.
@ WebRTC Σ( ω
)
16.
chromium URL https://omahaproxy.appspot.com/all OS stable branch_commit HASH
of chromium
17.
$ cd <workdir> $
git clone https://chromium.googlesource.com/chromium/src chromium $ cd chromium $ git show <HASH of chromium>:DEPS < > ‘src/third_party/webrtc': Var('webrtc_git') + '/src.git' + '@' + ‘784fccbd71c0130b32345d81459b5d0cb07ff6e5', < > HASH of webrtc
18.
< gclient sync
> $ git fetch $ git checkout <HASH of webrtc> $ gclient sync $ gn gen out/Default [--args='is_debug=false'] $ ninja -C out/Default [<target>]
19.
@ Linux static library(.a
) .o .a ar 1 .a src/out/Default/obj/examples/peerconnection_client.ninja build <target>: link <obj1> <obj2> … build ./peerconnection_client: link obj/examples/ peerconnection_client/conductor.o obj/examples/ peerconnection_client/defaults.o obj/examples/ peerconnection_client/peer_connection_client.o obj/ examples/peerconnection_client/main.o obj/examples/ peerconnection_client/main_wnd.o obj/api/video/ video_frame_i420/i420_buffer.o obj/rtc_base/checks/ checks.o obj/rtc_base/stringutils/string_to_number.o
20.
@ macOS obj/sdk/mac_framework_objc_shared_library/WebRTC obj/api/video_codecs/libbuiltin_video_encoder_factory.a obj/api/video_codecs/libbuiltin_video_decoder_factory.a src/out/Default/obj/sdk/mac_framework_objc_shared_library.ninja src/obj/api/video_codecs/libbuiltin_video_encoder_factory.a src/obj/api/video_codecs/libbuiltin_video_decoder_factory.a
21.
nm https://github.com/llamerada-jp/search- symbol chromium
22.
peerconnection_client https://github.com/llamerada-jp/webrtc-cpp-sample API JavaScript JavaScript C++
API
23.
PeerConnectionObserver class PCO :
public webrtc::PeerConnectionObserver { void OnSignalingChange(webrtc::PeerConnectionInterface::SignalingState new_state) override; void OnAddStream(rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override; void OnRemoveStream(rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) override; // DataChannel ! void OnDataChannel(rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) override; void OnRenegotiationNeeded() override; void OnIceConnectionChange(webrtc::PeerConnectionInterface::IceConnectionState new_state) override; void OnIceGatheringChange(webrtc::PeerConnectionInterface::IceGatheringState new_state) override; // ICE void OnIceCandidate(const webrtc::IceCandidateInterface* candidate) override; };
24.
DataChannelObserver class DCO :
public webrtc::DataChannelObserver { // void OnStateChange() override; // void OnMessage(const webrtc::DataBuffer& buffer) override; void OnBufferedAmountChange(uint64_t previous_amount) override; };
25.
SessionDescriptionObserver class CSDO :
public webrtc::CreateSessionDescriptionObserver { void OnSuccess(webrtc::SessionDescriptionInterface* desc) override; void OnFailure(const std::string& error) override; }; class SSDO : public webrtc::SetSessionDescriptionObserver { void OnSuccess() override; void OnFailure(const std::string& error) override; }; rtc::scoped_refptr<CSDO> csdo (new rtc::RefCountedObject<CSDO>()); rtc::scoped_refptr<SSDO> ssdo (new rtc::RefCountedObject<SSDO>());
26.
& CreatePeerConnectionFactory class CustomRunnable :
public rtc::Runnable { public: void Run(rtc::Thread* subthread) override { peer_connection_factory = webrtc::CreatePeerConnectionFactory( nullptr /* network_thread */, nullptr /* worker_thread */, nullptr /* signaling_thread */, nullptr /* default_adm */, webrtc::CreateBuiltinAudioEncoderFactory(), webrtc::CreateBuiltinAudioDecoderFactory(), webrtc::CreateBuiltinVideoEncoderFactory(), webrtc::CreateBuiltinVideoDecoderFactory(), nullptr /* audio_mixer */, nullptr /* audio_processing */); if (peer_connection_factory.get() == nullptr) { // Error } subthread->Run(); } };
27.
rtc::PhysicalSocketServer socket_server; thread.reset(new rtc::Thread(&socket_server)); rtc::InitializeSSL(); CustomRunnable
runnable; thread->Start(&runnable); < peer_connection_factory > peer_connection = peer_connection_factory->CreatePeerConnection(configuration, nullptr, nullptr, &pco); webrtc::DataChannelInit config; // DataChannel data_channel = peer_connection->CreateDataChannel("data_channel", &config); data_channel->RegisterObserver(&dco); peer_connection->CreateOffer(csdo, webrtc::PeerConnectionInterface::RTCOfferAnswerOptions());
28.
std::string message(“hello!!”,); webrtc::DataBuffer buffer( rtc::CopyOnWriteBuffer( message.c_str(), message.size()), true); data_channel->Send(buffer);
29.
class DCO :
public webrtc::DataChannelObserver { // void OnMessage(const webrtc::DataBuffer& buffer) override { std::cout << std::string(buffer.data.data<char>(), buffer.data.size()) << std::endl; } };
30.
// Close peer_connection->Close(); peer_connection
= nullptr; data_channel = nullptr; peer_connection_factory = nullptr; thread->Quit(); thread.reset(); rtc::CleanupSSL();
31.
macOS : WEBRTC_MAC=1
WEBRTC_POSIX=1 Linux : WEBRTC_LINUX=1 WEBRTC_POSIX=1 clang (libc++ ) -stdlib=libc++ C++ RTTI -fno-rtti typeinfo dynamic_cast --start-group --end-group
32.
$ clang++ -I<workdir/webrtc-checkout/src>
-I<workdir/webrtc-checkout/src/ third_party/abseil-cpp> -DWEBRTC_MAC=1 -DWEBRTC_POSIX=1 -std=c++11 -W -Wall - Wno-unused-parameter -O0 -g -fno-rtti -o <output> -o <source> (github ) build ./build.sh $ cd <path to build> $ make clean $ make VERBOSE=1
33.
OpenSSL BoringSSL API HTTP
WebSocket BoringSSL WebRTC Third party src/third_party
34.
WebRTC BSD src/third_party OSS WebRTC
35.
WebRTC C++
Download now