1
0
hugo/content/blog/2024-10-20-stream.md
2024-12-21 23:10:54 +09:00

81 lines
3.1 KiB
Markdown

+++
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`が良さそう。