当前位置 : 主页 > 手机开发 > 无线 >

actionscript-3 – 从摄像机录制视频,覆盖位图,添加音频,在as3 / AIR手机中保存到设

来源:互联网 收集:自由互联 发布时间:2021-06-10
我的任务是在移动设备上录制来自摄像机的实时视频流,然后覆盖随时间变化的位图,并将音频mp3轨道添加到视频文件中,然后将其保存到设备上的某个位置,如相机胶卷. 我看到一些有用的
我的任务是在移动设备上录制来自摄像机的实时视频流,然后覆盖随时间变化的位图,并将音频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>
网友评论