FMSを使って録画するときのはまりポイント

Flash Media Serverを使って録画するときのお話です。3系での話。それ以外は知らない。

はまりがちなコード

マニュアル片手にやっていると次のようにコーディングしがち。関数のローカル変数になっていることがポイント。

Client.prototype.startRecord = function(path) {
    var stream = Stream.get(path);
    stream.play("livestream");
    stream.record();
}

こう書くと、数分後・数秒後にGCに回収されて録画が勝手にストップします。onStatusのコールバックも呼ばれません。中途半端に動く分、はまる。全く動かないなら気がつくけど…

はまらないコード

applicationなどのプロパティに指定しましょう。思い通りに動きます。

application.recordStreams = {};

Client.prototype.startRecord = function(path) {
    var stream = application.recordStreams[path] = Stream.get(path);
    stream.play("livestream");
    stream.record();
}

あと録画が終わったらapplication.recordStreamsの対象のStreamを削除しておきましょう。

あと…
  • NetConnection
  • NetStream

なども、同じことではまる。as3でもはまる。