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