SlideShare une entreprise Scribd logo
1  sur  11
H.264で相互接続
2016/05/17
WebRTC meet up #10
@higed
自己紹介
• Twitter:@higed
• JavaScript/Python
• Node.jsでサーバを書きます
• 最近はSeleniumをやっています
• アーキテクチャやノウハウについて,情報交換できると嬉しいです
• 低レイヤを勉強中です
Firefox46 SDP
v=0
o=mozilla...THIS_IS_SDPARTA-46.0.1
6924584915519705408 0 IN IP4 0.0.0.0
m=video 50515 UDP/TLS/RTP/SAVPF 120 126
97
a=fmtp:126 profile-level-id=42e01f;level-
asymmetry-allowed=1;packetization-mode=1
a=fmtp:97 profile-level-id=42e01f;level-
asymmetry-allowed=1
…
a=rtpmap:126 H264/90000
a=rtpmap:97 H264/90000
話すこと
WebRTC手動シグナリング(SDP+ICE), https://lab.infocom.co.jp/demo/webrtc-hand-signaling-easy.html
• H.264で異なるデバイス同士を相互接続
するための解説
• 相互接続=異なる機器同士で通信が
できること
• WebRTCのSDPでいうと,media
type=videoの部分にあたります
• 扱わないこと
• audio,STUN,SDPの詳細
media type = video
media format = H.264
何で相互接続の話?
• H.264が共通コーデックになりつつある
• Chrome M52 => H.264
• Firefox 46 => H.264
• MS Edge => H.264/UC
• 先行するFF/Chromeは相互接続に着手
https://bugs.chromium.org/p/chromium/issues/detail?id=543540
いつ,困るのか?
• 全てのデバイスが同じ実装のコーデッ
クとは限らない
• ネイティブアプリと繋ぐとき
• 会議をMCU/SFUで録画するとき
• テレビ会議専用端末と繋ぐ
• 標準が切り分けの手がかりになること
がある
MCU/
SFU
Videoコーデックは何が決まれば良いの
か• エンコーダ+Packetizer
→符号とパケットは密結合
• Videoに必要なパラメータ
• コーデック,解像度,
ビットレート,帯域,etc…
• 視聴側能力に合わせる
Video
配信側 視聴側
Video
packetizer
Video
encoder
Send
UDP
Receive
UDP
Video de-
packetizer
Video
decoder
http://www.callstats.io/2015/10/30/error-resilience-
mechanisms-webrtc-video/
RFC6184
• ITU-Tと連携したIETFドラフト
• H.264のRTPにおけるフォーマットを規
定する
• SVC/MVCは除く
• Offer/AnswerのSDPを突き合わせると
分かることも https://tools.ietf.org/html/rfc6184
a=fmtp:126 profile-level-id=42e01f;level-asymmetry-
allowed=1;packetization-mode=1
a=fmtp:97 profile-level-id=42e01f;level-asymmetry-
allowed=1
SDPでやり取りする
media formatが分かる
Firefox46 SDP
a=fmtp:126 profile-level-id=42e01f;level-
asymmetry-allowed=1;packetization-mode=1
a=fmtp:97 profile-level-id=42e01f;level-
asymmetry-allowed=1
profile-leve-id
0x42(66) :profile_idc…BaseLine Profile
0xe0:profile_iop…互換性フラグ
0x1f(31) :level_idc…Level 3.1(1280x720)
→BP@L3.1 でBP,MP,HPで復号可能
• Profile デコーダの能力+フォーマット
アプリケーションに応じた機能群
・BaseLineProfile:テレビ会議,携帯電話向け
・基本ツール+エラー耐性
・Iスライス,Pスライス
• Level 画像サイズとビットレート
L1:QCIF,L2:CIF,L3:SDTV,
L4:HDTV,L5:4K,L6:8K
→整数部でサイズを規定
Firefox46 SDP
a=fmtp:126 profile-level-id=42e01f;level-
asymmetry-allowed=1;packetization-mode=1
a=fmtp:97 profile-level-id=42e01f;level-
asymmetry-allowed=1
packetization-mode
• packetization-mode
• ビデオストリームをパケット化する
,NAL(Network Abstraction Layer)の
モードを表す.
• モードに応じてサポートするPayload
Typeは変わる.
asymmetry-allows
1…Offer/Answerで異なるLevelの仕様を許可
packetization-mode
0…(MUST)Single NALモード専用
1…(SHOULD)非インタリーブモード(Single NAL, FU-Aなど)
まとめ
• H.264は当面,主要ブラウザにおける共通コーデックとなりそうです
• ネイティブアプリ/サーバもH.264で繋ぐ場合,開発者同士で問題を解決
が必要な場合があります
• 解決するための基準として,IETF標準が役に立つことがあります
参考:Chrome SDP(抜粋)
Chrome canary M52
m=video 54173 UDP/TLS/RTP/SAVPF 100 101 107 116
117 96 97 99 98
a=rtpmap:100 VP8/90000
a=rtpmap:101 VP9/90000
a=rtpmap:107 H264/90000
a=fmtp:107 level-asymmetry-allowed=1;packetization-
mode=1;profile-level-id=42e01f

Contenu connexe

Tendances

すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
 

Tendances (20)

実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
Planet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: BigdamPlanet-scale Data Ingestion Pipeline: Bigdam
Planet-scale Data Ingestion Pipeline: Bigdam
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。 WebRTC と Native とそれから、それから。
WebRTC と Native とそれから、それから。
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 

Similaire à H.264で相互接続 - WebRTC Meetup Tokyo #10

httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
shigeki_ohtsu
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
 
NAT配下からIPv6でアクセスするEzoScapeはTeredo通信だった
NAT配下からIPv6でアクセスするEzoScapeはTeredo通信だったNAT配下からIPv6でアクセスするEzoScapeはTeredo通信だった
NAT配下からIPv6でアクセスするEzoScapeはTeredo通信だった
Shinichi Hirauchi
 

Similaire à H.264で相互接続 - WebRTC Meetup Tokyo #10 (20)

HTTP/2.0と標準化
HTTP/2.0と標準化HTTP/2.0と標準化
HTTP/2.0と標準化
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
Webrtc bootcamp handson
Webrtc bootcamp handsonWebrtc bootcamp handson
Webrtc bootcamp handson
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
 
How to apt-get from the internal network: remote sshd with kneesocks
How to apt-get from the internal network: remote sshd with kneesocksHow to apt-get from the internal network: remote sshd with kneesocks
How to apt-get from the internal network: remote sshd with kneesocks
 
Ietf97 ソウル報告
Ietf97 ソウル報告Ietf97 ソウル報告
Ietf97 ソウル報告
 
RasPiからSEILにL2TP/IPSec接続
RasPiからSEILにL2TP/IPSec接続RasPiからSEILにL2TP/IPSec接続
RasPiからSEILにL2TP/IPSec接続
 
Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo Status 425 HTTP/Tokyo
Status 425 HTTP/Tokyo
 
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
 
ShowNetにおけるバックボーン設計と運用について語る_ShowNet2021_conf_mini_3_sr-based_backbone
ShowNetにおけるバックボーン設計と運用について語る_ShowNet2021_conf_mini_3_sr-based_backboneShowNetにおけるバックボーン設計と運用について語る_ShowNet2021_conf_mini_3_sr-based_backbone
ShowNetにおけるバックボーン設計と運用について語る_ShowNet2021_conf_mini_3_sr-based_backbone
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
ブラウザでWebRTC - iOSゲートウェイ作ってみた
ブラウザでWebRTC - iOSゲートウェイ作ってみたブラウザでWebRTC - iOSゲートウェイ作ってみた
ブラウザでWebRTC - iOSゲートウェイ作ってみた
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
 
QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7QUIC標準化動向 〜2017/7
QUIC標準化動向 〜2017/7
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
NAT配下からIPv6でアクセスするEzoScapeはTeredo通信だった
NAT配下からIPv6でアクセスするEzoScapeはTeredo通信だったNAT配下からIPv6でアクセスするEzoScapeはTeredo通信だった
NAT配下からIPv6でアクセスするEzoScapeはTeredo通信だった
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
 

Dernier

Dernier (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

H.264で相互接続 - WebRTC Meetup Tokyo #10