|
|
|||||
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
play Embeded FLV / MP3
Как воспроизвести?
Поиск не помог FD
__________________
smival.com Последний раз редактировалось $mival; 09.02.2010 в 11:51. |
|
|||||
Modus ponens
|
http://code.google.com/p/e4xu/source...VTranscoder.as
Но там есть пара багов, которые я не знаю как пофиксить / чем они вызваны... Т.е. не все FLV будут работать. Или вот: http://lib.haxe.org/d/format/1.14/format/flv
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
Цитата:
это должно как то помочь решить вопрос?
__________________
smival.com |
|
|||||
Modus ponens
|
А, ок, принцип работы следующий, в полученном массиве будут кадры видео выдернутые из FLV. Что нужно дальше сделать:
public static function compileEmbeddedVideo(input:ByteArray, toFile:String):ByteArray { var sbgColor:SetBackgroundColor = new SetBackgroundColor(); sbgColor.color = 0xFF; var defSLData:DefineSceneAndFrameLabelData = new DefineSceneAndFrameLabelData(); //defSLData.frameLabelCount var symbol:SymbolClass = new SymbolClass(); symbol.classNames = ["embedded_fla.MainTimeline"]; symbol.numSymbols = 1; symbol.tagIDs = [1]; var frames:Vector.<ByteArray> = FLVTranscoder.read(input); var videoStream:DefineVideoStream = new DefineVideoStream(); videoStream.characterID = 1; videoStream.codecID = FLVTranscoder.videoCodec; videoStream.height = FLVTranscoder.height; videoStream.width = FLVTranscoder.width; videoStream.numFrames = frames.length; var placeObject:PlaceObject2 = new PlaceObject2(); placeObject.characterId = 1; placeObject.depth = 1; placeObject.placeFlagHasCharacter = true; placeObject.placeFlagHasMatrix = true; placeObject.matrix = SWFUtils.writeMatrix(new Matrix()); var poBA:ByteArray = placeObject.compile(); var videoFrame:VideoFrame = new VideoFrame(); videoFrame.streamID = 1; var showFrame:ShowFrame = new ShowFrame(); var sfBA:ByteArray = showFrame.compile(); var swf:ByteArray = new ByteArray(); swf.endian = Endian.LITTLE_ENDIAN; frameCount = frames.length; writeHeader(swf, toFile); //swf.writeBytes(sbgColor.compile()); //swf.writeBytes(defSLData.compile()); //swf.writeBytes(symbol.compile()); swf.writeBytes(videoStream.compile()); var i:int; var fakePlaceObject:ByteArray = new ByteArray(); fakePlaceObject.endian = Endian.LITTLE_ENDIAN; fakePlaceObject.writeByte(0x85); fakePlaceObject.writeByte(0x06); fakePlaceObject.writeByte(0x11); fakePlaceObject.writeByte(0x01); fakePlaceObject.writeByte(0x00); fakePlaceObject.writeByte(0x00); fakePlaceObject.writeByte(0x00); fakePlaceObject.position = 0x0; var soundBlock:SoundStreamBlock = new SoundStreamBlock(); var soundHead:SoundStreamHead = FLVTranscoder.soundStreamHead; var mp3Data:MP3StreamSoundData = new MP3StreamSoundData(); var hasSound:Boolean = soundHead !== null; if (hasSound) swf.writeBytes(soundHead.compile()); for each (var arr:ByteArray in frames) { videoFrame.frameNum = i; videoFrame.videoData = arr; if (i === 0x0) { poBA.position = 0x0; swf.writeBytes(poBA); } else { fakePlaceObject.position = 0x5; fakePlaceObject.writeShort(i); fakePlaceObject.position = 0x0; swf.writeBytes(fakePlaceObject); } swf.writeBytes(videoFrame.compile()); if (hasSound) { mp3Data.data = FLVTranscoder.soundFrames[i]; mp3Data.seekSamples = FLVTranscoder.seekSamples[i]; mp3Data.sampleCount = FLVTranscoder.sampleCounter[i]; soundBlock.streamSoundData = mp3Data.write(); swf.writeBytes(soundBlock.compile()); } sfBA.position = 0x0; swf.writeBytes(sfBA); i++; } writeEnd(swf); swf.position = 0x4; swf.writeUnsignedInt(swf.length); swf.position = 0x0; return swf; } http://code.google.com/p/e4xu/source...VCompiler.mxml Вот тут есть полностю работающая демка. Но лучше было бы попробовать flv.format'ом воспользоваться, я сколько со своей эксперементировал - какие-то FLV нормально читаются, а в каких-то есть напряги со звуком, которые я не понял как побороть...
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
|
получается из эмбед байтмассива мы опять возвращаем всё в файл и грузим лоадером. а смысл тогда было это делать если можно сразу загрузить FLV и так?
я же предполагал, что флеш (не эйр) будет проигрывать заэмбеденные флвшки, то есть не подгружая извне (нужно для множества видеоэффектов в презентации, которые часто обновляются и обновлять swc с ними через flash ide неудобно) т.е. без эйр данная цель невыполнима?
__________________
smival.com |
Часовой пояс GMT +4, время: 04:51. |
|
« Предыдущая тема | Следующая тема » |
Теги |
embed , flv , mp3 |
|
|