Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Try new transport protocol SRT (ver. 2)

2 417 vues

Publié le

Try new transport protocol SRT

Publié dans : Internet
  • Soyez le premier à commenter

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!

×