MPMediaPickerControllerを使用して、ユーザーがデバイスのライブラリからビデオや曲を選択できるようにしています。initWithMediaTypes:MPMediaTypeAny
ピッカーの初期化でこれを許可します。ユーザーは、エクスポートが行われた後、アプリ内で曲またはビデオを再生できます。コア機能にストリップした後の私の映画エクスポートコードは次のとおりです。
- (void)mediaPicker:(MPMediaPickerController*)mediaPicker didPickMediaItems:(MPMediaItemCollection*)mediaItemCollection {
AVAssetExportSession *exportSession;
NSString *filePath;
NSURL *fileUrl;
for (MPMediaItem *item in mediaItemCollection.items) {
NSURL *assetUrl = [item valueForProperty:MPMediaItemPropertyAssetURL];
AVAsset *currAsset = [AVAsset assetWithURL:assetUrl];
exportSession = [[AVAssetExportSession alloc] initWithAsset:[AVAsset assetWithURL:assetUrl] presetName:AVAssetExportPresetHighestQuality];
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
filePath = [title stringByAppendingString:@".mov"];
fileUrl = [NSURL fileURLWithPath:[[NSFileManager documentDirectory] stringByAppendingPathComponent:filePath]];
exportSession.outputURL = fileUrl;
dispatch_group_enter(dispatchGroup);
[exportSession exportAsynchronouslyWithCompletionHandler:^{
// success
}
dispatch_group_leave(dispatchGroup);
}];
}
この同様のコードは、オーディオの実行には問題なく機能しますが、ビデオの場合、ビデオのオーディオは再生されません。iTunesのほとんどのコンテンツは保護されており、エクスポートできないため、iPhoneで撮影した自家製のクイックビデオでテストしたいと思いました。ビデオを撮影し、iTunesにドラッグしました(正しく表示され、携帯電話のライブラリにエクスポートできるように、「ミュージックビデオ」にしました)。次に、同期して、テストのためにデバイスに送信しました。
アプリでは、ビデオはメディアピッカーに正常に表示され、エラーなしでエクスポートできます。ただし、アプリ内で再生すると、ビデオのみが再生され、オーディオは再生されません。他のソースからインポートした他のビデオは、ビデオのオーディオを再生するために正常に機能するため、プレーヤー自体であるとは思いません。
メディアピッカーからのこの種のエクスポートからオーディオが検出されない理由について、ここで見逃している可能性があるものはありますか?この問題についてご協力いただきありがとうございます。