Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機

1,905 views

Published on

Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機

Published in: Engineering
  • Hi there! Essay Help For Students | Discount 10% for your first order! - Check our website! https://vk.cc/80SakO
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機

  1. 1. 1 Raspberry Pi Zero と カメラモジュールで作る ライブ配信実験機 Tetsuyuki Kobayashi 2018.4.25 Streaming Conference #2
  2. 2. 2  The latest version of this slide will be available from here  http://www.slideshare.net/tetsu.koba/presentati ons
  3. 3. 3 Who am I?  20+ years involved in embedded systems  10 years in real time OS, such as iTRON  10 years in embedded Java Virtual Machine  Now GCC, Linux, QEMU, Android, …  Blogs  https://qiita.com/tetsu_koba  http://d.hatena.ne.jp/embedded/  http://kobablog.wordpress.com/(English)  Twitter  @tetsu_koba
  4. 4. はじめに  ラズパイの H.264 ハードウェアエン コーダが意外にいけてる  ラズパイを堅牢にする工夫はいろいろ あるが、今回は省略。
  5. 5. ライブ配信実験機
  6. 6. 本日話すること  ラズパイの H.264 ハードウェアエン コーダ  YouTube Live に配信してみよう  応用編 1: BGM を流そう  応用編 2: 加速度センサーで設置角度 を自動設定しよう
  7. 7. ラズパイの H.264 ハードウェアエンコーダ  1920x1080 30fps 可能。  これを使えば CPU の負荷はオーディ オのエンコードとネットワーク処理だ け。  専用コマンド (raspivid) の他に GStreamer と ffmpeg から使用可能
  8. 8. 映像の入力  USB の WebCam からの映像入力では フレームレートが出ない  640x480 20fps くらい  おそらくメモリの帯域が足りない  専用カメラモジュールならば OK  専用コマンド (raspivid) を使うとカ メラ入力を直接 H.264 エンコーダに つなげられるらしい
  9. 9. YouTubeLive に配信してみよう
  10. 10. 必要な部材  Raspberry Pi Zero WH ケースセット  Raspberry Pi カメラモジュール  電源 (microUSB: モバイルバッテリー可 )  microUSB B オス to USB A メス変換ケー ブル  ネットワーク ( 以下のどれか )  USB Ethernet アダプタ  内蔵 WiFi  スマフォで USB テザリング
  11. 11. Raspberry Pi Zero WH ケースセット 秋月で 2,680 円 ( 税込み )
  12. 12. Tips  ピンヘッダのピンが邪魔でカメラ用 ケースのフタが閉まらない !?  「そんなのはニッパーで切ればいいん ですよ」 by 同僚の電気エンジニア
  13. 13. カメラモジュール  ラズパイ純正のカメラモジュールはい くつかの種類がある  初代は少し安く入手できる 3,080 円  使用時に赤 LED が点灯  v2 は SONY 製 4,300 円  ピント調整の治具が付属  そのほか赤外線カメラもある  ソフトウェア的にはどれもほぼ同じ。
  14. 14.   YouTube 側の準備  YouTubeLive の「いますぐ配信」を 使うのが簡単。  エンコーダの映像フォーマットに合 わせてくれるので設定の不一致が起 こらない。  live_dashboard のページで調べてメモ  RTMP の URL ( サーバー URL )  stream key ( ストリーム名 / キー )
  15. 15. ラズパイ側の準備  sudo apt install ffmpeg  次のページのスクリプトで STREAM_KEY だけ自分のものに修正 する  マイクは無いので無音をエンコードし ている  画像解像度はデフォルトの 1920x1080
  16. 16. youtube.sh #!/bin/sh STREAM_KEY=your_stream_key ping -c 5 a.rtmp.youtube.com || exit $? raspivid -o - -t 0 -rot 270 -fps 30 -b 4500000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -r 30 -f h264 -i - -vcodec copy -acodec aac -ab 128k -f flv rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY /boot/youtube.sh これらのコードは gist で公開 tetsu-koba/00_raspberrypi_livestream
  17. 17. エラーが発生したらリトライ #!/bin/sh green_led=/sys/class/leds/led0 led_green_ok(){ echo timer > $green_led/trigger # pi zero seems to swap on and off echo 3000 > $green_led/delay_off echo 200 > $green_led/delay_on } led_green_error(){ echo timer > $green_led/trigger echo 50 > $green_led/delay_on echo 50 > $green_led/delay_off } mount -o remount,ro / mount -o remount,ro /boot while true; do led_green_ok ./youtube.sh led_green_error sleep 10 done /boot/run.sh 残念ながら 純正ケースでは フタを閉めると LED は見えない
  18. 18. 電源を入れたら自動で配信開始 #!/bin/sh -e [ -x /boot/run.sh ] && (cd /boot; ./run.sh ) & exit 0 /etc/rc.local tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 /etc/fstab に以下の行を追加
  19. 19. 応用編
  20. 20. BGM を流そう  内蔵マイクが無いが無音はさみしい  SD カード内に置いた音声ファイルを BGM として繰り返し流す  音声ファイルはあらかじめ AAC に変 換して /boot/audio/ に置く  ffmpeg -i music.mp3 music.aac  AAC のエンコードが不要になるの で CPU の負荷が軽くなる
  21. 21. 加速度センサーで設置向きを自動認識  映像の回転角度を 0, 90, 180, 270 の 4 つを指定可能。  加速度センサーの値から、この 4 つの うちのどれがよいかを自動判別する  3 軸加速度センサー [ATD345] 販売 価格 : 395 円 ( 税別 )  http://www.aitendo.com/product/9548  判別するのは電源 ON の後の最初の 1 回のみ。 ( 手抜き実装 )
  22. 22. 加速度センサーを追加 ATD345 camera module v1
  23. 23. youtube.sh #!/bin/sh STREAM_KEY=your_stream_key AFIFO=/tmp/afifo.$$ ping -c 5 a.rtmp.youtube.com || exit $? rm -f $AFIFO mkfifo $AFIFO ROT=`/home/pi/axd` raspivid -o - -t 0 -rot $ROT -fps 30 -b 4500000 | ffmpeg -loglevel warning -re -f aac -i $AFIFO -r 30 -f h264 -i - -vcodec copy -acodec copy -bsf:a aac_adtstoasc -f flv rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY & while true; do cat /boot/audio/*.aac done >> $AFIFO /boot/youtube.sh
  24. 24. 設置向きの判定  i2c につながった加速度センサーの設 定、測定値読み込み、設置向きの判定 を行う部分は golang で書いた。  tetsu-koba/00_raspberrypi_livestream  参考  組み込みLinuxでのGolangのススメ
  25. 25. スマフォの USB テザリング  以下のサイトを参考に。  Raspberry Pi 2でAndroidのUS Bテザリングを使う  Raspberry Pi 2でiPhoneのUS Bテザリングを使う
  26. 26. 最後に  ここで書いたことは基本的に他の Raspberry Pi シリーズでも適用可能。  RTMP の URL と stream key が入手で きるサイトなら同様にいけるはず。  エラー発生時のリカバリは手抜き。実 験用。  デモは懇親会の時に。
  27. 27. 27 Q & A @tetsu_koba Thank you for listening!

×