2024-10-20 / @syui

cloudflare

restreamerでobsを配信する

live配信するには様々な方法があり、色々と検討していますが、やはりobsを使うのが一番いいという結論になりました。今回は配信環境を構築する方法を紹介します。

https://github.com/obsproject/obs-studio

ue5を使うのはリスクが大きく拡張性がない

pixel streamingを使った配信を考えました。操作機能を無効にして配信する方法です。

しかし、これには問題が多かった。

例えば、すべての機能をueで実装する必要があります。

一応実装してみましたが大変な上に不便が多かった。例えば、ゲームがクラッシュすると音声などが途切れますよね。

ue5だけで完結することだけが魅力ですが、拡張性がありませんし、リスクが大きいのです。

restreamerを使う

次に検討したのはrestreamerを使う方法です。これは配信serverのようなもので、簡易ですがpageもカスタマイズできます。

https://github.com/datarhei/restreamer

services:

  restreamer:
    image: datarhei/restreamer
    #image: datarhei/restreamer:cuda-latest
    ports:
      - 8080:8080
      - 1935:1935
      - 6000:6000/udp
    restart: always
    volumes:
      - ./data/config:/core/config
      - ./data/data:/core/data

8080がweb, 1935がrtmp, 6000がsrtです。rtmpとsrtではsrtのほうが高品質で遅延が少なくなると思います。使わないものはportを閉じてもokです。基本的にはバッティングなどもありますから以下のようにlocahostのportを変えて使うのがいいですね。

services:
  restreamer:
    ports:
      - 8980:8080
      - 1835:1935
      - 6700:6000/udp

使い方は簡単で最初にwebにアクセスしてadminを作ります。設定を行い、domain(ip)を127.0.0.1にします。ここではsrt protocolを使います。obsで配信をカスタムにしてrestreamerで発行されたurlを使用すればokです。

なお、同じserverでない場合はobsに設定するurlはipv4に変換します。

- srt://127.0.0.1:6700
+ srt://192.168.1.99:6700

systemからexpert modeを選択しましょう。

現時点で録画機能はありません。つまり、配信終了時にffmpegでconvertしてdocker volumeに保存し、再視聴が可能になる機能があると嬉しいですね。

https://github.com/datarhei/restreamer/issues/692

mediacmsに保存する

https://github.com/mediacms-io/mediacms

mediacmsを使用することで録画をuploadすることは可能です。obsで配信、録画を行い、終了時にmediacmsにuploadする方法です。

しかし、別のpageに移動しなければなりませんし、管理システムが異なるので良い方法とは言えません。

一番いいのはyoutubeを利用することですが、すべて自前で構築する場合はrestreamer + mediacmsが良さそう。