1

PHAsset から送信可能なビデオを取得するために requestExportSessionForVideo メソッドを使用していますが、この警告が表示され、エクスポート セッションは null 値をログに記録します。

Null passed to a callee that requires a non-null argument

メソッド呼び出しは次のとおりです。

[manager requestExportSessionForVideo:asset options:videoOptions exportPreset:AVAssetExportSessionStatusUnknown resultHandler:^(AVAssetExportSession * _Nullable exportSession, NSDictionary * _Nullable info) {
            NSLog(@"Export session is: %@ ///// Info is %@", exportSession, info);
        }];

ただし、印刷される情報は見栄えがします。

Info is {
PHImageFileSandboxExtensionTokenKey = "8b504346993c71de48743d3c9c796385d7911ad2;00000000;00000000;000000000000001b;com.apple.avasset.read-only;00000001;01000002;00000000000468eb;/private/var/mobile/Media/DCIM/100APPLE/IMG_0004.MOV";
PHImageResultDeliveredImageFormatKey = 20000;
PHImageResultIsInCloudKey = 0;
PHImageResultWantedImageFormatKey = 20000;
}

クラウド コンテナーに送信できる PHAsset からビデオ オブジェクトを取得するにはどうすればよいですか? この警告は出力に影響しますか? 私のアセットは GMImagePicker を使用して選択されていることに注意してください。

4

3 に答える 3

3

これは、さらに先に進むのに役立つ場合があります。私は現在同じ問題に直面しています。しかし、次の方法でビデオのURLが得られます。

PHVideoRequestOptions* options = [[PHVideoRequestOptions alloc] init];
    options.version = PHVideoRequestOptionsVersionOriginal;
    options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic;
    options.networkAccessAllowed = YES;
    options.progressHandler =  ^(double progress,NSError *error,BOOL* stop, NSDictionary* dict) {
        NSLog(@"progress %lf",progress);  //never gets called
    };


[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset* avasset, AVAudioMix* audioMix, NSDictionary* info){
        NSLog(@"##Info:\n%@",info);
        AVURLAsset* myAsset = (AVURLAsset*)avasset;
        NSLog(@"##AVAsset URL: %@",myAsset.URL);
    }];


出力

2015-11-25 12:00:04.482 iLockBox[7602:2587808] ##Info:
{
    PHImageFileSandboxExtensionTokenKey = "7c2094f4c69015b87df6d7c86ec3217cc544e2e2;00000000;00000000;000000000000001b;com.apple.avasset.read-only;00000001;01000002;0000000000ff9a15;/private/var/mobile/Media/DCIM/111APPLE/IMG_1087.MOV";
    PHImageResultDeliveredImageFormatKey = 20000;
    PHImageResultIsInCloudKey = 0;
    PHImageResultWantedImageFormatKey = 20000;
}
2015-11-25 12:00:16.007 iLockBox[7602:2587808] ##AVAsset URL: file:///var/mobile/Media/DCIM/111APPLE/IMG_1087.MOV



結果をコメントしてください。

于 2015-11-25T06:37:48.887 に答える
3

Swift - ここでは、requestAVAssetForVideo を使用してビデオの URL を取得するためのソリューション...私にとってはうまくいきます...

let options = PHVideoRequestOptions()
options.version = .Original
options.deliveryMode = .Automatic
options.networkAccessAllowed = true

PHCachingImageManager.defaultManager().requestAVAssetForVideo(asset, options: options, resultHandler:
                                {
                                    (avAsset, audioMix, info) in

                                    dispatch_sync(dispatch_get_main_queue(),{
                                        let theAsset = avAsset as! AVURLAsset
                                        let videoURL = theAsset.URL
                                        print(videoURL)

                                    })
                            })
于 2016-05-09T09:23:07.867 に答える