【ラズパイ】動画配信を試してみた
年末年始の時間でRaspberry Piを触ってみました。
漠然と触るより目的があった方が燃えるので「ラズパイで動画配信をする」ことを目的としました。
なお、以下でMacと出てくるのは、私の使ったクライアント端末です。
1.資材の調達
まず、前知識なしでも絶対に必要だと分かるモノは事前にamazonで購入しました。
■amazonで購入
・Raspberry Pi4 ModelB 4GB:約 ¥7,000
・カメラモジュール:約 ¥1,500
次に、色々なサイトを参考にしつつ、必要なモノをリストアップしました。電子機器と言えば秋葉原ということで、秋葉原に買いに行きました。
■あきばお~ 弐號店で購入
・Micro SDカード(128GB):約 ¥1,500
・Type-C 電源ケーブル(5V / 3A):約 ¥1,000
・Micro HDMI変換プラグ:約 ¥500
・USBキーボード:約 ¥500
・USBマウス:約 ¥500
・Mac用のMicro SD Reader/Writer:約 ¥500
・【不要でした】USB-C 有線LAN 変換アダプター:約 ¥500
・【不要でした】ストレージ代わりのUSBメモリ(16GB):約 ¥500
■マルツ秋葉原本店で購入
・ラズベリーパイケース:約¥1500
※開店時刻が10:30〜や11:00〜のお店が多いのでご注意ください。10:00前に店に行ってしまいシャッターの前で立ち尽くしました。
※時間潰しで仕事猫のぬいぐるみを入手できたのでヨシ!
2−1.初期設定
まず、Macでの操作です。
Raspberry Pi Imagerを使用してRaspberry Pi OSをMicro SDカードに書き込みます。
以降はラズパイの操作です。
Micro SDカード、キーボード、マウス、HDMIを接続の上、電源ケーブルを繋ぎます。Micro SDカードの入りが甘いと黒い画面のままなのでご注意ください(実体験)。
初回起動時にセットアップウィザードが起動するので、選択/入力していきます。特に困ることはなく進められました。
次に日本語入力の設定です。ibus-mozcをインストールします。
$ sudo apt-get install -y ibus-mozc
インストール後、GUI操作で、画面右上からひらがな入力に設定したところ、ひらがな入力ができる様になりました。
2−2.セキュリティ周りの設定
引き続きラズパイの操作です。
まず、rootのパスワードを設定します。
$ sudo passwd root
次に、ユーザを追加します。
$ sudo adduser 〈ユーザ名〉
次に、追加ユーザにpiユーザの権限をコピーします。
$ groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio 〈ユーザ名〉
次に、sudo権限を編集して追加ユーザにパスワードなしでのsudo権限を付与します。
$ sudo visudo
〈ユーザ名〉 ALL=(ALL) NOPASSWD: ALL #この行を追加
次に、piユーザを削除します。
$ sudo userdel -r pi
次に、起動時のユーザをpiユーザから追加ユーザにします。
$ sudo vi /etc/systemd/system/autologin@.service
#ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM #この行をコメント
ExecStart=-/sbin/agetty --autologin 〈ユーザ名〉 --noclear %I $TERM #この行を追加
2−3.SSHの設定
Macでの操作です。
まずキーペアを作成します。
$ ssh-keygen -t rsa
公開鍵をラズパイにコピーします。
$ ssh-copy-id -i <公開鍵が保存されたパス※1>/id_rsa.pub 〈ユーザ名〉@〈ラズパイのIPアドレス※2〉
※1:キーペア作成の際に表示されます。ターミナルを上にスクロールすればあるはずです!
※2:ラズパイにて「$ ifconfig -a」でwlan0のinetに表示されます。
ラズパイでの操作になります。
GUIでSSHを有効にします。
メニュー > Raspberry Piの設定 >インターフェイスからSSHを有効にします。
次に、SSHの設定を変更します。
$ sudo nano /etc/ssh/sshd_config
PermitRootLogin no #この行を追加(rootでのログインを禁止)
PasswordAuthentication no #この行を追加(パスワード認証を許可しない)
PermitEmptyPasswords no #この行を追加(空パスワードを無効化)
設定を反映させるために再起動します。
$ sudo reboot
Macでの操作です。
SSH接続が出来れば完了です!
$ ssh -i .ssh/id_rsa 〈ユーザ名〉@〈ラズパイのIPアドレス〉
2−4.カメラモジュールの設定〜画像の撮影
まず、カメラモジュールをラズパイに取り付けます。
以降ラズパイの操作です。
2点注意です(実体験)。①フレキシブルケーブルの先が青い方がUSBポートの方を向きます。②フレキシブルケーブルはしっかりと差し込んでください。少し引っ張っただけで抜けてしまう様では差し込みが甘いです。
次に、GUIでカメラを有効にします。
メニュー > Raspberry Piの設定 > インターフェイスからカメラを有効にします。
次に、カメラモジュールの接続を確認します。
$ vcgencmd get_camera
supported=1 detected=1
※「supported=1 detected=1」でカメラが認識されている状態です。
画像を撮影します。
$ raspistill -o test.jpg
※カレントディレクトリに「test.jpg」が生成されていればOKです。
2−5.映像配信の準備(システム編)
Amazon Interactive Video Service(Amazon IVS)を使用して動画を配信します。
まず、AWSのコンソールにサインインをしてからAmazon Interactive Video Serviceを開きます。
チャンネルを作成します。
ストリーム設定と、再生設定の値が発行されます。
2-6.映像配信
MacでラズパイにSSH接続して操作します※
※ラズパイにキーボードとマウス、HDMIを接続して操作したところ、低電圧警告で配信が止まりました。キーボードとマウス、HDMIを抜いてやってみたところ、配信が止まらなくなったので、そうしています。
raspividコマンドで取得したカメラからの映像をffmpegコマンドでストリーミング配信します。
$ raspivid -o - -t 0 -vf -hf -fps 25 -b 500000 -rot 180 | ffmpeg -re -ar 4410 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -s 640x320 -strict experimental -f flv <ストリーム設定の取り込みサーバー><ストリーム設定のストリームキー>
※上記で配信をすると画像が荒いです。実用レベルにするにはオプションをチューニングする必要があります。
Amazon Interactive Video Serviceのライブストリームにカメラで撮影した映像が表示されていればOKです!
なお、YouTubeやVimeoで配信する場合、"<ストリーム設定の取り込みサーバー>"と"<ストリーム設定のストリームキー>"を然るべき値に設定することで配信できます。その場合、「映像配信の準備(システム編)」の手順は不要で、YouTubeやVimeoで発行される"RTMP URL"と"ストリームキー"を使用してください。
3.まとめ
秋葉原は電子機器の種類が豊富で安いですね。ケーブルやプラグを見ているだけで楽しかったです。
最近はLinuxをあまり触っていなかったので、LinuxのCLI操作も楽しかったです。省略してしまいましたが、SSHのポートは変更した方がよりセキュアになるかと思います。
Amazon IVSは初めて触りましたが、本当にシンプルで使いやすいですね。感動しました。誰でもライブ配信できる環境を作れるようになったんだなぁと感じました。
全体を通して本当に楽しかったです!
機会があればもっとラズパイを触ってみようと思います。