2012-04-04 4 views
0

스트림에서 가져온 비디오 프레임을 기존 mp4 파일에 추가해야합니다. 청크 테이블을 업데이트하는 데 mdatstco 원자를 사용해야 함을 발견했습니다. 새 프레임/청크를 추가 할 수 있습니까? 나는이 애플 리케이션에서 이것을해야합니다.재생 중에 mp4에 비디오 프레임 추가

답변

1

이러한 추가가 가능하지만 특히 한 번에 하나의 프레임을 추가하려는 경우에는 실용적이지 않을 수 있습니다.

MP4는 생성 된 후에 수정하기가 매우 어렵다. 이는 "moov"상자의 구조 데이터에 "mdat"상자의 중요한 미디어 데이터에 대한 파일 오프셋이 포함되어 있기 때문입니다. moov 상자가 mdat 상자 앞에 위치하면 (점진적 다운로드 허용), moov 상자에 추가 된 모든 데이터 (추가 된 비디오의 새로운 키 프레임에 대한 참조)가 mdat 상자를 더 멀리 밀어냅니다. 파일을 다시 작성해야 할뿐만 아니라 그에 따라 모든 파일 오프셋을 업데이트해야합니다. (아마 moov 상자 크기를 일정하게 유지하는 몇 가지 영리한 트릭이있을 것입니다 ...) mdat 상자가 처음으로 위치하면 moov 상자를 메모리에 복사하고 새 비디오를 다음과 같이 추가해야하기 때문에 작업은 여전히 ​​어색 할 것입니다. mdat의 끝 부분에 따라 moov 필드를 업데이트하고 새로운 moov 상자를 추가하십시오.

새 비디오 프레임을 모두 수집 할 수 있고 다시 녹음 작업을 수행하는 동안 녹음이 끝나면 추가 할 수 있습니다. Fragmented MP4 ("moof"상자 사용)를 살펴볼 수도 있지만, 그러한 파일을 읽는 것에 대한 지원이 얼마나 널리 퍼져 있는지 확신 할 수 없습니다.