raspberry piから ffmpgでyoutubeにストリーム配信する

とりあえずこれでできた。


 raspivid -w 1024 -h 768 -fps 30 -o - -t 0 -b 2500000 | ffmpeg -re -stream_loop -1 \

-i madoromi.mp3 -f v4l2 -thread_queue_size 8192 \

-input_format yuyv422 -video_size 1024x768 -framerate 30 -i /dev/video0 \

-c:v h264 -b:v 1024k -bufsize 1024k -g 16  \

-c:a aac -b:a 256k -ar 44100  \

-vf "rotate=180*PI/180" \

-flvflags no_duration_filesize \

-f flv rtmp://a.rtmp.youtube.com/live2/xxxxxxxxxxxx


madoromi.mp3 というのは自作のmp3ファイル

カメラを上下さかさまにしているので、rotateで180度回転している。

最後の rtmp://... のところはyoutubeのストリームURL/ストリームキー


数年前に試したのだが、その時と同じコマンドではうまくいかなかった。

raspivid -o - -t 0 -vf -hf -fps 30 -b 6000000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv [ストリームURL]/[ストリームキー]


youtube側の設定はそんなに難しくないので割愛。

raspiは5。カメラはUSBにつないだElecomの、型番は見るのがめんどくさいので省くが、1万円くらいで買えるやつ。

ffmpgで送信するところまではすぐできたのだが、youtube側で受信しない。

最後の -f flv rtmp://... のところをローカルファイルにすると動画ファイルとして再生できるので、ffmpgでカメラの画像をエンコードするところまではできているはずだ。

調べていくうちに、「youtubeで配信するときは音声が必要」という情報が。

参考にした人たちは皆 mp3をエンコードしていたが私は音はいらないと思って省いていたのだ。

テキトーなmp3ファイルを指定したら、youtubeで受信できた。

youtube側では、「受信データが少なくて画質が低くなっている」みたいなメッセージが表示される。

パラメータは要調整かもしれない。