iOS MOV转MP4
废话不多说,直接上转换代码
+ (NSURL *)jjMovConvert2Mp4:(NSURL *)movUrl
{NSURL *mp4Url = nil;AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:movUrl options:nil];NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];if ([compatiblePresets containsObject:AVAssetExportPresetHighestQuality]) {AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAssetpresetName:AVAssetExportPresetHighestQuality];NSString *mp4Path = [NSString stringWithFormat:@"%@/%d%d.mp4", [self dataPath], (int)[[NSDate date] timeIntervalSince1970], arc4random() % 100000];mp4Url = [NSURL fileURLWithPath:mp4Path];exportSession.outputURL = mp4Url;exportSession.shouldOptimizeForNetworkUse = YES;exportSession.outputFileType = AVFileTypeMPEG4;dispatch_semaphore_t wait = dispatch_semaphore_create(0l);[exportSession exportAsynchronouslyWithCompletionHandler:^{switch ([exportSession status]) {case AVAssetExportSessionStatusFailed: {NSLog(@"failed, error:%@.", exportSession.error);} break;case AVAssetExportSessionStatusCancelled: {NSLog(@"cancelled.");} break;case AVAssetExportSessionStatusCompleted: {NSLog(@"completed.");} break;default: {NSLog(@"others.");} break;}dispatch_semaphore_signal(wait);}];long timeout = dispatch_semaphore_wait(wait, DISPATCH_TIME_FOREVER);if (timeout) {NSLog(@"timeout.");}if (wait) {//dispatch_release(wait);wait = nil;}}return mp4Url;
}
+ (NSString*)dataPath
{NSString *dataPath = [NSString stringWithFormat:@"%@/Library/appdata/chatbuffer", NSHomeDirectory()];NSFileManager *fm = [NSFileManager defaultManager];if(![fm fileExistsAtPath:dataPath]){[fm createDirectoryAtPath:dataPathwithIntermediateDirectories:YESattributes:nilerror:nil];}return dataPath;
}
比如你是通过UIImagePickerController选择的视频文件,
在代理方法回调中:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info {NSURL *url = info[@"UIImagePickerControllerMediaURL"];//调用MOV转换成Mp4NSString *filePath = [[NSURL jjMovConvert2Mp4:url] absoluteString];NSData *data =[NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]];NSString *storageFilePath = [self randomFilePathInTime:[filePath componentsSeparatedByString:@"."].lastObject];BOOL isStorageState = [data writeToFile:storageFilePath atomically:YES];if (isStorageState) {success(storageFilePath,[filePath componentsSeparatedByString:@"/"].lastObject,data);}
}
iOS MOV转MP4相关推荐
- Mac没有winnt格式_在Mac上轻松将MOV转换为MP4的四大免费方法
MOV由Apple Computers开发的一种视频容器格式,主要由Apple QuickTime用于存储视频文件.MOV文件是未压缩的,大型的,并且通常由Mac用户使用.虽然MOV文件与Mac OS ...
- 将MOV转换为MP4的几种最佳方法
通常,MOV(QuickTime 文件格式)与大多数媒体播放器兼容,但有时您可能会想到某些 MOV 文件仍然无法在 Windows 或 Mac 电脑上播放.该问题可以通过将 MOV 文件转换为普通 M ...
- MOV及MP4文件格式中几个重要的Table
MP4,全称是MPEG4 Part 14,是一种使用MPEG-4的多媒体文件格式,扩展名为.mp4. MOV,是QuickTime影片格式,它是Apple公司开发的一种音频.视频文件格式,用于存储常用 ...
- 怎么修复松下相机死机断电MDT文件为MOV或MP4视频
松下Panasonic相机Lumix如GH系列,G系列等录制的视频格式化有MOV或MP4,1080P, 甚至4K等分辨率,如果在摄像过程当中遇到不正常的问题,如:相机死机,断电,电池没电等,录制过程中 ...
- mov 和 mp4 格式的区别
MOV 格式是 QuickTime 的一种容器,不光包括视频音频,还可以包含Java,脚本,Skin,图片等,是一种很复杂的封装格式.(以前苹果网站上还有专门用 MOV 做的电影主题网站,还可以把游戏 ...
- mov转换为mp4格式怎么转,多方法教程
mov转换为mp4格式怎么转?如果你连mov都不了解,那就更别说将其进行转换了.其实使用过苹果手机的人应该接触的很多,但是我们时常不关注这个视频格式.MOV是一种音频和视频文件格式,它在苹果手机上使用 ...
- 怎么修复佳能相机断电死机DAT文件为MOV或MP4视频
佳能相机,相机型号如:600D, 6D, 5D2, 5D3, 5DS, 5D4, 760D, 5D4, 6D2等EOS单反相机系列,正常录制的视频可能是MOV或者MP4, 如果相机在拍摄中遇到异常情况 ...
- php mov格式,mov和mp4区别是什么
mov和mp4区别:1.MOV格式是QuickTime的一种容器,不光包括视频音频,还可以包含Java,脚本,Skin,图片等,是一种很复杂的封装格式:2.MP4是把MOV格式中音频视频部分提取出来标 ...
- 大疆DJI无人机GoPro运动相机MOV或MP4视频文件恢复后花屏解决技术思路方法
从事数据恢复的工作人员.航拍录像从业人员.摄影爱好者等有时会遇到视频文件损坏问题,下面分析的就是常见的情况:大疆DJI无人机GoPro运动相机MOV或MP4视频文件丢失之后(删除.病毒感染或者格式化等 ...
- mov转换mp4的最简单方法
看到近期小伙伴咨询mov转换成MP4最简单方法的问题,所以今天特地要给大家推荐一款叫做优速视频处理大师的软件工具,这个软件的主要优势就是所有的功能操作都非常的简单,而且所有的功能都是围绕着视频文件的处 ...
最新文章
- 嵌入式linux基础知识累积
- JDK5.0新特性系列---11.4线程 Condition
- 以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发者面板出错总结
- uc通讯不成功php版本过高,Ucenter通信失败排查方法
- uint32_t 是常数吗_UINT_MAX常数,带C ++示例
- 【VBS】一款无聊的 Visual Basic Script 表白程序
- 知道 | 同学,你都了解关系型数据库,确定不了解一下这种数据库吗?
- 机器学习笔记(6):多类逻辑回归-使用gluon
- 马尔可夫链、隐马尔科夫模型、贝叶斯网络、因子图
- 【菜gou的CS61A学习笔记10 Abstraction Trees】
- 信阳市少年计算机学校,信阳市胜利路学校开展少年之声小记者选拔活动
- 用c语言实现1+2+3+...+n求和
- css 毛玻璃_前端开发,CSS的常用套路附demo的效果实现与源码)
- 最近运气不好,愿乌云渐渐散去
- ETL 与 ELT的关键区别
- “组件协作”模式----策略模式(Strategy Pattern)
- 凡客和PPG都是半斤八两
- Tlsr8258开发-小问题汇总
- Red Hat Enterprise Linux 4 安装yum(i386)
- UNCTF2020 wp