我需要以不同的速度播放FLVPlayback视频,我可以通过改变FLVPlayBack的帧速率来实现这一点吗?如何使用as3实现这一点?
或者还有其他方法可以做同样的事吗?请建议我。
Meghana
答案 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数据包的布局类似于:
要更改音频采样率,您需要清理数据 - 比仅更改时间戳更复杂。例如,我知道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;
}