0

サーバーで問題なくストリーミングできる 20 分の FLV があります。クライアントはセッション間でユーザーの位置を保持したいので、time() は mySQL に保存され、FlashVar として返され、(設定されている場合) seek() およびテスト用のテキスト フィールドに供給されます。seek() はローカルで正常に動作しますが、サーバーでは、seek() の設定に関係なく、常に NetStream.Seek.InvalidTime エラーが発生します。ドキュメントはこちらです。それは非常に単純な機能です。

// 編集http://www.buraks.com/flvmdi/を使用して FLV にキーフレームを追加しまし たが、これで問題は解決しませんでした

src = "videos/LivingProof.flv";

nc = new NetConnection();
nc.connect(null);
nets = new NetStream(nc);
mc_flv.attachVideo(nets);

//Attach your netstream audio to a movielcip: 
snd.attachAudio(nets); 
// create a sound object 
my_snd = new Sound(snd); 
// to adjust the volume 
my_snd.setVolume(50); 
nets.play(src);

if (starttime) {
  var dest:Number = Math.floor(starttime);
  nets.seek(dest);
  this.test.text = 'target time = ' + dest;
}

nets.onStatus = function(infoObject:Object) {
     if( infoObject.level == "status" && infoObject.code == "NetStream.Play.Stop" ) {
        getURL("javascript:setTime('9999999999');", "_self");
        nets.seek(0);
        nets.pause();
        mc_play.gotoAndStop(1);
        trace('onStatus listener fired');
    } else if (infoObject.code == "NetStream.Seek.InvalidTime") { 
        _root.test.text = "NetStream.Seek.InvalidTime";
        nets.seek(infoObject.details); 
    } 
    _root.status.text = infoObject.code;
};

誰もこれを見たことがありますか?

4

1 に答える 1

1

onStatusハンドラーにif ステートメントを追加して、NetStream.Play.Startコードを確認し、シーク ロジックをそれに移動してみてください。

src = "videos/LivingProof.flv";

nc = new NetConnection();
nc.connect(null);
nets = new NetStream(nc);
mc_flv.attachVideo(nets);

//Attach your netstream audio to a movielcip: 
snd.attachAudio(nets); 
// create a sound object 
my_snd = new Sound(snd); 
// to adjust the volume 
my_snd.setVolume(50); 
nets.play(src);

nets.onStatus = function(infoObject:Object) {
     if( infoObject.level == "status" && infoObject.code == "NetStream.Play.Stop" ) {
        getURL("javascript:setTime('9999999999');", "_self");
        nets.seek(0);
        nets.pause();
        mc_play.gotoAndStop(1);
        trace('onStatus listener fired');
    } else if (infoObject.code == "NetStream.Play.Start) {
       if (starttime) {
          var dest:Number = Math.floor(starttime);
          nets.seek(dest);
          this.test.text = 'target time = ' + dest;
        }
    } else if (infoObject.code == "NetStream.Seek.InvalidTime") { 
        _root.test.text = "NetStream.Seek.InvalidTime";
        nets.seek(infoObject.details); 
    } 
    _root.status.text = infoObject.code;
}; 
于 2012-06-13T23:53:39.370 に答える