2012-07-30 6 views
4

iPhone 카메라의 h.264 비디오를 서버로 RTP하기 위해 iPhone의 MOV 파일에서 h.264 NAL 단위 ( )를 가져 오려고합니다.퀵타임 MOV 파일에서 h.264 NAL 단위 구문 분석

Apple의 API는 카메라 출력의 인코딩 된 비트 스트림에 직접 액세스 할 수 없으므로 MOV 파일에만 기록 할 수 있습니다.

나는 Apple's MOV structure reference에 따라, 원자에 MOV 파일을 구문 분석했지만 지금은 RTP에 포장하고 스트리밍하기 위해 MDAT 원자에서 NAL 단위를 추출해야합니다.

구조체에 대한 설명서를 찾을 수 없어서 도움이 되었기 때문에 기꺼이 도와 드리겠습니다. 감사!

+0

스티브 맥팔린 (http://stackoverflow.com/users/227021/steve-mcfarlin)에는 이러한 라이브러리가 있습니다. – magma

+0

@avishic 마지막으로 어떻게 해결 했습니까? 라이브러리를 사용하거나 수동으로 프레임을 구문 분석합니까? 질문에 대한 답변을 여기에 올리시겠습니까? 감사. – Anastasia

+1

@Anastasia 완전히 해결하지 못했습니다. 단일 비디오 채널 이상을 포함하는 경우 mdat를 구문 분석하는 것은 매우 복잡해 보입니다. 그러나 그것이 단일 비디오 채널을 포함한다면, mdat는 단순히 NAL 단위의 집합입니다. 따라서 헤더 (mdat 및 nal 단위)에 따라 각 nal 단위의 바이트 수를 파악하고 직접 구문 분석 할 수 있습니다. 이상적이지는 않지만 작동하는 솔루션입니다. – avishic

답변

2

mdat 원자는 자체적으로 의미가없는 큰 데이터 묶음입니다. 그 내용을 이해하려면 먼저 moov 원자를 구문 분석해야합니다. 당신은 MOV 파일을 원자로 분해했다고 말했습니까? moov, mdat, ftyp 및 몇 가지 다른 최상위 레벨 원자보다 더 깊이 파고 들었습니까? 필요한 데이터를 얻기 위해 moov 아톰 (거기에 많은 원자)을 파싱해야합니다 (stco에서 인덱싱 된 H.264 청크의 데이터와 결합 된 H.264 stsd 아톰에 첨부 된 추가 코덱 데이터 또는 co64 원자).

또는 지루한 작업을 이미 완료 한 라이브러리를 사용하십시오.

+2

안녕하세요 Mike. 모든 라이브러리가 파일이 봉인 된 것으로 간주하고 읽는 동안 작성된 파일을 구문 분석하기 때문에 다른 라이브러리를 사용할 수 없습니다. 하나의 H264 비디오 트랙 만 사용하면 'mdat'에서 NAL 유닛을 얻는 것이 어렵지 않습니다. 실제로이 헤더가 크기에 따라 대체됩니다. 'moov'원자 정보를 사용하여 파일을 오디오로 파싱하려면 어떻게해야합니까? 좋은 참조? 감사! – avishic