我需要以不同的速度播放 FLVPlayback 视频,我可以通过更改 FLVPlayBack 的帧速率来做到这一点,我如何使用 as3 来实现这一点?
或者有没有其他方法可以做到这一点?请建议我。
梅加娜
我需要以不同的速度播放 FLVPlayback 视频,我可以通过更改 FLVPlayBack 的帧速率来做到这一点,我如何使用 as3 来实现这一点?
或者有没有其他方法可以做到这一点?请建议我。
梅加娜
在 AS3 中无法更改视频的帧速率,它将始终以视频的原生帧速率呈现。
我能想到的唯一方法是编写某种计算如何移动播放头的函数,但我不能保证这种方法的结果.....
编辑:正如您在评论中所问的那样,是的,您可以通过控制 NetStream 来做到这一点。在这里你有解决方案:http: //younsi.blogspot.it/2009/03/how-to-play-video-in-flash-in-slow.html
有点晚了,但实际上有一种方法可以以慢动作播放 FLV,而无需不断地寻找或反复播放/暂停。它只是非常参与。
如果您使用 URLStream 打开 .flv 文件,则可以访问这些位。扫描时间戳,重写它,然后以数据生成模式将新的 ByteArray 传递给 NetStream。使用它,您可以以任何帧速率播放视频 - 尽管以慢/快动作播放音频的能力取决于所使用的编解码器。FLV 数据包的布局类似于:
要更改音频采样率,您需要处理数据——比仅仅更改时间戳要复杂得多。例如,我知道 AAC 数据有一个标头,它将采样率指定为数组的索引:
[ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350 ]
因此,如果您有 44.1 kHz 音频(采样率索引 = 4),您可以通过将采样率声明为 22.05 kHz(采样率索引 = 7)以半速播放
//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;
}