けつあご日記

きくちはやみのふぃくさーにしかなりたくない.ひゃっぽゆずっててんほういは,あり.

Wirecast=>Wowza on AWS=>VLC&HTML5の流れでストリーミング配信してみる

久しぶりの更新。動画配信を勉強したときの自分用メモ。
OSはmacOS Sierra 10.12。

前提知識

動画とはなにか?ストリーミングとはなにか?

この記事を熟読するんじゃ〜。
ygoto3.com

ffmpegもこれ通りに使ってみた。Homebrewで入るffmpegはちょっと怪しさある(というかオプション付けまくらないとだめぽい)ので、バイナリをガッと落とすのが良さそう。
自分はここから落とした。FFmpeg Binary | FFmpeg Binary for Mac
(公式からでもかも)

この記事のffmpegのコマンドだとエラーが出たので、とりあえずここ
コマンドでやった。

$ ffmpeg -i livealohamp4.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8 


でそのあとこれを読んだ。
ygoto3.com

用語

必須の用語など。かなり適当、、、

用語 説明
ストリーミング 動画や音声をダウンロードし終わってから再生するのではなく、ダウンロードしながら再生するみたいな感じのやつ。
最近の動画配信サービスはみんなこれ。
動画データ 動画とは「映像データと音声データをコンテナという箱で包んだもの」
映像と音声は別になってるとは知らんかった、、、だから音ズレとかが起きるやなって。
コンテナ MP4やAVIなどのファイルフォーマットのことだと思えばよい。映像データと音声データをどんな感じで格納するかとか動画のタイトルとか字幕とかが入っている。
コーデック(codec) 映像・音声の圧縮のアルゴリズム、あるいはそれを行うソフトのこと。
同じコンテナでも中身のコーデックはいろいろ(H263/AC3 in MP4, H264/AC3 in MP4)。MP4が再生できるはずでもH263のコーデックがない、とかだと音声しか聞こえない、みたいなことが起きる(codec error)。
H264 最近よく使われる映像コーデック。圧縮率が高いらしい。
AAC よく使われる音声コーデック。MP3の後継。
HLS HTTP Live Streaming. Appleが作ったストリーミングプロトコル。通信にHTTPサーバを使えるのでラク。
数秒単位程度で細切れになった動画ファイル(セグメント)と、それらをどの順番で再生するかを記したファイル(プレイリスト)を使う。
MPEG-2 TS HLSに使うセグメントファイルの形式(コンテナ)。
m3u プレイリストのファイルフォーマット。UTF-8であることを明示するときにはm3u8を使う(だいたいこっちが使われてそう)。
videoタグ HTML5で使える便利なやーつ。これを使うだけで動画の埋め込みが出来る。
RTMP Real-Time Message Protocol. HLSと同じストリーミングプロトコルのひとつ。
HLSがクライアントからリクエスト駆動で行われるのに対し、RTMPは双方向通信が行われるためサーバ側のタイミングで配信できて遅延が少ない。
リアルタイム性を重視するときはHLSではなくこっちを使う。専用のRTMPサーバが必要。
ffmpeg 動画・音声を変換することができるソフト。かなり高機能。CUI。
例えば、MP4=>セグメント+プレイリストへ変換、などが簡単にできる。
Wowza Wowza Streaming Engine. ストリーミング配信サーバ。保存してある動画をVODとして配信・Wrecastなどから受け取ったライブ動画を配信、みたいなことができる。
Wirecast エンコーダーとか入ってる配信ソフト。Webカメラから入力、エンコードしてWowzaへ送信みたいなことができる。
VLC メディアプレイヤー。ストリーミングプロトコルに対応しているので、Wowzaから配信された動画を受信して再生できる。


やるぞ〜〜

WowzaサーバをAWS EC2に立てる

これはローカルにやってもいいと思う。EC2使うとお金もかかるし。ローカルでやるならdeveloper licenseが使えるのでタダで出来るはず。

↓これ通りにやる。AMIを使うのでサブスクリプションで15$/month、プラス課金分がいくらかかかる。(AMIではなく自分で構築すれば安い?)
dev.classmethod.jp

最後の方の「独自ファイルのVOD配信」ではwgetで動画を取ってきているがこれはローカルからscpでやればおk。

$ scp -i [pemファイル] [mp4の動画ファイル] ec2-user@[インスタンスのグローバルIP]:/home/ec2-user

でコピーして、/home/wowza/contentにmvする。

テストプレイヤーで動画再生ができればおk。

Wirecastから配信してWowzaへ送信

まずWirecastをインストール。

次にWowzaの設定をWirecastに追加する。↓っぽくやればおk。
www.wowza.com
古いのでちょっと違うところがあるので注意。
ヘッダーのApplicationタブ > サイドバーからliveを選択 > Sources(Live) > Telestreamを選択
で設定ファイルがダウンロードできる。

f:id:kichiku_kikuchi:20170723180603p:plain:w600

Wirecast > 配信 > 配信の設定 > Wowza設定ファイルを読み込む
でダウンロードしたファイルを読み込む。

f:id:kichiku_kikuchi:20170725180109p:plain:w600

「認証情報の設定」はWowzaにログインするときと同じなのでID: Wowza, pass: [EC2インスタンスID]でおk。

新規ショット > +ボタン
からメディアファイルを追加、あるいはキャプチャデバイスから内蔵カメラを選択。

配信 > 配信を開始
のあと、Go(プレイヤー下の右矢印ボタン)でライブエリアに動画が表示され、ライブ配信が開始する。

Wowzaでliveを選択した状態でTest Playersを起動。Startを押して配信している動画が表示されればおk。
プレイヤーの下にSource stream or file could not be found or access was denied.と表示されてしまうときは、なにか設定が間違っていたりそもそも配信が開始されていない、とかが考えられる。

VLCでWowzaから配信された動画を再生

VLCをインストール。

WirecastでWowzaへ配信している状態で、VLCを起動。
ファイル > ネットワークを開く > URL
に以下を入力して、開くをクリック。

rtmp://[インスタンスのグローバルIP]:1935/live/myStream

f:id:kichiku_kikuchi:20170723181202p:plain:w600

動画が再生されればおk。これでWirecast=>Wowza on AWS=>VLCで再生、ができた。

ブラウザでも再生してみる(videoタグ)

HTMLファイルを作成。URLは上で使ったものではなく、Wowza > vod > Wowza Playerで表示される形式でやればよいっぽい。
liveでも同じ。

<!DOCTYPE html>
<html>
  <head>
    <title>HTML5 VOD Streaming Test</title>
  </head>
  <body>
    <video width="640" height="400" controls="controls" src="http://[インスタンスのグローバルIP]:1935/live/_definst_/myStream/playlist.m3u8">
    </video>
  </body>
</html>

Wirecastで配信した状態でhtmlをSafariで開く。動画が再生されればおk。

f:id:kichiku_kikuchi:20170723175054p:plain:w600



↓アフィカスリンク

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

  • 作者: WINGSプロジェクト阿佐志保,山田祥寛
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/06/17
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Amazon Web Servicesネットワーク入門 impress top gearシリーズ

Amazon Web Servicesネットワーク入門 impress top gearシリーズ

ニコ生で彼女を量産する方法を教えるそうです。

ニコ生で彼女を量産する方法を教えるそうです。