+++ date = "2024-10-20" tags = ["cloudflare"] title = "restreamerでobsを配信する" +++ live配信するには様々な方法があり、色々と検討していますが、やはりobsを使うのが一番いいという結論になりました。今回は配信環境を構築する方法を紹介します。 https://github.com/obsproject/obs-studio ## ue5を使うのはリスクが大きく拡張性がない pixel streamingを使った配信を考えました。操作機能を無効にして配信する方法です。 しかし、これには問題が多かった。 例えば、すべての機能をueで実装する必要があります。 一応実装してみましたが大変な上に不便が多かった。例えば、ゲームがクラッシュすると音声などが途切れますよね。 ue5だけで完結することだけが魅力ですが、拡張性がありませんし、リスクが大きいのです。 ## restreamerを使う 次に検討したのは`restreamer`を使う方法です。これは配信serverのようなもので、簡易ですがpageもカスタマイズできます。 https://github.com/datarhei/restreamer ```yml:compose.yaml 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を変えて使うのがいいですね。 ```yml:compose.yaml 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に変換します。 ```sh - 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`が良さそう。