ALASSET에서 비디오 URL을 받았는데 convertVideoToLowQuailtyWithInputURL
비디오를 압축하는 기능이 있지만 작동하지 않습니다. 나는 비디오의 크기가 항상 0iOS의 ALASSET URL에서 동영상을 압축 할 수 없습니까?
이다, 압축 후 본이 ALASSET에서 동영상 URL을 얻을 수있는 기능입니다 :
ALAsset *alasset = [allVideos objectAtIndex:i];
ALAssetRepresentation *rep = [alasset defaultRepresentation];
NSString * videoName = [rep filename];
//compress video data before uploading
NSURL *videoURL = [rep url];
NSLog(@"videoURL is %@",videoURL);
NSURL *uploadURL = [NSURL fileURLWithPath:[[NSTemporaryDirectory() stringByAppendingPathComponent:videoName] stringByAppendingString:@".mov"]];
NSLog(@"uploadURL temp is %@",uploadURL);
// Compress movie first
[self convertVideoToLowQuailtyWithInputURL:videoURL outputURL:uploadURL handler:^(AVAssetExportSession *session)
{
if (session.status == AVAssetExportSessionStatusCompleted)
{
// Success
}
else
{
// Error Handing
}
}];
NSString *path = [uploadURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
NSLog(@"size after compress video is %d",data.length);
}
기능 압축 비디오 :
- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL
outputURL:(NSURL*)outputURL
handler:(void (^)(AVAssetExportSession*))handler
{
[[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset: urlAsset presetName:AVAssetExportPresetLowQuality];
session.outputURL = outputURL;
session.outputFileType = AVFileTypeQuickTimeMovie;
[session exportAsynchronouslyWithCompletionHandler:^(void)
{
handler(session);
}];
}
내가 convertVideoToLowQuailtyWithInputURL
함수를 호출, 나는 그것이 handler(session);
에 방아쇠를 당기는 것을 보지 못했습니다.
그리고 NSLog(@"size after compress video is %d",data.length);
은 항상 "크기가 0"입니다. 내가 잘못 갔습니까? 제게 조언 해주세요. 미리 감사드립니다.