1

ドキュメントを検索して読みましたが、遭遇したこの (一見単純な) 問題の解決策が見つからないようです。ユーザーの 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 を返します。違いはないかもしれませんが、そこに捨てようと思いました。

4

1 に答える 1