这是我的第一个问题:D,首先抱歉我的英语。如何将MovieClip(位图和音频)保存到FLV?
我的问题基本上是如何保存Flash影片剪辑到FLV。
影片剪辑是由用户生成的,它有各种声音和动画,我需要保存一个FLV发送给Youtbue。
我试过了什么: 我在这里发现了一些关于使用Alchemy Lib的问题,我正在使用它来抓取Movie Clip帧并保存到Bitmap。
Alchemy Lib将这些帧转换为像FLV一样的魅力,并支持使用ByteArray保存声音块。
在这种情况下,我的问题是,我怎么能抓住电影剪辑的声音发送给炼金术宝? 从来就尝试使用:
SoundMixer.computeSpectrum(sndData, false, 2);
女巫返回我sndData变量的ByteArray但无用的,因为用于it's呈现在屏幕上的音频波形。
阿布德吼声使用
Sound.extract();
,但我认为那声音类只能用于一个MP3的声音,我需要抓住的影片剪辑产生的混合声音。
是否有另一种方法从MovieClip生成FLV?
下面我的一些代码:
我根据我的教程下的代码,我在这个环节发现:http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/
private const OUTPUT_WIDTH:Number = 550;
private const OUTPUT_HEIGHT:Number = 400;
private const FLV_FRAMERATE:int = 24;
private var _baFlvEncoder:ByteArrayFlvEncoder;
public var anime:MovieClip;
//Starts recording
public function startRecording()
{
this.addEventListener(Event.ENTER_FRAME, enterFrame);
//Initialize the Alchemy Lib
_baFlvEncoder = new ByteArrayFlvEncoder(stage.frameRate);
_baFlvEncoder.setVideoProperties(OUTPUT_WIDTH, OUTPUT_HEIGHT);
_baFlvEncoder.setAudioProperties(FlvEncoder.SAMPLERATE_22KHZ);
_baFlvEncoder.start();
}
//Stops recording
public function stopRecording()
{
this.removeEventListener(Event.ENTER_FRAME, enterFrame);
_baFlvEncoder.updateDurationMetadata();
// Save FLV file via FileReference
var fileRef:FileReference = new FileReference();
fileRef.save(_baFlvEncoder.byteArray, "test.flv");
_baFlvEncoder.kill();
}
//The Main Loop activated by StartRecording
public function enterFrame(evt:Event)
{
var bmpData:BitmapData = new BitmapData(OUTPUT_WIDTH, OUTPUT_HEIGHT, false, 0xFFFFFFFF);
bmpData.draw(anime);
var sndData:ByteArray = new ByteArray();
SoundMixer.computeSpectrum(sndData, false, 2);
_baFlvEncoder.addFrame(bmpData, sndData);
bmpData.dispose();
}
为什么你需要特别的FLV?你在使用Flash IDE吗?如果是这样,您可以将该电影导出为AVI(文件|导出|“导出电影...”)并以这种方式将其上传到YouTube。 – iND 2012-01-06 19:09:51
目前没有可能,因为MovieClip只有soundTransform属性,但无法访问其声音对象。也许Adobe意向没有添加该功能,所以没有人能够在AS3中创建自己的swf2flv导出器。 – 2012-01-07 11:37:16
我有一个想法如何做到这一点很难:它可能是声音数据与MovieClip对象存储在一起,所以你可能会尝试序列化为字节数组,然后挖掘字节码来找到声音数据并提取它:) – 2012-01-07 17:20:17