ストリーミングサーバーを使ってRTMPでFLVを配信する場合、HTTP経由で配信するのとプレーヤー周りのActionScriptの書き方が若干変えなければならない。
というのも、以下のような違いががあるからである。
・NetStreamObj.bytesLoaded、NetStreamObj.bytesTotalが使えない
・onStatusのNetStream.Play.Stopは「クライアント側のストリーミング再生完了」ではなく、「サーバー側のストリーミング配信の完了」である
・onMetaDataでメタデータを取ろうと思ってもうまくイベントが起きない
ということでシークバーとかの表示には欠かせない「FLVの全体の長さ」がhttp経由と同じ方法で取得できないのだが、以下のように記述することで、durationの値を取得することができる。
NetConnectionObj.call("getStreamLength", new getFLVLen(), 'flashvideo filename');
}
function getFLVLen(){
this.onResult = function(retVal) {
if(!duration) duration = retVal;
};
}
実際には個人でストリーミングサーバーを借りてまでFLVを流すことなんてないだろうが、せっかく調べたので備忘録として。
コメント (1)
はじめまして。
ライブ配信について勉強しております。
こちらのエントリーに書かれたコードはjava script周りではなく、action scriptでしょうか?
PEGASYS WEB FLV Player で提供されているswfファイルを使用してリアルタイム配信を行おうとしているのですが、rtmpの受信が上手くいかないようです。
投稿者: mute | 2008年11月27日 21:53
日時: 2008年11月27日 21:53