ドキュメントを検索して読みましたが、遭遇したこの (一見単純な) 問題の解決策が見つからないようです。ユーザーの iTunes ライブラリから曲を正常にエクスポートし、毎回問題なくユーザーのドキュメント フォルダにダウンロードしますが、ビデオは機能しないようです。
MPMediaPickerController (allowsPickingMultipleItems = YES) を表示して、ユーザーがダウンロードしたライブラリからビデオまたは曲を選択できるようにします。完了したら、使用している関連コードを次に示します。
- (void)mediaPicker:(MPMediaPickerController*)mediaPicker didPickMediaItems:(MPMediaItemCollection*)mediaItemCollection {
AVAssetExportSession *exportSession;
for (MPMediaItem *item in mediaItemCollection.items) {
NSURL *assetUrl = [item valueForProperty:MPMediaItemPropertyAssetURL];
MPMediaType type = [[item valueForProperty:MPMediaItemPropertyMediaType] intValue];
if (type >= MPMediaTypeMovie) {
exportSession = [[AVAssetExportSession alloc] initWithAsset:[AVAsset assetWithURL:assetUrl] presetName:AVAssetExportPreset640x480];
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
filePath = [title stringByAppendingString:@".mov"];
exportSession.outputURL = [NSURL fileURLWithPath:[[NSFileManager documentDirectory] stringByAppendingPathComponent:filePath]];
} // .. check for song-types here and set session up appropriately
[exportSession exportAsynchronouslyWithCompletionHandler:^{
// never gets into AVAssetExportSessionStatusCompleted here for videos
}
}
}
毎回発生するエラーは次のとおりです。
Error Domain=AVFoundationErrorDomain Code=-11820 "Cannot Complete Export" UserInfo=0x1e1a2180 {NSLocalizedRecoverySuggestion=Try exporting again., NSLocalizedDescription=Cannot Complete Export}
あまり役に立ちません。:( ここで明らかな何かが欠けている可能性があるように感じます。これは正しい方法で行っていますか?MOV形式に「強制」しようとすると問題になる可能性がありますか?または、別の設定方法が必要になる可能性がありますエクスポートセッション?
参考までに、iPhone 5 で iOS 6.0.1 をテスト用に使用しており、baseSDK は 6.0 です。これについて提供できるガイダンスを事前に感謝します!
追加情報 #1 : 何かおかしい。outputFileType を "AVFileTypeAppleM4V" に設定すると、"SIGTRAP" ですぐにクラッシュするようです。 /item.m4v?id=12345. それが違いを生むかどうかはわかりませんが、m4v形式を試してみると、そのようにクラッシュするのは奇妙です。おそらく、サポートされているファイルタイプのリストにないためです (次の情報ポイントを参照してください)。
追加情報 #2 : サポートされているファイルの種類 (「supportedFileTypes」メソッドの呼び出しから得たものは、「com.apple.quicktime-movie」と「public.mpeg-4」です。「exportPresetsCompatibleWithAsset」にはすべてのビデオが含まれます。 m4a、低/中/高品質、および特定のサイズのものを含む.私は、ファイルタイプの AVFileTypeQuickTimeMovie と AVFileTypeMPEG4 など、これらすべてのすべての組み合わせと、低/中/高を含むすべてのプリセット、およびすべての「エクスポートを完了できません」というエラーが表示されることは決してありません。
追加情報 #3 : 5.1 の展開ターゲットも使用しています。しかし、はい、6.0 を試しましたが、同じエラーが発生します。:(
追加情報 #4 : 必要に応じて、私がテストしている映画は「パイロット」テレビ番組であり、1 つのビデオであり、iTunes で最初に見た無料のビデオです。このアプリで使用するためにダウンロードしました。
追加情報 #5 : これが重要かどうかはわかりませんが、「hasProtectedContent」メソッドは AVAsset (および変換した場合は AVURLAsset) に対して YES を返します。違いはないかもしれませんが、そこに捨てようと思いました。