3

나는 현재과 같이 AVMutableComposition를 사용하여 다시 다시 5 개 비디오를 넣어하려고 해요 :AVMutableComposition 비디오 자산 사이의 빈/블랙 프레임은

[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset1.duration) ofAsset:asset1 atTime:[mixComposition duration] error:nil]; 
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset2.duration) ofAsset:asset2 atTime:[mixComposition duration] error:nil]; 
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset3.duration) ofAsset:asset3 atTime:[mixComposition duration] error:nil]; 
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset4.duration) ofAsset:asset4 atTime:[mixComposition duration] error:nil]; 
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset5.duration) ofAsset:asset5 atTime:[mixComposition duration] error:nil]; 
그때 사이 그러나 작동하는 비디오를 수출하는 AVAssetExportSession를 사용

각 비디오를 제거해야하는 빈/검은 색 프레임이 나타납니다. 이전에이 문제가있는 사람이 있습니까? 그렇다면 문제를 해결할 수 있었습니까?

또한 빈 프레임이 원본 비디오 파일에 없습니다.

미리 감사드립니다.

답변

3

전날 같은 문제가있었습니다.

insertTimeRange를 다시 사용하여 만든 다른 애셋에서 애셋 (asset1, asset2 등)을 내 보내어 애셋을 가져온 경우에도 마찬가지입니다.

insertTimeRange를 사용하여 만든 에셋을 내 보내면 내보내기가 올바르지 않습니다. 이러한 비디오를 첨부하면 검정 프레임이 그 사이에 나타납니다.

AVAssetExportSession의 "timeRange"옵션을 사용하여 주 애셋에서 필요한 범위를 줄이십시오. 그런 다음 자산이 올바로 첨부됩니다.

0

방금 ​​같은 문제가 발생했습니다. 해결책은 AVMutableCompositionTrack을 사용하고 비디오 트랙을 합성하는 것입니다.

AVMutableCompositionTrack * videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 

[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration) ofTrack:[[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:composition.duration error:&error]; 

오디오 부분에는 AVMediaTypeAudio 유형의 별도 트랙을 추가해야한다고 생각합니다.

관련 문제