0

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

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

梅加娜

4

3 回答 3

1

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

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

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

于 2012-03-21T10:55:34.110 回答
1

有点晚了,但实际上有一种方法可以以慢动作播放 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)以半速播放

于 2014-08-23T13:12:42.660 回答
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;

}
于 2012-03-21T13:15:09.607 回答