AVMutableCompositon AVMutableCompositionTrack m4a问题

时间:2012-07-06 05:50:10

标签: ios ios5 aac avmutablecomposition

我能够使用下面的代码成功创建一个播放声音的简单应用。但问题是,如果我将资产从mp3更改为m4a(使用aac编码)。没有声音产生,但组合物的持续时间与添加的样品的长度相匹配。

NSError *error;

AVMutableComposition* composition = [AVMutableComposition composition];
AVURLAsset* audioAsset1 = [[AVURLAsset alloc]initWithURL:[NSURL URLWithString:@"http://www.myserver.com/sample.mp3"] options:nil];

AVMutableCompositionTrack *audioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio 
                                                                  preferredTrackID:kCMPersistentTrackID_Invalid];

[audioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset1.duration)
                     ofTrack:[[audioAsset1 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
                      atTime:kCMTimeZero
                       error:&error];

NSLog(@"%@", error);

playerItem = [AVPlayerItem playerItemWithAsset:composition];

player = [AVPlayer playerWithPlayerItem:playerItem];

[player play];

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我最后在任何地方都发布了这个问题,最后用apple创建了一个错误报告。

我是如何解决这个问题的,一步到位将m4a下载到apps临时目录中,然后将其添加到组合中。像魅力一样。

我不会详细介绍如何操作,但由于我的应用程序使用了流行的AFNetworking库,因此这是关键部分。

1: AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:songURLRequest];
2: NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"song.m4a"];
3: operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];

第1行:设置AFHTTPRequestOperation 第2行:将本地路径设置为将保存文件的字符串 第3行:将AFHTTPRequestOperation上的outputStream设置为本地路径

希望这可以帮助将来的某个人!