2013-03-27 2 views
0

필자의 경우 비디오 스트림은 Android MediaRecorder입니다. [업데이트] 일부 온라인 정보에서 비디오 스트림은 일반적으로 setOutputFile (FileDescriptor fd) 함수에서 fd로 제공 될 수 있습니다. 비디오 스트림에서 프레임을 캡처/잡는 방법은 무엇입니까?

프레임을 캡처 관련 게시물

은 여기에 있습니다 : " Processing Android video frame by frame while recording"

한 대답은 :

  1. 열고 NDK 사용하여 스트림 (아마도 API를 구현에 따라)
  2. 스트림의 바이트를 수정합니다 - 각 프레임은 별도의 패킷으로 전송됩니다. 카메라에서 각 패킷을 가져 와서 수정해야합니다. 색상 바꾸기 또는 번역이 가능합니다. OpenGL을 사용하여 유리 효과를 추가하여 이미지를 완전히 수정할 수도 있습니다. 효과.
  3. ...

그러나 나는/라이브러리/캡처 비디오 스트림에서 각 프레임을 잡기 위해 사용할 수있는 API 모른다. 는

내가 "wiki: Streaming media with ffserver"

읽기 (나는 비디오 파일 사용는 FFmpeg에 프레임을 인코딩 할 수 있었다)하지만 난에 프로그램을 만드는 방법에 대해 명확하지 않다 C/C++로부터/잡아 프레임을 캡처하려면 비디오 스트림.

예제 및 튜토리얼과의 연계가 인정 될 것입니다.

답변

0

아마도 프레임을 비디오로 인코딩하는 데 FFmpeg 명령 줄 도구를 사용했을 것입니다. 이제 FFmpeg가 사용하는 라이브러리를 사용할 차례이다 : libavcodec, libavformat, libavutil ect. the FFmpeg download page에서 소스를 다운로드하기 만하면 doc/examples/ 디렉토리에서 몇 가지 예제를 사용하는 방법을 찾을 수 있습니다. 좋은 예가 decoding and encoding입니다.

+0

감사합니다. 사실 FFmpeg 라이브러리를 사용하여 비디오 파일을 디코딩하고 각 프레임을 처리 한 다음 다른 비디오 파일로 인코딩합니다. 그것은 작동합니다. 지금은 입력 비디오 파일을 입력 비디오 스트림으로 변경합니다. 그러나 ffmpeg의 예제는이 주제를 다루지 않습니다. – user1914692

+0

질문이 명확하지 않습니다. 원하는 것에 대한 자세한 정보를 제공해주십시오. 어떤 물줄기를 제공하고 싶은가? 그들 중 일부는 RTP, RTMP 또는 MPEGTS입니다. [Streamingguide] (http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide)를 선택하면 도움이 될 것입니다. –

+0

내 게시물에는 "내 경우 엔 비디오 스트림이 Android MediaRecorder에서 가져온 것입니다."라고 씁니다. 전에는 주제에 대해 손댈 수 없을 것 같아요. 나는 ffmpeg 문서에 관련된 튜토리얼을 읽었다. 그러나 문제는 API 예제가 존재하지 않는다는 것입니다. 비디오 스트림에서 각 프레임을 캡처/캡처하는 데 사용할 수있는 API/라이브러리를 모르겠습니다. 그러나 어쨌든 당신을 감사하십시오. – user1914692

관련 문제