這是我的第一個問題: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