사용자 로컬 하드 디스크에 저장된 FLV 파일에 웹캠의 비디오 및 오디오를 기록하려고합니다. 네트워크에서 FMS (Red5) 서버로 비디오를 스트리밍하기 위해 NetConnection 및 NetStream을 사용하는이 코드 버전이 있지만 대역폭이 낮거나 불안정한 네트워크 상황에서 로컬로 비디오를 저장할 수 있어야합니다. 저는 FLex 3.2와 AIR 1.5를 사용하고 있습니다. 따라서이 문제를 방지하는 샌드 박스 제한이 있어야한다고 생각하지 않습니다.비디오를 AIR의 로컬 디스크에 어떻게 기록합니까?
상황은 내가 본 적이 :
- FileStream - 한 FLV를 만들기위한 로컬 파일하지만 .attachCamera 및 .attachAudio의 methids을 reading.writing 수 있도록합니다.
- flvrecorder - 웹캠에서 화면 캡처를 생성하고 자체 flv 파일을 만듭니다. 오디오를 지원하지 않습니다. 라이센스로 인해 상업적 사용이 금지됩니다.
- SimpleFLVWriter.as - wierd 라이센스가없는 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을 그냥 비디오를 녹화하려면이 WANY에 악용 될 수 없습니다에서 그것을 방해하는 위의 코드에 뭔가 문제 중 하나가 있다는 것을 나에게 보인다.
내가 알고 싶은 것은 위의 코드에 무엇이 (있는 경우) 무엇입니까? b) NetStream이 디스크에 레코딩을 지원하지 않으면 오디오 및 비디오를 사용자 로컬 하드 디스크의 파일에 캡처하는 다른 방법이 있습니까?
미리 감사드립니다.
가 왜 AIR 2.0을 사용하는? 마이크 녹음을 위해 AIR 2.0 기능을 사용하는 것이 더 쉬울 수도 있습니다 ... AIR 2.0을 사용하면 적어도 비디오를 압축 할 수 있습니다 (Alchemy를 사용하지 않음). 또는 적어도 스트림 파일 시스템에 쓰지 않기 위해 재생할 수 있습니다. – Rella
묻는 시점에 AIR 2.0은 아직 베타 버전이었습니다. 나는 그것을 들여다 보았고, 가능하게 만들 카메라 나 FileStrewam 객체를위한 추가 API를 가지고 있지 않은 것으로 보입니다. 그러나 AIR 2.0이 카메라의 로컬 기록을 허용한다면, 확실히 사용할 것입니다. –