如何将视频录制到AIR中的本地磁盘?

Jim*_*ran 8 air video-capture

我正在尝试将网络摄像头的视频和音频录制到存储在用户本地硬盘上的FLV文件中.我有一个版本的代码工作,它使用NetConnection和NetStream通过网络将视频流传输到FMS(Red5)服务器,但我希望能够在本地存储视频,以用于低带宽/片状网络情况.我正在使用FLex 3.2和AIR 1.5,所以我不相信应该有任何防止这种情况发生的沙箱限制.

我见过的事情:

  • FileStream - 允许read.writing本地文件,但没有.attachCamera和.attachAudio方法用于创建FLV.
  • flvrecorder - 从网络摄像头生成屏幕抓取并创建自己的flv文件.不支持音频.许可证禁止商业用途.
  • SimpleFLVWriter.as - 类似于没有奇怪许可证的flvrecorder.不支持音频.
  • 此stackoverflow帖子 - 演示使用NetConnection/NetStream从本地磁盘播放视频.

鉴于我已经有一个版本已经使用NetStream流式传输到服务器,我认为最后一个是最有希望的,并继续把这个演示应用程序放在一起.代码编译并运行没有错误,但我在磁盘上没有单击停止按钮的FLV文件. -

<mx:Script>
    <![CDATA[

        private var _diskStream:NetStream;
        private var _diskConn:NetConnection;
        private var _camera:Camera;
        private var _mic:Microphone; 

        public function cmdStart_Click():void {
            _camera = Camera.getCamera();
            _camera.setQuality(144000, 85);
            _camera.setMode(320, 240, 15);
            _camera.setKeyFrameInterval(60);

            _mic = Microphone.getMicrophone();

            videoDisplay.attachCamera(_camera);

            _diskConn = new NetConnection();
            _diskConn.connect(null);

            _diskStream = new NetStream(_diskConn);
            _diskStream.client = this;
            _diskStream.attachCamera(_camera);
            _diskStream.attachAudio(_mic);
            _diskStream.publish("file://c:/test.flv", "record");

        }

        public function cmdStop_Click() {
            _diskStream.close();
            videoDisplay.close();
        }

    ]]>
</mx:Script>    
    <mx:VideoDisplay x="10" y="10" width="320" height="240" id="videoDisplay" />
    <mx:Button x="10" y="258" label="Start" click="cmdStart_Click()" id="cmdStart"/>
    <mx:Button x="73" y="258" label="Stop" id="cmdStop" click="cmdStop_Click()"/>

</mx:WindowedApplication>
Run Code Online (Sandbox Code Playgroud)

在我看来,上面的代码有什么问题阻止它工作,或者NetStream就不能在这个记录视频的过程中被滥用.

我想知道的是,a)上面的代码有什么问题(如果有的话)?b)如果NetStream不支持录制到磁盘,是否有其他选择将音频和视频捕获到用户本地硬盘上的文件?

提前致谢!

Sha*_*lly 2

如果不使用某些流媒体服务(例如 Windows Media 编码器、Red5 或 Adob​​e 媒体服务器或其他服务),则无法将视频直接流式传输到本地磁盘。

我已经尝试了互联网上的所有示例,但迄今为止没有解决方案。

查看此链接以了解另一种可能性:

http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/