AS3 - 如何改变FLVPlayBack的速度

时间:2012-03-21 09:46:28

标签: actionscript-3 flvplayback

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

或者还有其他方法可以做同样的事吗?请建议我。

Meghana

3 个答案:

答案 0 :(得分:1)

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

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

编辑: 正如您在评论中提出的那样,YES,您可以通过控制NetStream来实现。这里有解决方案:http://younsi.blogspot.it/2009/03/how-to-play-video-in-flash-in-slow.html

答案 1 :(得分:1)

有点迟到,但实际上有一种方法可以慢速运动FLV而无需不断寻找或重复播放/暂停。它只是非常参与。

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

  1. " FLV"
  2. 包长度
  3. 数据包类型(音频/视频/元数据)
  4. 时间戳
  5. 其他标题
  6. 数据
  7. 要更改音频采样率,您需要清理数据 - 比仅更改时间戳更复杂。例如,我知道AAC数据有一个标题,它将采样率指定为数组的索引:

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

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

答案 2 :(得分:0)

//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;

}