2014-01-14 2 views
0

질문이 있습니다. 최근에 녹화 된 비디오에 사용자 정의 태그를 추가해야했습니다. 기기의 로컬 동영상이 스트리밍 된 동영상이 아닙니다. 작업은 비디오에 이벤트 특정 태그를 추가하는 것입니다.이 태그의 위치는 플레이어와 같이 단추를 앞뒤로 눌러 설정할 수 있습니다.AVMutableMetadataItem의 시간과 기간은 읽은 후 무효입니다.

동영상 파일이 mov 파일인지 mp4 형식인지는 중요하지 않습니다. 포럼에서 검색 한 결과 AVExportSession &을 사용하여 메타 데이터를 추가하는 방법을 몇 가지 발견했습니다. 그래도 AVAssetWriter을 사용하여 메타 데이터를 추가하려고 시도했습니다. 비디오에 속성을 추가 할 수 없었습니다.

내가 이해하지 못하는 것은 속성을 추가 한 후에 반환 된 (시간은 &입니다) 속성은 항상 유효하지 않습니다.

예를 들어 내가 2 초의 지속 시간을 갖는 비디오를 가지고 있다고 가정 해 봅시다. 다른 키 공간을 시도했습니다. ID3 공간에서 키를 쓸 수 없습니다.

IS ID3은 스트림 비디오에 사용됩니까? (필자가 .mp3의 ID3 메타 데이터를 이해하는 한). 따라서 MPEG-4 파일에 쓸 수 없었습니다

QuickTimeUserData & ISOUserData도 사용했지만 결과는 같습니다. 여기에 나는 다음과 같은 가지고 읽은 후 예를 들어

AVMutableMetadataItem *item2 = [AVMutableMetadataItem new]; 
item2.keySpace = AVMetadataKeySpaceiTunes; 
item2.key = AVMetadataiTunesMetadataKeyUserComment; 
item2.value = @"One two three"; 
item2.duration =CMTimeMakeWithSeconds(1, 1); 
item2.time = CMTimeMakeWithSeconds(0, 1); 

입니다 :

AVMutableMetadataItem: 0xa4301f0, keySpace=itsk, key=\U00a9cmt, commonKey=(null), locale= (null), value=One two three, time={INVALID}, duration={INVALID}, extras={\n dataType = 1;\n} 
내가 대신 사용자 정의 데이터를 작성하고 그 후이를 처리의 메타 데이터를위한 시간을 & 기간 속성을 사용하고 싶습니다

.

이상적으로 time = t1, duration = d1, ... (tn, dn) 인 항목 배열을 추가하는 것이 좋습니다.

누구든지 그 방법을 알고 있습니까?

답변

0

메타 데이터를 사용하는 대신 비디오 파일에 장을 추가하는 솔루션으로 끝났습니다.

사용 가능한 라이브러리를 살펴본 결과 mpv4lib을 사용했습니다.

현재 iOS 용으로 라이브러리가 컴파일되지 않아 소스 프로젝트를 iOS 플랫폼 용 정적 라이브러리로 이식했습니다.

해당 라이브러리는 mp4 파일에 사용자 정의 "원자"를 추가 할 수 있으며, 그 중 하나는 챕터가 들어있는 빠른 시간 텍스트 트랙입니다. 그와 비슷합니다. post

라이브러리는 here입니다.

관련 문제