24
THETA S + Raspberry pi 2でラ イブストリーミングしてみた(続) syumai

THETA S + Raspberry pi 2でライブストリーミングしてみた(続)

Embed Size (px)

Citation preview

THETA S + Raspberry pi 2でライブストリーミングしてみた(続)

syumai

自己紹介• 名前: syumai

• 職業: ソフトウェアエンジニア   (アルバイト)

• 勤務先: Ducklings

• Twitter: @__syumai

Agenda• Qiita投稿記事の概要

• この記事を書いた経緯

• GStreamerについて

• 記事の解説

• 試してみたこと

• 次のステップ

Qiitaに投稿した記事

『THETA S + Raspberry pi2 でライブストリーミングしてみた』

記事の概要• Raspberry pi 2 + THETA S + GStreamerで、全天球動画をライブストリーミングする

• 今日の話は、GStreamerメインです

経緯

• 結婚式に寝たきりのおばあちゃんを連れて行きたい

• HMD + Pepper + 二眼カメラで解決!

• http://hugproject.net/

HUG Projectの課題• 器材調達の困難さHMD + Pepper + 二眼カメラ (+ Kinect)が必要⇒用意できる人がほとんどいない

• 手軽に使えない⇒持ち運びができないので、普及が難しそう

そこに現れたのが THETA S

THETA Sなら…、• 器材調達の困難さ⇒THETA S + 配信用PCだけでOK!

• 手軽に使えない⇒簡単に持ち運べる!

GStreamerについて

何が出来るのか

• 動画・音声などのデータのストリームをパイプラインに流し込む

• パイプライン中で、動画をエンコードしたり、画像加工フィルタをかけられる

• UDPやTCPで動画を配信できる

GStreamerを利用した部分

• 記事の最後の部分

• ここを解説します

GStreamerの主な登場人物• Element

• データを加工したり、処理を行う部分

• Pipeline

• Element同士を接続して作った一通りの流れ

Elementとは?

• 流れてきたデータを加工、出力する

• Padでデータの入出力を行う

• 入力をsrc、出力をsinkと呼ぶ

• 形が合わないと接続できない (要・video convert)

Pipelineとは?

• Source Element: カメラなどからデータを入力

• Filter Element: データを加工(エンコード等を行う)

• Sink Element: パイプライン外にデータを出力        (PC上のアプリケーション、UDP、TCPなど)

記事の簡単な解説

• v4l2src: Video for Linux 2。カメラの映像を取得

• videoconvert: 次のElementとPadが合わなかった時に、合う形に変換する

• omxh264enc: h264に動画をエンコードする

• rtph264pay: RTPのヘッダをデータに追加する

• udpsink: UDPでデータを送信

• gst-launch-1.0 v4l2src ! videoconvert ! omxh264enc ! rtph264pay pt=96 config-interval=1 ! udpsink host=$1 port=$2

試してみたこと

ラズパイ以外• Mouse computerのスティックPCでも検証 • スティックPCの利点 • Windowsが動く • openh264encを利用できる • ストリーミング速い

Unityへの配信• GStreamer SDK(C, C++用)を使ったネイティブプラグインを作れば出来そう

• appsinkを利用すれば、ストリーム内の画像データを取得できる⇒これをUnityのTexture2Dに流し込めば表示できそう

• 凹みTipsを読みながら挑戦中(最近進捗なし…汗)

WebRTC

• ブラウザだけあれば実現可能

• NAT越えの困難さを克服できる

WebRTC

• NoraさんのThetaShaderPack(http://stereoarts.jp/)を参考に、Equirectangularの画像に変換するGLSLを書いて、Three.jsで表示

• WebVRを使ってOculus Riftでも見れるようにしました

• デモ展示します!

目指すところ• 肩乗せ配信を実現したい