0

以下のコードを使用して、サウンドを再生する簡単なアプリを正常に作成できました。ただし、問題は、アセットを 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];

誰でも助けることができますか?

4

1 に答える 1

0

私はこの質問をどこにでも投稿することになり、アップルでバグレポートを作成することになりました。

私が問題を解決した方法は、最初に m4a をアプリの一時ディレクトリにダウンロードし、そこからコンポジションに追加するステップを用意することです。魅力のように機能します。

その方法についての詳細なコードには触れませんが、私のアプリは人気のある 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 をローカル パスに設定します

これが将来誰かに役立つことを願っています!

于 2012-07-10T23:35:26.883 に答える