如何使用ios中的视觉控件在ios中选择音频曲目的一部分?

如何使用ios中的视觉控件在ios中选择音频曲目的一部分?,ios,audio,avfoundation,avaudioplayer,Ios,Audio,Avfoundation,Avaudioplayer,我正在写一些东西,其中我将使用设备iTunes库中的一部分音频曲目覆盖两个视频的组合,例如: AVMutableComposition* mixComposition = [[AVMutableComposition alloc] init]; //VIDEO TRACK AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredT

我正在写一些东西,其中我将使用设备iTunes库中的一部分音频曲目覆盖两个视频的组合,例如:

AVMutableComposition* mixComposition = [[AVMutableComposition alloc] init];

//VIDEO TRACK
AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[firstTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.firstAsset.duration) ofTrack:[[self.firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];

AVMutableCompositionTrack *secondTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.secondAsset.duration) ofTrack:[[self.secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:self.firstAsset.duration error:nil];

//AUDIO TRACK
if(self.audioAsset!=nil){
    AVMutableCompositionTrack *AudioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
    [AudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeAdd(self.firstAsset.duration, self.secondAsset.duration)) ofTrack:[[self.audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil];
}
最后一行代码从时间0开始拍摄一段曲目,并持续视频组合的长度,这很有意义

我想做的是选择我想要的音轨的任何部分,而不是从一开始就选择;我想让用户在滑块的帮助下这样做

实现这一点的好方法是什么?有没有带示例的教程

希望您能提供帮助。

选择音频部分并将其与视图组合以生成单个电影对象的代码非常简单。你似乎已经掌握了这个窍门。下面是一段摘录:

正如你所看到的,我们正在做同样的事情

提供让用户指定所需内容的界面取决于您。毕竟,这是你的应用程序

type = AVMediaTypeAudio;
arr = [oldAsset tracksWithMediaType:type];
track = [arr lastObject];
comptrack = [comp addMutableTrackWithMediaType:type preferredTrackID:kCMPersistentTrackID_Invalid];
[comptrack insertTimeRange:CMTimeRangeMake(CMTimeSubtract(duration, CMTimeMakeWithSeconds(5,600)), CMTimeMakeWithSeconds(5,600)) ofTrack:track atTime:CMTimeMakeWithSeconds(5,600) error:nil];