今回は、Flash Media Live Encoder を使ってライブ配信を試してみたい。
【関連記事】
※動画ストリーミング配信には Flash Player 10.1 以上が必要なので、もしインストールしていなければインストールしておく。
1. Flash Media Live Encoderのインストール
まず、AdobeのホームページからFlash Media Live Encoderを探し、ダウンロード&インストールする。
必要であれば、認証アドオンもダウンロード&インストールする (今回は行わなかった)。





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

3. 埋め込み用コードの作成
Flash Media Server のインストール先にある samples/videoPlayer ディレクトリを Web 経由で見られるところにコピーする (ここではhttp://test.jp/fms/samples/videoPlayer
とする)。そして、Web ブラウザーで
http://test.jp/fms/samples/videoPlayer/videoplayer.html
にアクセスする。

動画エリアの下の "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 形式のマニフェストファイルが表示されるはずである。
ページ下部に埋め込み用コードが表示されるので、それをコピーして任意のページにペーストすれば、ライブ配信ページが作れる。

コードを見ればわかるとおり、
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" に変更して配信しなおしても解消する。
さわいじり
「クロスドメインポリシーファイル(crossdomain.xml)設定について」
<?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>
また、serverの設定方法など詳しく教えていただけないでしょうか。
Flash Media Server はあらかじめインストールしておきます。
インストール方法については、文中の【
関連記事】で書いていますのでそちらを参照してみてください。
返信ありがとうございます。
Flash Media Serverは、既にインストールされ、インストール確認用の動画が見れるところまで来ております。
サーバーのインストールではなくデフォルト設定でOKか、ということですね。
失礼しました。
デフォルト設定でうまくいくと思います。
返信ありがとうございました。
Flash Media Server のホスト名は test.jp
とありますが、これはインストール時に決めたUserNameなのでしょうか?
この記事の環境は、Flash Media ServerがインストールされたPCにFlash Media Live Encoderをインストールし、動画配信を行ったものなのでしょうか?
同じ PC にインストールしてもうまくいくはずです。
test.jp は特に FM Server インストール時に決めたわけではありません。
FM Server の Apache がリクエストを受け取れるサーバー名なら何でも OK です。
返信ありがとうございました。
Apacheのサーバ名の設定はどこで行うのでしょうか?
Apache 側での設定という意味でしょうか?
DNS で設定するか、もしくはローカル PC の hosts ファイルに書けばよいかと思います。
これは、通常の Web サーバーと考え方は同じです。
ホスト名ではなく、IP アドレスで設定してもかまいません。
返信ありがとうございます。
ローカルPCのhostsファイルにサーバ名等の設定を行いました。
FMServerのapacheには、apache起動用の.exeが見当たらないのですが、これはサーバーと一緒に起動されているということなのでしょうか?
サーバーと一緒に起動したはずです。
(今手元に環境がないので確認できていません)
FM Server の Apache ログを見てみるか、tasklist コマンドでプロセス一覧見てみるとはっきりすると思います。
返信ありがとうございました。
質問に丁寧に答えていただきありがとうございました。
ローカルPCのhostsファイルで、ホスト名等の設定を行い。記事の手順に沿って設定を行ってみたのですが、FMEのstartを押すとProblem with primary server.とエラーが表示され、配信が行えません、これはどのような理由が考えられますか?