2013-06-10 2 views
-1

iPhone 카메라에서 실시간 비디오 스트림을 RTMP 서버 (Wowza 서버)에 게시해야합니다. 비디오 스트림은 h.264 형식이어야합니다. AVFoundation이 비디오를 h.264 압축 파일에 저장한다는 것을 알고 있지만 비디오를 파일에 저장할 필요가 없습니다. 난 그냥 캡처하고 서버로 보내고 싶습니다. 다음 대리인 메서드를 사용하고 있습니다.iPhone 카메라에서 h.264 바이트를 가져 오는 방법은 무엇입니까?

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{ 
      if (connection == videoConnection) { 
      //I want something like this 
      NSData* h264VideoData=[self h264Data:sampleBuffer]; 
     } 

} 

오디오를 서버로 보내지 않고도 비디오를 보내고 싶습니다. 2017에 대한

답변

1

업데이트 :

당신은 VideoToolbox API를 사용하여 이제 비디오 및 오디오를 스트리밍 할 수 있습니다. VTCompressionSession

원래 대답 (2013) : 여기에 설명서를 참조하실 수 없습니다

, 당신은 파일에 기록 또는 소프트웨어 인코더로 비디오 스트림을 압축해야합니다 (당신은 HD와 매우 나쁜 배터리 시간을 얻지 못할 것이다). 하드웨어 인코더에서 손을 잡을 수있는 모든 가능성은 디스크에 기록해야합니다. 나는 이것이 장치의 메모리 부족으로 인한 것이라고 생각합니다.

방법은 하드웨어 가속 H264 압축을 얻을 수 있습니다 : 당신이 모두 인코더 업데이트대로 작동하지 않는 파이프에 쓰기, 파일에 쓰기 볼 수 있듯이

프레임 또는 GOP가 완전히 기록 된 후 헤더 정보. 따라서 헤더 정보를 무작위로 다시 쓰는 것처럼 인코더가 파일을 쓰는 동안 파일을 만지지 않는 것이 좋습니다. 이 헤더 정보가 없으면 비디오 파일을 재생할 수 없습니다 (크기 필드를 업데이트하므로 처음 기록 된 헤더에 파일이 0 바이트라고 표시됨).

그러나 5 초를 기록한 다음 출력 파일을 전환하고 "이전"5 초 스 니펫을 전송 한 다음 나중에 삭제할 수 있습니다. 전송할 h264 비디오 데이터를 얻으려면 * .mov 또는 * .mp4 컨테이너를 demux해야합니다.

오디오가 필요한 경우 : 파일을 전환하면 일부 오디오 샘플이 느슨해 지므로 자체 버퍼 관리를 롤업하거나 오디오를 별도로 녹음해야합니다.

+0

감사합니다. 좋아요. 동일한 MP4 파일에 오디오와 비디오를 모두 기록 할 것입니다. 어떻게 나에게 seprate h264 비디오 (NSData)와 AAC (Audio)를 객관적인 C를 사용하여 추출 할 수 있는지 제안 해주십시오. 그것을 위해 존재합니다. –

관련 문제