【问题标题】:AS3 - how to change speed of FLVPlayBackAS3 - 如何改变 FLVPlayBack 的速度
【发布时间】:2012-03-21 09:46:27
【问题描述】:

我需要以不同的速度播放 FLVPlayback 视频,我可以通过更改 FLVPlayBack 的帧速率来做到这一点吗?如何使用 as3 来实现?

或者还有其他方法可以做到这一点吗?请给我建议。

梅加娜

【问题讨论】:

  • AS 中没有内置支持吗?

标签: actionscript-3 flvplayback


【解决方案1】:

在 AS3 中无法更改视频的帧速率,它将始终以视频的原生帧速率呈现。

我能想到的唯一方法是编写某种函数来计算如何移动播放头,但我不能保证这种方法的结果.....

编辑: 正如您在评论中所问的那样,是的,您可以通过控制 NetStream 来做到这一点。解决方案在这里:http://younsi.blogspot.it/2009/03/how-to-play-video-in-flash-in-slow.html

【讨论】:

  • Richie,我们可以为 netStream 做那个吗??
  • 感谢@Sr。里奇,为你的答复。我想这也可以提高视频的速度。我一定会检查一下并回复你。
【解决方案2】:

提示有点晚,但实际上有一种方法可以以慢动作播放 FLV,而无需不断地寻找或反复播放/暂停。只是非常投入。

如果您使用 URLStream 打开 .flv 文件,则可以访问这些位。扫描时间戳,重写它,然后以数据生成模式将新的 ByteArray 传递给 NetStream。使用它,您可以以任何帧速率播放视频 - 尽管以慢/快动作播放音频的能力取决于所使用的编解码器。 FLV 数据包的布局类似于:

  1. “FLV”
  2. 数据包长度
  3. 数据包类型(音频/视频/元数据)
  4. 时间戳
  5. 其他标题
  6. 数据

要更改音频采样率,您需要处理数据 - 比仅更改时间戳更复杂。例如,我知道 AAC 数据有一个标头,它将采样率指定为数组的索引:

[ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350 ]

因此,如果您有 44.1 kHz 的音频(采样率索引 = 4),您可以通过将采样率声明为 22.05 kHz(采样率索引 = 7)以半速播放

【讨论】:

    【解决方案3】:
    //set your framerate here whatever you want
    stage.frameRate = 30;
    var FRAMERATE : Number = stage.frameRate;
    
    btnActual.addEventListener(MouseEvent.CLICK, videoSpeed);
    btn15.addEventListener(MouseEvent.CLICK, videoSpeed);
    btn5.addEventListener(MouseEvent.CLICK, videoSpeed);
    
    function videoSpeed (myEvent:Event):void{
    
        var newFrameRate = Number(myEvent.target.value);    
    
        stage.frameRate = newFrameRate;
    
    }
    

    【讨论】:

    • 感谢@swati 的回复,我试过了,但这似乎对我不起作用:(
    • 不,改变帧率是行不通的。 Flash 将始终尝试以其本机帧速率渲染视频
    • 对于视频和音频同步到流的 SWF 文件,Flash 实际上会降低主电影的帧速率以匹配加载的 SWF 视频的帧速率。为了让我的主要电影以每秒 60 帧的速度运行,我不得不切换到使用 F4V 或 FLV 文件,它们以它们的原始帧速率播放,而不会影响主要电影的帧速率。在这两种情况下,更改主要电影的帧速率都不会影响播放的视频。
    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多