Я хочу воспроизвести звуковой файл (который я перетащил в xcode и скопировать в проект), используя av foundation со следующим кодом, но сбой.iOS - как воспроизвести звуковой файл с использованием avfoundation
Я думаю, NSURL *url = [[NSURL alloc] initWithString:@"sound.caf"];
вот где все идет не так, но я понятия не имею, кроме этого, как я мог бы создать AVAsset с этим звуковым файлом (конечно, это было бы другое место, которое пойдет не так). В любом случае, может ли кто-нибудь предложить мне некоторые подсказки? благодаря
AVMutableComposition *composition = [AVMutableComposition composition];
CMPersistentTrackID trackID = kCMPersistentTrackID_Invalid;
AVMutableCompositionTrack *compositionTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:trackID];
NSURL *url = [[NSURL alloc] initWithString:@"sound.caf"];
AVAsset *songAsset = [AVURLAsset URLAssetWithURL:url options:nil];
AVAssetTrack *assetTrack = [[songAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
CMTime startTime = CMTimeMakeWithSeconds(0, 1);
CMTime endTime = songAsset.duration;
CMTimeRange tRange = CMTimeRangeMake(startTime, endTime);
NSError *error = nil;
[compositionTrack insertTimeRange:tRange ofTrack:assetTrack atTime:CMTimeMake(0, 44100) error:&error];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:composition];
self.player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
[self.player play];
Этот код работает. Спасибо – Newbie
Спасибо, Сергей, очень удобно это найти. Если вы пробуете это в OS X в программе CLI, вам нужно зациклиться до тех пор, пока игрок не закончит. После запуска воспроизведения я использовал следующий цикл: «do {CFRunLoopRunInMode (kCFRunLoopDefaultMode, 0.25, false);} while (player.isPlaying);" – Charlesism