SlideShare a Scribd company logo
1
新しい映像伝送プロトコル
SRT を試す
( 増強版 )
Tetsuyuki Kobayashi
2018.8.31 Streaming Conference #4
2
 The latest version of this slide will
be available from here
 http://www.slideshare.net/tetsu.koba/presentati
ons
3
Who am I?
 20+ years involved in embedded systems
 10 years in real time OS, such as iTRON
 10 years in embedded Java Virtual Machine
 Now GCC, Linux, QEMU, Android, …
 Blogs
 https://qiita.com/tetsu_koba
 http://d.hatena.ne.jp/embedded/
 http://kobablog.wordpress.com/(English)
 Twitter
 @tetsu_koba
4
本日のメニュー
 基礎編
 実践編
 総括 (& 感想 )
時間切れになりそうだったら途中を飛ばします
基礎編
SRT とは
 S: Secure
 R: Reliable
 T: Transport

 SRT という字幕のフォーマットがす
でにあるので、検索しにくい
SRT とは
 UDP ベースのプロトコル
 映像 (+ 音声 ) のライブ配信用
 RTMP の後釜?
 H.265(HEVC) 対応
SRT Alliance
 https://www.srtalliance.org/
 業界団体
 Haivision ( 開発元 )
 Wowza Media System
 デモビデオがわかりやすい
オープンソース
 Github でソース公開
 https://github.com/Haivision/srt
 ライセンスは MPL-2.0
 libsrtのビルド方法(Qiita)
SRT のしくみ
https://github.com/Haivision/srt/blob/master/docs/why-srt-was-created.md
動作モード
 caller (= client)
 listener (= server)
 ひとつの listener に複数の caller が
接続可能
 rendezvous ( ランデブー )
 1 対 1
payload
 基本的にはなんでもよいが、パケット
ロスを想定しているものが望ましい
 mpegts
 188 *7 = 1316 bytes の UDP パケッ
トで送る
 video: H.264, H.265, ...
 audio: AAC, opus, ...
SRT を使うには
 ffmpeg
 gstreamer
 VLC
ffmpeg
 v4.0 で SRT をサポート
 しかしバグ?ソース修正必要
 ビルド方法(Qiita)
 修正パッチ
 listener mode で接続できる caller
はひとつだけ。
gstreamer
 v1.14.0 で SRT をサポート
 ビルド方法(Qiita)
 v1.12.x へのバックポートの方法(Qiita)
 listener mode で複数の caller と接続
できる。
 バグ? uri でのホストの指定は IP アドレスを直接書く
必要がある。ホスト名を解決してくれない
srt://ipaddr:port
VLC
 v3.0 で SRT をサポート
 ただし caller mode のみ
 Mac 用、 Windows 用のバイナリ
リリースのものは SRT 使用可。
 Ubuntu 18.04 に入っている VLC は SRT
が有効になっていなかった。
実践編
実際に動かしてみた例
SRTを使ってWebcamの映像を送ってみる
SRT の latency の設定
 推奨値は RTT(Round Trip Time: ping コ
マンドで計測できる ) の 2.5 倍
 デフォルトで 120ms
 RTT が 50ms 未満ならデフォル
トのままで。
 今回は送信側がモバイル回線
 RTT が 120ms -> latency を 300ms に。
中継サーバ
#!/bin/sh
RECVLATENCY=300
gst-launch-1.0 
srtserversrc uri="srt://:7001" latency=$RECVLATENCY 
! srtserversink uri="srt://:7002"
受信するクライアントは複数接続できる。
送信側
#!/bin/sh
HOST=i3
PORT=7001
BITRATE=2M
ffmpeg -f v4l2 -s 640x360 -i /dev/video0 -pix_fmt nv12 
-c:v libopenh264 
-b:v $BITRATE 
-f mpegts srt://$HOST:$PORT
受信側
#!/bin/sh
ffplay -probesize 32 srt://i3:7002
-probesize 32  をつけるとバッファサイズが小さくなり
表示の遅延が減る。
または、 VLC で srt://i3:7002 を開く。
総括 (& 感想 )
SRT を試してみて
 組み込むのは容易
 ライブラリの依存性は少ない
 ネットワークの構成変更が容易
 送信側と受信側でどちらもサーバにな
れる
 パケット再送してくれる
 モバイル回線に向いていそう
 暗号化通信もできる
 H.265, opus もいける
SRT を使うなら
 見るだけなら、 VLC
 手軽なのは ffmpeg
 凝ったことをするときは
gstreamer
 srtclientsrc
 srtserversrc
 srtclientsink
 srtserversink
低遅延のストリーミングは大変
 全行程のチューニングが必要
 バッファが大きすぎると遅延する
が、少なすぎると途切れる
 どこの遅延が大きいかを調べて
行ったら、最後の viewer ( デコー
ドして表示するところ ) で大きく
バッファリングしてた。
References
 https://www.srtalliance.org/
 https://github.com/Haivision/srt
 https://qiita.com/tags/srt
28
Q & A
@tetsu_koba
Thank you for listening!

More Related Content

PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PPTX
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
PPTX
本当は恐ろしい分散システムの話
PDF
ゼロからはじめるKVM超入門
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
About GStreamer 1.0 application development for beginners
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
CDNの仕組み(JANOG36)
ネットワーク ゲームにおけるTCPとUDPの使い分け
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
本当は恐ろしい分散システムの話
ゼロからはじめるKVM超入門
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
About GStreamer 1.0 application development for beginners
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CDNの仕組み(JANOG36)

What's hot (20)

PDF
ゲームサーバ開発現場の考え方
PDF
BuildKitの概要と最近の機能
PDF
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
PDF
GPU仮想化最前線 - KVMGTとvirtio-gpu -
PDF
大規模DCのネットワークデザイン
PDF
wakamonog6 インターネットの裏側の仕組み
PDF
年の瀬リアルタイム通信サーバ勉強会
PDF
Protocol Buffers 入門
PDF
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
PPTX
FRESH LIVEへのSRT導入
PDF
ABEMA の視聴品質向上戦術
PPTX
FD.io VPP事始め
PPTX
Gstreamer Basics
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
PPTX
Slurmのジョブスケジューリングと実装
PDF
Kongの概要と導入事例
PDF
ネットワークでなぜ遅延が生じるのか
PDF
より高品質なメディアサービスを目指す ABEMA の技術進化
PPTX
コンテナネットワーキング(CNI)最前線
PDF
レシピの作り方入門
ゲームサーバ開発現場の考え方
BuildKitの概要と最近の機能
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
GPU仮想化最前線 - KVMGTとvirtio-gpu -
大規模DCのネットワークデザイン
wakamonog6 インターネットの裏側の仕組み
年の瀬リアルタイム通信サーバ勉強会
Protocol Buffers 入門
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
FRESH LIVEへのSRT導入
ABEMA の視聴品質向上戦術
FD.io VPP事始め
Gstreamer Basics
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
Slurmのジョブスケジューリングと実装
Kongの概要と導入事例
ネットワークでなぜ遅延が生じるのか
より高品質なメディアサービスを目指す ABEMA の技術進化
コンテナネットワーキング(CNI)最前線
レシピの作り方入門
Ad

Similar to Try new transport protocol SRT (ver. 2) (19)

PDF
Try new transport protocol SRT
PDF
20130329 rtm3
PDF
Let's begin WebRTC
PPTX
WebRTC on Native App
PDF
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
PPTX
WebRTC SFU Mediasoup Sample update
PDF
ROBOMECH2021 RTMオンライン講習会 第1部
PDF
Rtミドルウェア講習会 第2部資料
PDF
自由ソフトウェアによるライブストリーミング
PDF
20130329 rtm2
PPTX
ORTCの仕様書をざっくり斜め読みする
PPTX
WebRTC SFU mediasoup sample
PDF
WebRTCの技術解説 第二版 公開版 完全版
PDF
2013 WebRTC 概説 & ワークショップ
PPTX
FIWARE Real-Time Media Stream processing using Kurento
PDF
WebRTC/ORTCの最新動向まるわかり!
PPT
130329 02
PDF
160705-02 RTミドルウエア講習会・名城大
PDF
170622-01
Try new transport protocol SRT
20130329 rtm3
Let's begin WebRTC
WebRTC on Native App
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
WebRTC SFU Mediasoup Sample update
ROBOMECH2021 RTMオンライン講習会 第1部
Rtミドルウェア講習会 第2部資料
自由ソフトウェアによるライブストリーミング
20130329 rtm2
ORTCの仕様書をざっくり斜め読みする
WebRTC SFU mediasoup sample
WebRTCの技術解説 第二版 公開版 完全版
2013 WebRTC 概説 & ワークショップ
FIWARE Real-Time Media Stream processing using Kurento
WebRTC/ORTCの最新動向まるわかり!
130329 02
160705-02 RTミドルウエア講習会・名城大
170622-01
Ad

More from Tetsuyuki Kobayashi (20)

PDF
some topic of ffmpeg
PDF
New VIdeo CODEC AV1
PDF
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
PDF
WebOS Open Source Edition を試してみた
PDF
Linuxのユーザーランドをinitから全てまるごとgolangで書く
PDF
組み込みLinuxでのGolangのススメ(Go con版)
PDF
組み込みLinuxでのGolangのススメ
PDF
Tricky implementation of Go ARM soft float
PDF
ARM 64bit has come!
PDF
Virtual memory 20070222-en
PDF
Simple and efficient way to get the last log using MMAP
PDF
Tips of Malloc & Free
PDF
Basic of virtual memory of Linux
PDF
PDF
ADB(Android Debug Bridge): How it works?
PDF
Tweaking Google TV emulator
ODP
Inter-process communication of Android
PDF
Android is NOT just 'Java on Linux'
PDF
Android ipm 20110409
PDF
Init of Android
some topic of ffmpeg
New VIdeo CODEC AV1
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
WebOS Open Source Edition を試してみた
Linuxのユーザーランドをinitから全てまるごとgolangで書く
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ
Tricky implementation of Go ARM soft float
ARM 64bit has come!
Virtual memory 20070222-en
Simple and efficient way to get the last log using MMAP
Tips of Malloc & Free
Basic of virtual memory of Linux
ADB(Android Debug Bridge): How it works?
Tweaking Google TV emulator
Inter-process communication of Android
Android is NOT just 'Java on Linux'
Android ipm 20110409
Init of Android

Try new transport protocol SRT (ver. 2)