ラズベリーパイでFacebookにライブ配信をする方法

今回はFacebookでライブ配信をしてみます。YouTubeに比べて少し面倒でした。




Facebookでライブ動画を配信してみよう

以前の記事でラズベリーパイを使ったYouTubeでのライブ配信の方法を紹介しました。
Raspberry Pi 3とffmpegでYouTubeへライブ配信をする
今回はFacebookでライブ配信をしてみましょう。

ラズパイの準備をしよう

使う道具は

  • Raspberry Pi 3 Model B
  • UVC対応のUSB Camera
  • USB 3G/4G モデム (外でライブ配信したい場合)

です。

まずはRaspberry Pi 3に必要なプログラムを入れておかなくてはなりません。YouTubeの時と同じになりますので前回の記事を参照ください。
大まかに説明すると、OSにはRaspbian JESSIE PIXELを使います。FFmpegをコンパイルします。家のWiFiで配信する場合はこれだけでできます。3G/4Gモデムを使って外でも配信したい場合は、モデム環境の設定、ラズパイのホットスポット化をします。
Rapberry Pi 3 のハードウエアエンコーダh264_omxが使えるFFmpegをビルドする
Raspberry Pi 3でffplayをビルドする
drawtextフィルタで映像にテキスト書き込みできるffmpegをRaspberry Pi 3でビルドする
USB 3G モデム L-02CをRaspberry Pi 3で使えるようにしてMVNOのSIMカードで通信する
Raspberry Pi 3とUSB 3Gモデムでワイヤレスホットスポットを作る
記事公開時においてUSB モデムの自動認識に不具合が生じる場合は次の記事も参考にしてください。
Raspbianのifup@.serviceがおかしくてUSB 3G/4G モデムが動かなかった

Facebookの操作

スマートフォンならばアプリから簡単にライブ動画を配信できます。
しかし、パソコンや他の機器から配信を行うのは少し手順が面倒です。
Raspberry PiからFacebookにライブ動画を配信するにはYouTubeの時と同じくffmpegでエンコードしrtmpでサーバへストリームを送信すれば良いのです。
このrtmpでの動画の送信は通常のFacebookアカウントでは使う事ができません。Facebookページからライブ動画の配信が可能になります。ですから、Facebookページを作る必要があります。Facebookページとは何か?この辺は他のサイト様にお任せしますので調べて作ってください。
アカウントが2つあるみたいになって配信投稿の管理が少し面倒になってしまいます。

Facebookページからライブ動画を配信する

スマートフォンのFacebookアプリはrtmpの配信ページが表示されません。ウエブブラウザでFacebookを開きます。
モバイルのURLになっているとこれまたrtmpの配信ページが表示されません。URLが”m.facebook.com”となっていたらモバイル用ページです。PC用ページは"www.facebook.com"となっている事を確かめてください。スマートフォンの場合は自動的にモバイル用ページに飛んでしまう事もあります。ブラウザでPC用ページを表示する設定をしてください。

PC用Facebookページにたどり着いたら上側のメニューから"投稿ツール"をクリックします。


次に左側メニューから"動画ライブラリ"をクリックしてください。すると"ライブ動画を作成"というボタンが表示されるでしょう。

このボタンをクリックすればライブ動画の配信ができます。押してみましょう。


ここでrtmpの送信先が表示されます。
ffmpegで送信する場合は”Single Field"のURLを使います。ストリームキーはライブ動画投稿毎に異なったものが付与されるようです。毎回コピペする必要があります。

このストリームURLをコピーしたら"次へ”ボタンを押します。次のページに行ってもストリームキーは見れるので安心してください。


ここでは投稿記事の内容と動画のタイトルを設定できます。適当に入力します。
そして、ライブ動画のストリームが正しくFacebookに届いているかプレビューが表示されます。まだ送信していなければ上の画面のように"オフライン"と表示されているでしょう。
詳細設定では、ライブ配信終了後に配信投稿を削除する設定もできます。

ここでラズベリーパイにコマンドを打ち込み配信を開始します。
YouTubeの時と同じコマンドで送信先アドレスを変えるだけです。
ffmpeg \
-f alsa -thread_queue_size 8192 -i hw:1 \
-f v4l2 -thread_queue_size 8192 -input_format yuyv422 -video_size 1280x720 -framerate 8 -i /dev/video0 \
-c:v h264_omx -b:v 768k -bufsize 768k -vsync 1 -g 16  \
-c:a aac -b:a 128k -ar 44100 \
-f flv rtmp://rtmp-api.facebook.com:80/rtmp/YOUR_STREAM_KEY
"YOUR_STREAM_KEY"を自分のキーにしてください。このコマンド例ではUSBカメラの映像とマイク音声を配信します。

しばらくすると先ほどのFacebookの画面に送信している映像が映ります。タイムラグが数十秒あると思いますので1分くらいは待ってみましょう。1分待っても写らなければ正しく配信できていないと思われます。コマンドの確認、回線の確認やストリームキーの確認をしてください。

プレビューが表示されたら、後は配信を投稿するだけです。タイトルやコメントなどを確認し"ライブ配信を開始"ボタンを押しましょう。
"ライブ配信を開始"ボタンを押す前にこの画面を閉じると投稿を破棄するか聞かれます。破棄すると次回のストリームキーは異なったものになるので注意してください。

先のffmpegコマンドで配信をしているとイベントログに警告が出てくるでしょう。


ラズベリーパイの性能からフレームレートを8fpsとしていますが、フレームレートが低すぎると怒られます。配信自体は継続できるので無視していいでしょう。

配信を開始すると次の画面のようになります。


この画面は閉じても大丈夫です。左側メニューの動画ライブラリから再び表示させることができます。
"ライブ動画を終了する"ボタンを押すと配信を終われます。配信したビデオは動画ライブラリに保存されます。

まとめ

Facebookでもrtmpプロトコルを受け取ってくれるのでYouTubeと同じようにライブ配信する事ができました。ストリームキーが毎回異なるためコマンドの入力が少し面倒になります。

音声トラックのない映像だけのストリームを送ったところFacebookのサーバは受け取ってくれませんでした。音声が無くとも無音の音声トラックを作って配信する必要があります。

rtmpでの配信はFacebookページから行う必要があります。facebookアカウントでできないのでページで配信してからシェアし直すなど少し面倒な作業が必要かもしれません。
スマートフォンアプリやモバイルサイトではライブ配信の画面にたどり着けません。パソコンで配信作業をする事を前提に設計されているようです。

Facebookでは地図でライブ配信している人を探せるのが良いですね。
https://www.facebook.com/livemap/
日本だと外人さんが目立ちます。日本人はほとんどやってないのかな?Facebookは実名で友達のネットワークが強くでるので使いどころが難しいかもしれませんね。
いろいろなSNSがライブ動画の配信に対応してきました。どう使い分ければいいのか悩みます。

コメント

最近のコメント

Threaded Recent Comments will be here.