【发布时间】:2012-03-21 09:46:27
【问题描述】:
我需要以不同的速度播放 FLVPlayback 视频,我可以通过更改 FLVPlayBack 的帧速率来做到这一点吗?如何使用 as3 来实现?
或者还有其他方法可以做到这一点吗?请给我建议。
梅加娜
【问题讨论】:
-
AS 中没有内置支持吗?
标签: actionscript-3 flvplayback
我需要以不同的速度播放 FLVPlayback 视频,我可以通过更改 FLVPlayBack 的帧速率来做到这一点吗?如何使用 as3 来实现?
或者还有其他方法可以做到这一点吗?请给我建议。
梅加娜
【问题讨论】:
标签: actionscript-3 flvplayback
在 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;
}
【讨论】: