【问题标题】:AS3 NetStream lags on first frameAS3 NetStream 滞后于第一帧
【发布时间】:2016-08-05 18:40:06
【问题描述】:

我正在 Adob​​e Air 中开发一个应用程序,以显示分辨率为 2560x1440 的博物馆展览的视频。该应用程序在我的机器上运行顺利,但是当我在另一台(功能较弱的)计算机上运行它时,它无法按预期运行。除了我自己的机器外,我还在两台机器上向应用程序发送了短信。

问题是当调用其中一个视频时,该视频被调用并显示视频的第一帧并在那里滞后了好几秒 (5-10),但我仍然可以听到音频。大约 8-10 秒后,视频会像之前播放过的一样播放,并在恢复正常播放之前短暂地断断续续(1-2 秒)。这是每次启动视频时的一致行为,只要它是一个相当大的视频(据我所知 > 50 MB)。

这在我的开发机器上不会发生,它有一个 GTX 980 显卡,但除了主板和主板之外,我想不出多台机器的规格有什么区别。

当视频启动时,视频会立即引发一个指示缓冲区已满的事件,因此缓冲似乎不是问题。

编辑:Code (Pastebin)

编辑 2:发现这是第一帧,而不是黑屏

【问题讨论】:

  • 显示您的代码以了解如何显示流。 2560x1440 压缩视频对系统要求很高。您是否从流/连接中获得任何其他状态事件?
  • 用 pastebin 链接编辑(用于语法高亮)
  • 不是答案,而是提示,如果可以的话,请使用StageVideo 而不是Video,因为它的性能要好得多。如果你不小心,内联函数也可能会反过来咬你。
  • 那么当您播放有问题的视频时,您会获得哪些 NetStatusEvent 代码以及按什么顺序?

标签: actionscript-3 flash video air


【解决方案1】:

仍然不能完全确定问题的根源在哪里,但解决方法是在调用视频后立即添加此代码。它的作用是暂停播放并添加一秒钟的计时器,然后在视频中搜索 0.5 秒。除了克服第一帧延迟之外,我还没有对此进行测试,但它确实有效。

ns.pause();
var hesitate:Timer = new Timer(1000, 1);
hesitate.addEventListener(TimerEvent.TIMER_COMPLETE, function(e:TimerEvent)
{
    ns.seek(0.5);
    ns.resume();
});
hesitate.start();

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2011-06-28
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多