我的任务是在移动设备上录制来自摄像机的实时视频流,然后覆盖随时间变化的位图,并将音频mp3轨道添加到视频文件中,然后将其保存到设备上的某个位置,如相机胶卷. 我看到一些有用的
我看到一些有用的帖子,主要是这一个:AS3 Flash/AIR recording video with webcam and save it
但显然,有些人在台式机上经历过app冻结.我只能想象在移动设备上它会更糟……
另外,如何将视频信息与单独的音频mp3一起添加到一个文件中?
有没有人做过这样的事情?
更新,我让视频正常工作.均田.我有时候仍会收到此错误.即使是短视频.Error #2030: End of file was encountered.
有时它工作正常.但至少我能够从组件中记录FLV.我还没有完成音频添加.
要运行此代码,您需要在此处找到FLVRecorder:http://www.joristimmerman.be/wordpress/2008/12/18/flvrecorder-record-to-flv-using-air/
<?xml version="1.0" encoding="utf-8"?>
import mx.core.UIComponent; import mx.events.FlexEvent; private var file:File; private var recorder:FLVRecorder=FLVRecorder.getInstance() private var fps:uint = 10; private var timer:Timer; protected function viewnavigator1_creationCompleteHandler(event:FlexEvent):void { // 2. Define the target FLV-file’s properties, the file instance to your flv-file, width & height, framerate and the systemManager instance, that’s a Flash internal declared variable and the optional duration in seconds: file=File.desktopDirectory.resolvePath("recording.flv"); recorder.setTarget(file,320,320,fps,systemManager) var camera : Camera = Camera.getCamera(); if (camera) { var ui : UIComponent = new UIComponent(); var video : Video = new Video(320, 320); camera.setMode(320, 320, 24.); video.attachCamera(camera); ui.addChild(video); cameraGroup.addElement(ui); } timer = new Timer(1000/fps); timer.addEventListener(TimerEvent.TIMER, captureScreen); timer.addEventListener(TimerEvent.TIMER_COMPLETE, stopRecording); } protected function stopRecording(event:Event):void { timer.stop(); //when saving is done recorder.addEventListener(FLVRecorderEvent.FLV_CREATED, fileMade) //when saving starts recorder.addEventListener(FLVRecorderEvent.FLV_START_CREATION, startCreatingFLV) // TODO Auto-generated method stub recorder.stopRecording() } private function startCreatingFLV(e:FLVRecorderEvent):void{ recorder.addEventListener(FLVRecorderEvent.PROGRESS,onFLVCreationProgress) } private function onFLVCreationProgress(e:FLVRecorderEvent):void{ //e.progress: percent complete (0 to 1) //pbSaving: ProgressBar component in Flex trace("saving progress ", e.progress,1); } protected function captureScreen(event:TimerEvent):void { trace("captured screen"); recorder.captureComponent(movieGroup) //DisplayObject, takes a screenshot from that component } protected function startRecording(event:MouseEvent):void { // TODO Auto-generated method stub timer.start(); } protected function fileMade(event:Event):void { trace("file made"); } ]]> </fx:Script> <s:VGroup> <s:HGroup> <s:Button label="start" click="startRecording(event)"/> <s:Button label="stop" click="stopRecording(event)"/> <s:Label id="progress" text="waiting..."/> </s:HGroup> <s:Group id="movieGroup" width="50%" height="50%"> <s:Group id="cameraGroup" width="100%" height="100%"/> <s:Image source="image.png" width="25%" height="25%"/> </s:Group> </s:VGroup>