나는이 같은 하나 서로 결합 저에 두 개의 오디오 트랙을 가지고 : 당신이 볼 수 있듯이루프 AVMutableCompositionTrack
AVMutableComposition *composition = [[AVMutableComposition alloc] init];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack setPreferredVolume:1.0];
AVAsset *avAsset = [AVURLAsset URLAssetWithURL:originalContentURL options:nil];
AVAssetTrack *clipAudioTrack = [[avAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack atTime:kCMTimeZero error:nil];
AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack1 setPreferredVolume:0.01];
NSString *soundOne1 =[[NSBundle mainBundle]pathForResource:@"jingle1" ofType:@"m4a"];
NSURL *url1 = [NSURL fileURLWithPath:soundOne1];
AVAsset *avAsset1 = [AVURLAsset URLAssetWithURL:url1 options:nil];
AVAssetTrack *clipAudioTrack1 = [[avAsset1 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil];
는 첫 번째 AVAsset
는 의미, 두 번째 트랙의 기본 길이입니다 경우 I 긴 두 번째 트랙을 잘라 내고 싶습니다. 원하는 방식입니다.
그러나 첫 번째 길이가 너무 길면 두 번째 트랙이 계속 반복되도록 두 번째 트랙을 반복 할 수 있어야합니다. 나중에 디스크에 결과 트랙을 저장해야하는데 중요한 요소이기도합니다.
내가 연구 한 결과 실제로 iOS에서 트랙을 루프하는 편리한 방법이 없다는 것을 알게되었습니다. 나가는 방법 중 하나는 AVMutableComposition
에 여러 번 반복되는 두 번째 트랙을 반복해서 삽입하는 것이지만 나에게는 이상하게 들릴 것입니다. 주제를 기반으로하는 아이디어는 정말 유용 할 것입니다.
감사합니다. 시도해 보겠습니다. –
위 코드를 업데이트했습니다. –
매력적이었습니다. 멋졌습니다! –