Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Try new transport protocol SRT (ver. 2)

1,874 views

Published on

Try new transport protocol SRT

Published in: Internet
  • Be the first to comment

Try new transport protocol SRT (ver. 2)

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

×