問題
ffmpegのパラメータ調べたり面倒くさそう。
解決策
alexellis2/streamingを使う。
Live stream to YouTube with your Raspberry Pi and Docker
YouTube live-streaming made easy
まずdocker、docker-composeを入れる
$ curl -sSL https://get.docker.com | sh
$ sudo usermod -aG docker <username> # piとかに変える これでdockerコマンドがsudo無しで出来る
$ sudo apt update
$ sudo apt install -y python3-pip libffi-dev
$ sudo pip3 install docker-compose # python経由で入れるとスルッと入る
docker-compose.ymlとentry.sh
docker-compose.yml
version: "3"
services:
live:
image: alexellis2/streaming:07-05-2018
privileged: true
volumes:
- ./entry.sh:/root/entry.sh
entrypoint: ["/root/entry.sh", "********自分のストリームキー********"]
元々のentry.sh
だとどうしてもfpsが20を下回り、youtube側でバッファの遅延が起きていたので、動画サイズを落として、ビットレートも落とした。
entry.sh
#!/bin/bash
echo Live-stream secret: $1
# https://support.google.com/youtube/answer/2853702#zippy=%2Cp%2Cp-fps
raspivid -o - -t 0 -w 1280 -h 720 -fps 30 -b 3000000 -g 40 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i pipe:0 -c:v copy -c:a aac -ab 128k -g 40 -strict experimental -f flv -r 30 rtmp://a.rtmp.youtube.com/live2/$1
オリジナルのentry.sh
#!/bin/bash
echo Live-stream secret: $1
raspivid -o - -t 0 -w 1920 -h 1080 -fps 40 -b 8000000 -g 40 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264
-i pipe:0 -c:v copy -c:a aac -ab 128k -g 40 -strict experimental -f flv -r 30 rtmp://a.rtmp.youtube.com/live2/$1
docker-compose.yml
とentry.sh
を同じ場所に置いて
$ docker-compose run --rm live
とすると良いと思う。
-w 1280 -h 720 -fps 30 -b 3000000
だとfps=25は出てた。(室温23℃前後、CPU温度55℃前後)