Um eine FLV zu einem ByteArray, starten durch Instanziieren ByteArrayFlvEncoder zu kodieren. Der Rest ähnelt der letzten Version. Sie können jedoch updateDurationMetadata() aufrufen, wenn Sie die Eigenschaft duration in den Metadaten aktualisiert haben. Rufen Sie abschließend kill() auf, um das Objekt für die Garbage Collection vorzubereiten:?
var baFlvEncoder:ByteArrayFlvEncoder = new ByteArrayFlvEncoder(myFrameRate);
baFlvEncoder.setVideoProperties(myWidth, myHeight, VideoPayloadMakerAlchemy);
// (Omit the 3rd argument to NOT use Alchemy if you're targeting Flash 9)
baFlvEncoder.setAudioProperties(BaseFlvEncoder.SAMPLERATE_44KHZ, true, false, true);
baFlvEncoder.start();
baFlvEncoder.addFrame(myBitmapData, myAudioByteArray);
baFlvEncoder.addFrame(myBitmapData, myAudioByteArray); // etc.
baFlvEncoder.updateDurationMetadata();
saveOutMyFileUsingFileReference(baFlvEncoder.byteArray);
baFlvEncoder.kill(); // for garbage collection
Und
Um eine FLV direkt in einer lokalen Datei (in der Luft), instanziiert FileStreamFlvEncoder mit einem Aktenzeichen, kodieren und die freiliegende Filestream öffnen, und es dann schließen, wenn Sie fertig sind :?
var myFile:File = File.documentsDirectory.resolvePath("video.flv");
var fsFlvEncoder:FileStreamFlvEncoder = new FileStreamFlvEncoder(myFile, myFrameRate);
fsFlvEncoder.fileStream.openAsync(myFile, FileMode.UPDATE);
fsFlvEncoder.setVideoProperties(myWidth, myHeight, VideoPayloadMakerAlchemy);
fsFlvEncoder.setAudioProperties(BaseFlvEncoder.SAMPLERATE_44KHZ, true, false, true);
fsFlvEncoder.start();
fsFlvEncoder.addFrame(myBitmapData, myAudioByteArray);
fsFlvEncoder.addFrame(myBitmapData, myAudioByteArray); // etc.
fsFlvEncoder.updateDurationMetadata();
fsFlvEncoder.fileStream.close();
fsFlvEncoder.kill();
Für weitere Einzelheiten bei Temperaturen unter Referenz-Link:
http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/