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) | 技術メモ | このブログの読者になる | 更新情報をチェックする

2012年10月03日

Adobe Flash Media Server をレンタルサーバー (Linux) にインストールする

先日は Windows 7 で Flash Media Server を試したが、使った Windows 7 マシンが遅すぎてたまらないのでレンタルサーバーにインストールすることにした。
【関連記事】
Adobe Flash Media Server のインストール (Windows 7)
今回使用したサーバーはさくらインターネットの VPS で、OS は CentOS 5.7。
インストールした Flash Media Server のバージョンは 4.5.0。
インストーラーの入手方法は Windows 7 のときと同じなので割愛する。

インストール

インストーラーの ZIP ファイルを解凍すると linux というディレクトリがあり、その中に FlashMediaServer4.5_x64.tar.gz があるのでそれを解凍する。
# unzip -d FlashMediaDevServer_4_5_all FlashMediaDevServer_4_5_all.zip
# cd FlashMediaDevServer_4_5_all/linux
# tar zxvf FlashMediaServer4.5_x64.tar.gz
# cd FMS_4_5_0_r297
FMS_4_5_0_r297 ディレクトリ内の installFMS を実行して インストールする。
インストールの際、以下の2点に注意:
  • 試用版としてインストールする場合は、シリアル番号は入力不要
  • レンタルサーバーの場合すでに Web サーバーが 80 番を使用している場合が多いと思うので、Apache は別のポートを指定する (ここでは 8080 とした)。
# ./installFMS

Copyright(C) 1993-2011 Adobe Systems Incorporated. All rights reserved.

Adobe Flash Media Server 4.5 for Linux

Adobe Flash Media Server 4.5 will be installed on this machine.

You will be asked a series of questions during the install
process and will be presented with the defaults for these questions.

Support is available at http://www.adobe.com/go/flashmediaserver_en

To install Adobe Flash Media Server now, press ENTER.

To cancel the installation at any time, press Control-C.

(<ENTER> キー)
ADOBE FLASH MEDIA SERVER

End User License Agreement

NOTICE TO USER: THIS END USER LICENSE AGREEMENT (?AGREEMENT?) GOVERNS INSTALLATION AND USE BY LICENSEES OF THE ADOBE SOFTWARE DESCRIBED HEREIN...

Do you agree with the license agreement? (y/n): y

Please enter your Adobe Flash Media Server 4.5 serial number.

(<ENTER> キー)
You have not entered a serial number. Falling back to
the Adobe Flash Media Development Server!

Would you like to try again? y/n: Default [n]: (<ENTER> キー)

Adobe Flash Media Server 4.5 requires approximately 200MB of
disk space.

The installer will install Adobe Flash Media Server 4.5 in the
following directory
Default [/opt/adobe/fms]: (<ENTER> キー)


The Adobe Flash Media Server communicates on the IANA-assigned
port of 1935, which is the port most Flash applications expect,
and can also communicate on port 80
over RTMPT, HTTP webserver proxy, and for HTTP Dynamic Streaming origin services.

Please enter the Adobe Flash Media Server port(s), comma-separated
Default [1935,80]: 1935,8080

Please enter the port to use for the Admin service. You can only specify one
admin port.
Default [1111]: (<ENTER> キー)


The administrative user name and password you provide here is required to use
the Adobe Flash Media Server Management Console for
administration, monitoring, and debugging.

Please enter the administrative username: admin

For increased security, enter a password of at least 8 characters.
Please enter the administrative password: (パスワード入力)
Confirm password: (再入力)


When the Adobe Flash Media Server service is started, the service
can be run as a user other than "root". The server would change to this user
when the server is started and has acquired its ports.

Please enter the user that the Adobe Flash Media Server service will run as
Default user [fms]: (<ENTER> キー)

Please enter a valid user group for the "fms" user: Default group [fms]: (<ENTER> キー)


Do you want to install apache? (y/n)
Default [y]: (<ENTER> キー)



Apache is started as root but once it has acquired its port it starts the worker
processes as a non-priviledged user.

Please enter the user that Apache will eventually run as.
Default user [fms]: (<ENTER> キー)


Do you want the Adobe Flash Media Server service to run as a
daemon? (y/n)
Default [y]: (<ENTER> キー)


Do you want to start the Adobe Flash Media Server
after the installation is done? (y/n)
Default [y]: (<ENTER> キー)
  :
うまくインストールされていれば、http://(サーバー名):8134/ で Start Screen を表示できる。
(なぜ 8080 ではなく 8134 なのかは不明)
インストール #25

動画が再生されれば正常インストールされている。
posted by K/I at 19:52 | 東京 ☁ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする