이 솔루션은 매우 정직없는 일이되어 같이
-[QTMovie insertSegmentOf(Movie|Track):timeRange:atTime:]
는 영화에 트랙을 추가하지 않는 트랙의 인코딩 (들) 일치하는 경우 이미 존재하는 트랙의 것. 대신 은 QuickTime Player Pro의 "Add Selection"(예 : 영화가 AAAAA이고 bbb를 삽입 한 후 AAbbbAAA를 얻은 경우)와 같이 세그먼트를 세그먼트를 기존 영화에 삽입합니다. (틀림없이, 클래스 참조는 여기에 간결하지 않습니다 ...)
- 불행히도
-[QTMovie insertSegmentOfTrack:fromRange:scaledToRange:]
은 트랙을 추가하지 않습니다. 대신 삽입 된 세그먼트의 길이를 변경할 수있는 기능이 추가 된 insertSegmentOfTrack:timeRange:atTime:
처럼 작동합니다.
해결책은 -[QTMovie insertSegmentOfMovie:fromRange:scaledToRange:]
입니다.
귀하의 예를 들어
이, 실제로 꽤 솔직 뭔가 코드의 꽤 부트로드가 ...의 내가 아는
-(QTMovie *) composedMovie
{
NSDictionary *editableAttribute = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
// load and prepare the base movie:
QTMovie *composition = [QTMovie movieWithFile:fileName error:nil];
[composition setMovieAttributes:editableAttribute];
// load and prepare the insertion
QTMovie *insertion = [QTMovie movieWithFile:insertionFileName error:nil]:
[insertion setMovieAttributes:editableAttribute];
// as you'll probably want to avoid adding the video tracks...
NSArray *videoTracks = [insertion tracksOfType:QTMediaTypeVideo];
for (QTTrack *track in videoTracks) {
[insertion removeTrack:track];
}
// figure out the time-range
QTTimeRange sourceRange = QTMakeTimeRange(QTZeroTime, [insertion duration]);
QTTimeRange destinationRange = sourceRange;
destinationRange.time = QTMakeTime(1ll, 1l); // use an offset of 1 second
[composition insertSegmentOfMovie:insertion fromRange:sourceRange scaledToRange:destinationRange];
return composition;
}
이 될 것입니다하지만 그것이 :-(당신이있어
작동하는 방법 다음 번에 샌프란시스코에서 이메일을 보내고 점심 식사를 나에게! ([email protected]) – richcollins
독일에서 살고있어 잠시 시간을 할애 할 수있는 WWDC에 참석할 수 없을 것입니다. -) – danyowdee