iOS视频转码 mov 转 mp4
利用AVFoundation框架实现视频格式转码,下面以mov转mp4为例:<pre>/**mov转mp4格式*/-(void)convertMovSourceURL:(NSURL *)sourceUrl{AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:sourceUrl options:nil];NSArray *compatiblePresets=[AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];//NSLog(@"%@",compatiblePresets);if ([compatiblePresets containsObject:AVAssetExportPresetHighestQuality]) {AVAssetExportSession *exportSession=[[AVAssetExportSession alloc] initWithAsset:avAsset presetName:AVAssetExportPresetHighestQuality];NSDateFormatter *formater=[[NSDateFormatter alloc] init];//用时间给文件全名[formater setDateFormat:@"yyyyMMddHHmmss"];NSString *mp4Path=[[NSUserDefaults standardUserDefaults] objectForKey:@"kMP4FilePath"];NSString *resultPath=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0] stringByAppendingFormat:@"/output-%@.mp4", [formater stringFromDate:[NSDate date]]];
exportSession.outputURL=[NSURL fileURLWithPath:resultPath];exportSession.outputFileType = AVFileTypeMPEG4;exportSession.shouldOptimizeForNetworkUse = YES;[exportSession exportAsynchronouslyWithCompletionHandler:^(void){switch (exportSession.status) {case AVAssetExportSessionStatusCancelled:NSLog(@"AVAssetExportSessionStatusCancelled");break;case AVAssetExportSessionStatusUnknown:NSLog(@"AVAssetExportSessionStatusUnknown");break;case AVAssetExportSessionStatusWaiting:NSLog(@"AVAssetExportSessionStatusWaiting");break;case AVAssetExportSessionStatusExporting:NSLog(@"AVAssetExportSessionStatusExporting");break;case AVAssetExportSessionStatusCompleted:{//NSLog(@"resultPath = %@",resultPath);UIAlertController \*alert=[UIAlertController alertControllerWithTitle:@"提示" message:@"转换完成" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction \*confirm=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];[alert addAction:confirm];[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YES completion:nil];BOOL success=[[NSFileManager defaultManager]moveItemAtPath:resultPath toPath:[mp4Path stringByAppendingPathComponent:@"1.mp4"] error:nil];if(success){NSArray \*files=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:mp4Path error:nil];NSLog(@"%@",files);NSLog(@"success");}break;}case AVAssetExportSessionStatusFailed:NSLog(@"AVAssetExportSessionStatusFailed");break;}}];
}
}</pre>
用法如下:
<pre>
@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
@end
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor=[UIColor whiteColor];
self.navigationController.navigationBar.barStyle=UIBarStyleBlack;
self.title=@"视屏格式转换";UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
[btn setTitle:@"转换" forState:UIControlStateNormal];
btn.backgroundColor=[UIColor orangeColor];
[self.view addSubview:btn];
[btn addTarget:self action:@selector(convert:) forControlEvents:UIControlEventTouchUpInside];
btn.center=self.view.center;
}
pragma mark - UIImagePicker
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSURL *videoURL=[info objectForKey:@"UIImagePickerControllerMediaURL"];
//[ProgressHUD show:@"转换中..."];
[self convertMovSourceURL:videoURL];
[picker dismissViewControllerAnimated:YES completion:nil];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:nil];
}
</pre>
作者:CGPointZero链接:http://www.jianshu.com/p/25c218019fa0來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
iOS视频转码 mov 转 mp4相关推荐
- java视频转码mov转MP4
解决视频文件在web端获取时的问题,安卓手机的视频文件为MP4格式的,但是ios手机视频格式为mov格式的视频文件,在用户上传视频后,会造成无法播放此视频问题 通过以下方法解决此问题,我们可以在用户上 ...
- 最简单的基于FFmpeg的移动端样例:IOS 视频转码器
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- 最简单的基于FFmpeg的移动端例子:IOS 视频转码器
===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...
- iOS 视频转码处理
前言 苹果手机录制的视频在非Safari浏览器和安卓机器上面都无法直接播放,原因是因为直接录制的视频默认是mov格式,这是需要转换一下格式来处理 其中包含多种转码方式 [KJVideoFileType ...
- 怎么修复松下相机死机断电MDT文件为MOV或MP4视频
松下Panasonic相机Lumix如GH系列,G系列等录制的视频格式化有MOV或MP4,1080P, 甚至4K等分辨率,如果在摄像过程当中遇到不正常的问题,如:相机死机,断电,电池没电等,录制过程中 ...
- 怎么修复佳能相机断电死机DAT文件为MOV或MP4视频
佳能相机,相机型号如:600D, 6D, 5D2, 5D3, 5DS, 5D4, 760D, 5D4, 6D2等EOS单反相机系列,正常录制的视频可能是MOV或者MP4, 如果相机在拍摄中遇到异常情况 ...
- 苹果手机视频mov转mp4格式的方法
苹果手机视频mov转mp4格式的方法?使用苹果手机的小伙伴是越来越多了,苹果手机中的视频格式为mov,这是一种音视频格式的封装格式,比起mp4,mov还能够容纳脚本.图片.Java等等,说起来比mp4 ...
- 最简单的基于FFmpeg的移动端例子:IOS 视频解码器
===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...
- 最简单的基于FFmpeg的移动端例子:Android 视频转码器
===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...
- 基于mp4parser的视频剪切,视频合并,视频转码实例
1.概述 mp4parser是一个视频处理的开源工具箱,我希望在Java工程里使用视频剪切.视频合并.视频转码这3种功能. 由于mp4parser里的方法都依靠工具箱里的一些内容,所以需要将这些内容打 ...
最新文章
- 高水平文章发表必备-数据分析和文献解读技巧
- python udp 直播_[Python] socket发送UDP广播实现聊天室功能
- eigrp ospf 邻居建立过程比较
- android培训内容明细,记录Android开发学习
- python 如何从列表中剔除(去除)重复元素?set()
- C++ Gotchas: Avoiding Common Problems in Coding and Design
- 网络运维经验分享01
- yarn的安装及使用教程
- Packet Tracer 和 Wirshark 抓取数据包
- (转)转给入职新人得体会
- 免费在线思维导图网站,这么好用一定要收藏
- Ubuntu16.04安装Redshift色温调节工具
- VLAN单线复用实操
- Affinity Designer Beta(mac设计绘图工具)
- 解决Kafka消费端错误:o.s.kafka.listener.LoggingErrorHandler : Error while processing: null
- python无法安装tensorflow_Windows上安装Tensorflow踩的坑
- 360浏览器,qq浏览器等登录页输入账号密码,在页面内再次遇见有密码框的地方会自动填充的解决办法。
- nyoj 455-黑色帽子
- 前端使用emoji表情
- win10、pycharm、Intellij IDEA、jupyter及高斯键盘常用快捷键、指令
热门文章
- 基于python的opencv计算机视觉基础知识及例程代码【视觉入门看这一篇就够了】
- Unity-Chan Toon Shader 2 介绍
- windows下System Volume Information Folder文件夹过大的处理
- setBounds()和setSize的区别
- 【第一组】第八次冲刺例会纪要
- 北京强化养老行业诚信自律 从业者禁止侮辱、虐待老人
- 网易云那些触动人心的经典热评
- JEECG集成flowable
- MEM/MBA 写作-论证有效性分析(03) 论证有效性分析 写作模板
- mysql存储过程 outfile_mysql存储过程 outfile