人気ブログランキングへ

2012年10月04日

Flash Media Serverでの動画ライブ配信

先日の記事で Flash Media Server をインストールしたが、それだけでは動画のライブ配信はできない。
今回は、Flash Media Live Encoder を使ってライブ配信を試してみたい。
【関連記事】

※動画ストリーミング配信には Flash Player 10.1 以上が必要なので、もしインストールしていなければインストールしておく。

1. Flash Media Live Encoderのインストール

まず、AdobeのホームページからFlash Media Live Encoderを探し、ダウンロード&インストールする。

Flash Media Live Encoder #01

必要であれば、認証アドオンもダウンロード&インストールする (今回は行わなかった)。
Flash Media Live Encoder #02

Flash Media Live Encoder #03

Flash Media Live Encoder #04

Flash Media Live Encoder #05

Flash Media Live Encoder #06
※キャプチャー画像は Mac OS X のものだが、Windows でも手順は同じ。

2. Flash Media Encoderの設定

以下の設定手順は HTTP 経由でシングルストリームのライブ配信する場合のもの。
Flash Media Server のホスト名は test.jp とする。
  1. Flash Media Live Encoder は閉じておく。
  2. Flash Media Live Encoder の設定ファイル
    (インストール先)\conf\config.xml
    をテキストエディタで開き、タグ
    //flashmedialiveencoder_config/mbrconfig/streamsynchronization/enable
    true にして保存する。
  3. Flash Media Live Encoder を起動する。
  4. "Encoding Options" パネルの [Preset] プルダウンから "High Bandwidth (800 Kbps) - H.264" を選ぶ。
  5. [Audio]-[Format] は "AAC" を選ぶ。
    ※と、Adobe のサイトには書かれているが、"Mp3" でもうまくいくみたい。
    Windows 版で "AAC" 使うには別途エンコーダー (有料) が必要。
  6. [Video]-[Format] の右にあるレンチアイコンをクリックして "Advanced Encoder Settings" ダイアログを開き、[Keyframe Frequency] を "4 seconds" とする (この値は、applications/livepkgr/events/_definst_/liveevent/Event.xml の <FragmentDuration> の値 (デフォルト値 4000 ミリ秒) の整数倍にする)。
  7. [Stream to Flash Media Server]-[FMS URL] に "rtmp://test.jp/livepkgr" と入力する。
  8. [Stream to Flash Media Server]-[Stream] に "livestream?adbe-record-mode=record&adbe-live-event=liveevent" と入力する。
  9. [Stream to Flash Media Server]-[Save to File] のチェックをはずす。
  10. [Start] ボタンをクリックする。
Flash Media Server の Administartion Console の View Applications の Streams にストリームが表示されれば準備完了。
Flash Media Live Encoder #07

3. 埋め込み用コードの作成

Flash Media Server のインストール先にある samples/videoPlayer ディレクトリを Web 経由で見られるところにコピーする (ここでは http://test.jp/fms/samples/videoPlayer とする)。
そして、Web ブラウザーで
http://test.jp/fms/samples/videoPlayer/videoplayer.html
にアクセスする。
Flash Media Live Encoder #08
動画エリアの下の "STREAM YOUR OWN VIDEO" の [STREAM URL] に
http://test.jp:8134/hds-live/livepkgr/_definst_/liveevent/livestream.f4m
と入力し、[LIVE] にチェックを入れて [PLAY STREAM] ボタンをクリックする。
正常に設定できていれば動画エリアにライブ映像が表示される。

表示されない場合は、[STREAM URL] に入力した URL を直接 Web ブラウザーで表示させてみる。
正しければ、XML 形式のマニフェストファイルが表示されるはずである。

ページ下部に埋め込み用コードが表示されるので、それをコピーして任意のページにペーストすれば、ライブ配信ページが作れる。
Flash Media Live Encoder #09

コードを見ればわかるとおり、
swfs/StrobeMediaPlayback.swf
が必要なので、このファイルを適当な場所に設置して使う。

なお、サーバーが Development Server の場合は映像は30分で切断される (10分という記述を見かけたが、試したら30分だった)。

4. トラブルシューティング

4.1. Flash Media Playback Setup でエラーとなる
上記の例では Flash Media Server 同梱のサンプルコードを使って埋め込みコードを生成したが、Flash Media Playback Setup ( http://www.osmf.org/configurator/fmp/ ) も利用できる。
Flash Media Playback Setup で "We are having problems with..." というエラーが出る場合は、クロスドメインポリシーを疑ってみる必要がある。
【参考】
さわいじり
クロスドメインポリシーファイル(crossdomain.xml)設定について
クロスドメインポリシーは、Flash Media Server の (インストール先)/webroot/crossdomain.xml というファイルで設定される (デフォルト設定の場合)。
このファイルで、www.osmf.org からのアクセスが許可されているか確認する。
もしファイル自体が存在しなければ自前で作成する。
内容は以下のようなもの。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
上記の例では、あらゆるドメインからのアクセスを許可している。
4.2. Buffering... と表示されたまま映像が表示されない
原因はいろいろあるらしいが、一度ハマると解決しにくいのが以下の例。

Flash Media Live Encoder の [Stream] の 値を livestream?adbe-live-event=liveevent (これが Adobe の解説に書かれている設定値) としている場合、配信時間が 30 分を超えると Flash Media Server のログ (logs/core.00.log) に:
Failed to record livestream (disk quota exceeded).
というエラーが出て動画配信ができなくなる。

こうなった場合は、
applications/livepkgr/streams/_definst_/livestream
内のファイルをすべて削除してサーバーを再起動すれば、また配信できるようになる。

[Stream] の値を "livestream?adbe-record-mode=record&adbe-live-event=liveevent" に変更して配信しなおしても解消する。
posted by K/I at 23:34 | 東京 ☁ | Comment(12) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
記事の内容はあらかじめserverの設定をしておくのか、それともデフォルト設定でやったものなのか、どちらなのでしょうか?

また、serverの設定方法など詳しく教えていただけないでしょうか。
Posted by きりん at 2012年12月26日 09:19
>きりんさん
Flash Media Server はあらかじめインストールしておきます。

インストール方法については、文中の【
関連記事】で書いていますのでそちらを参照してみてください。
Posted by K/I at 2012年12月26日 10:36
K/Iさん
返信ありがとうございます。
Flash Media Serverは、既にインストールされ、インストール確認用の動画が見れるところまで来ております。
Posted by きりん at 2012年12月26日 10:57
>きりんさん
サーバーのインストールではなくデフォルト設定でOKか、ということですね。
失礼しました。
デフォルト設定でうまくいくと思います。
Posted by K/I at 2012年12月26日 11:18
>K/Iさん
返信ありがとうございました。

Flash Media Server のホスト名は test.jp
とありますが、これはインストール時に決めたUserNameなのでしょうか?

この記事の環境は、Flash Media ServerがインストールされたPCにFlash Media Live Encoderをインストールし、動画配信を行ったものなのでしょうか?
Posted by きりん at 2012年12月26日 11:30
今回は FM Serverと FM Live Encoder は別サーバーで試しました。
同じ PC にインストールしてもうまくいくはずです。

test.jp は特に FM Server インストール時に決めたわけではありません。
FM Server の Apache がリクエストを受け取れるサーバー名なら何でも OK です。
Posted by K/I at 2012年12月26日 13:03
>K/Iさん

返信ありがとうございました。

Apacheのサーバ名の設定はどこで行うのでしょうか?
Posted by きりん at 2012年12月26日 13:51
>きりんさん
Apache 側での設定という意味でしょうか?
DNS で設定するか、もしくはローカル PC の hosts ファイルに書けばよいかと思います。
これは、通常の Web サーバーと考え方は同じです。
ホスト名ではなく、IP アドレスで設定してもかまいません。
Posted by K/I at 2012年12月26日 14:13
>K/Iさん

返信ありがとうございます。
ローカルPCのhostsファイルにサーバ名等の設定を行いました。
FMServerのapacheには、apache起動用の.exeが見当たらないのですが、これはサーバーと一緒に起動されているということなのでしょうか?
Posted by きりん at 2012年12月26日 14:25
>きりんさん
サーバーと一緒に起動したはずです。
(今手元に環境がないので確認できていません)
FM Server の Apache ログを見てみるか、tasklist コマンドでプロセス一覧見てみるとはっきりすると思います。
Posted by K/I at 2012年12月26日 14:35
>K/Iさん
返信ありがとうございました。

質問に丁寧に答えていただきありがとうございました。
Posted by きりん at 2012年12月26日 14:59
お久しぶりです。

ローカルPCのhostsファイルで、ホスト名等の設定を行い。記事の手順に沿って設定を行ってみたのですが、FMEのstartを押すとProblem with primary server.とエラーが表示され、配信が行えません、これはどのような理由が考えられますか?
Posted by きりん at 2013年01月09日 10:08
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/293271341
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック