O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

2.555 visualizações

Publicada em

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

Publicada em: Engenharia
  • Hi there! Essay Help For Students | Discount 10% for your first order! - Check our website! https://vk.cc/80SakO
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

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!

×