gpt4 book ai didi

air - 如何在 AIR 中将视频录制到本地磁盘?

转载 作者:行者123 更新时间:2023-12-04 08:39:17 29 4
gpt4 key购买 nike

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

我见过的东西:

  • FileStream - 允许读取.写入本地文件,但不允许使用 .attachCamera 和 .attachAudio 方法来创建 FLV。
  • flvrecorder - 从网络摄像头生成屏幕抓取并创建它自己的 flv 文件。不支持音频。许可证禁止商业用途。
  • SimpleFLVWriter.as - 类似于没有奇怪许可证的 flvrecorder。不支持音频。
  • This stackoverflow post - 它演示了使用 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>

    在我看来,上面的代码有问题阻止了它的工作,或者 NetStream 不能被滥用来录制视频。

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

    提前致谢!

    最佳答案

    我的解决方案是将 Red5 嵌入到 AIR 中。
    与你分享我的文章

    http://mydevrecords.blogspot.com/2012/01/local-recording-in-adobe-air-using-red5.html

    通常,解决方案是将免费媒体服务器 Red5 像 Assets 一样嵌入到 AIR 中。因此,服务器将出现在 AIR 应用程序文件夹中。然后,通过 NativeProcess,您可以运行 Red5 并将其实例保存在内存中。因此,您可以在没有任何网络问题的情况下进行本地视频录制。

    关于air - 如何在 AIR 中将视频录制到本地磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2113080/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com