大家好,我是小白李胖胖,纯新手一名,哪位大神做过iOS录制视频并且压缩上传?帮帮忙,网上虽说是有录制视频了,目前我的项目也可以录制视频并且保存在手机相册了,但是怎么压缩上传啊?我们的拍照片倒是可以上传了,不过不用压缩,一般都2MB左右,可是视频不同,我们做的是10-15面的视频,要是不压缩上传太影响用户体验了,所以求哪位前辈大神帮帮忙,大概的思路和使用的方法名字倒是都知道了,但是具体不会实现操作,最好能给个demo或是详细点的讲解或有相关的视频学习资料也可以,然后我还得做完了视频压缩上传后,接着还得做用户自己录制出来的视频转成gif图片 并上传,所以这么着也得先把录制视频 压缩 上传先弄明白了才可以做gif!!!大哥大姐前辈大神好人一生平安啊!!!
// dismissViewController,判断是录制视频省略
NSURL *sourceURL = [[info objectForKey:UIImagePickerControllerMediaURL];
NSURL *newVideoUrl = ........; //一般.mp4
[self convertVideoQuailtyWithInputURL:sourceURL outputURL:newVideoUrl completeHandler:^(AVAssetExportSession *) {
//...........
}];
}- (void) convertVideoQuailtyWithInputURL:(NSURL*)inputURL
outputURL:(NSURL*)outputURL
completeHandler:(void (^)(AVAssetExportSession*))handler
{
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL opti*****:nil];
AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
exportSession.outputURL = outputURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSessionexportAsynchronouslyWithCompletionHandler:^(void) {
switch (exportSession.status)
{
case AVAssetExportSessionStatusUnknown:
break;
case AVAssetExportSessionStatusWaiting:
break;
case AVAssetExportSessionStatusExporting:
break;
case AVAssetExportSessionStatusCompleted: {
handler(exportSession)
break;
}
case AVAssetExportSessionStatusFailed:
break;
}
}];
}
差不多这样吧,LZ 自己完善吧
outputURL:(NSURL*)outputURL
completeHandler:(void (^)(AVAssetExportSession*))handler
{
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL opti*****:nil];
AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
exportSession.outputURL = outputURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSessionexportAsynchronouslyWithCompletionHandler:^(void) {
switch (exportSession.status)
{
case AVAssetExportSessionStatusUnknown:
break;
case AVAssetExportSessionStatusWaiting:
break;
case AVAssetExportSessionStatusExporting:
break;
case AVAssetExportSessionStatusCompleted: {
handler(exportSession)
break;
}
case AVAssetExportSessionStatusFailed:
break;
}
}];
}
你新建一个新的mp4的文件路径,调用转换函数,然后上传的时候用这个newVideoUrl 就可以了
你可以用outputURL 和 newVideoUrl 都输出下文件大小对比下就知道了
这谁知道你们android 长的啥样?
H264已经是编码压缩过后的数据。再用zip什么的压缩意义不大。
但是,总是失败。
具体过程时这样的:
我在app的Document下,放了一个test.wmv,然后希望在压缩生产一个.mp4 或者.mov的文件。
我构建了NSURL类型的input output的地址。
然后发现问题,switch (exportSession.status) 这个状态永远都是失败的。
文件也没有出现。请问是为什么?
但是,总是失败。
具体过程时这样的:
我在app的Document下,放了一个test.wmv,然后希望在压缩生产一个.mp4 或者.mov的文件。
我构建了NSURL类型的input output的地址。
然后发现问题,switch (exportSession.status) 这个状态永远都是失败的。
文件也没有出现。请问是为什么?