【问题标题】:NetStream.Buffer.Full not fired after call to NetStream.pause调用 NetStream.pause 后未触发 NetStream.Buffer.Full
【发布时间】:2011-09-30 00:56:41
【问题描述】:

我在 AS3 中制作了一个小型视频播放器,我发现在调用 NetStream.pause() 或 NetStream.togglePause() 之后,不再触发任何状态消息。 如果我在视频缓冲时单击“暂停”按钮,我永远不会收到 Buffer.Full 消息。

这里有一些代码:

_connection = new NetConnection();
_connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_connection.connect(null);

// create NetStream instance
_stream = new NetStream(_connection);
_stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

// event handler
// not called after the stream has been paused
private function netStatusHandler( e:NetStatusEvent ):void
{
    trace("code:", e.info.code);
}

// pause button click handler
private function videoClickHandler( e:MouseEvent ):void
{
    _stream.togglePause();
    _isPaused = !_isPaused;
    controls.playPause.gotoAndPlay((_isPaused) ? 10 : 3);
}

我在这里错过了什么?

谢谢。

【问题讨论】:

  • 展示你如何创建_connection
  • 更新了代码以显示我是如何创建连接的
  • 代码对我来说看起来很粘,您确定正在建立与服务器的连接。和从服务器发送的流 iws?通常对于流媒体,您还必须调用服务器函数。你用的是什么流媒体服务器?
  • 我也没有看到像我在答案中发布的那样的错误处理功能。您可能希望顶部包括那些以查看发生了什么。
  • 我只是在播放一些基本的 f4v/flv 文件,我没有使用流媒体服务器,但是任何时候它调用 NetStream.pause/togglePause 都不会“发送”更多状态代码。我已经使用计时器对问题进行了排序,并检查了 NetStream.bufferLength 以查看缓冲区是否已满。

标签: flash actionscript-3 netstream


【解决方案1】:
_connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

【讨论】:

    【解决方案2】:

    晚了几年,但遇到了同样的问题。我可以通过查看接收 NetStream.Unpause.Notify 时 bufferLength 是否大于 bufferTime 来修复它。

    类似这样的代码:

    switch(event.info.code) {
          case 'NetStream.Play.Start':
          case 'NetStream.Buffer.Full':
              currentState = 'playing';
              return;
          case 'NetStream.Unpause.Notify':
              if (this.ns.bufferLength >= this.ns.bufferTime) 
                  currentState = 'playing';
              return;
          case 'NetStream.Pause.Notify':
              currentState = 'paused';
              return;
      }
    

    【讨论】:

      猜你喜欢
      • 2023-02-03
      • 2023-03-26
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多