I have file at path
file:///var/mobile/Media/DCIM/100APPLE/IMG_0197.mov
But when I try this code-
NSError *error;
NSData *d
For me helped the following code. It's important to use relativePath
instead of absoluteString
.
[[PHImageManager defaultManager] requestAVAssetForVideo:videoContent options:options resultHandler:^(AVAsset* avasset, AVAudioMix* audioMix, NSDictionary* info){
AVURLAsset* myAsset = (AVURLAsset*)avasset;
NSData * data = [NSData dataWithContentsOfFile:myAsset.URL.relativePath];
if (data) {
}
}];
Swift 3 version:-
PHImageManager.default().requestAVAsset(forVideo: asset, options: nil, resultHandler: { (asset, mix, nil) in
let myAsset = asset as? AVURLAsset
do {
let videoData = try Data(contentsOf: (myAsset?.url)!)
self.selectedVideoData = videoData //Set video data to nil in case of video
print("video data : \(videoData)")
} catch {
print("exception catch at block - while uploading video")
}
})
You can't access the NSURL
directly as the files are outside of the sandbox of your app. Some frameworks (like AVPlayer
) have exception entitlements and can access the URLs.
To access the data of PHAsset
objects take a look at the following methods of PHImageManager
:
For images: requestImageDataForAsset
For videos: requestExportSessionForVideo