利用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相关推荐

  1. java视频转码mov转MP4

    解决视频文件在web端获取时的问题,安卓手机的视频文件为MP4格式的,但是ios手机视频格式为mov格式的视频文件,在用户上传视频后,会造成无法播放此视频问题 通过以下方法解决此问题,我们可以在用户上 ...

  2. 最简单的基于FFmpeg的移动端样例:IOS 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  3. 最简单的基于FFmpeg的移动端例子:IOS 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  4. iOS 视频转码处理

    前言 苹果手机录制的视频在非Safari浏览器和安卓机器上面都无法直接播放,原因是因为直接录制的视频默认是mov格式,这是需要转换一下格式来处理 其中包含多种转码方式 [KJVideoFileType ...

  5. 怎么修复松下相机死机断电MDT文件为MOV或MP4视频

    松下Panasonic相机Lumix如GH系列,G系列等录制的视频格式化有MOV或MP4,1080P, 甚至4K等分辨率,如果在摄像过程当中遇到不正常的问题,如:相机死机,断电,电池没电等,录制过程中 ...

  6. 怎么修复佳能相机断电死机DAT文件为MOV或MP4视频

    佳能相机,相机型号如:600D, 6D, 5D2, 5D3, 5DS, 5D4, 760D, 5D4, 6D2等EOS单反相机系列,正常录制的视频可能是MOV或者MP4, 如果相机在拍摄中遇到异常情况 ...

  7. 苹果手机视频mov转mp4格式的方法

    苹果手机视频mov转mp4格式的方法?使用苹果手机的小伙伴是越来越多了,苹果手机中的视频格式为mov,这是一种音视频格式的封装格式,比起mp4,mov还能够容纳脚本.图片.Java等等,说起来比mp4 ...

  8. 最简单的基于FFmpeg的移动端例子:IOS 视频解码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  9. 最简单的基于FFmpeg的移动端例子:Android 视频转码器

    ===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:A ...

  10. 基于mp4parser的视频剪切,视频合并,视频转码实例

    1.概述 mp4parser是一个视频处理的开源工具箱,我希望在Java工程里使用视频剪切.视频合并.视频转码这3种功能. 由于mp4parser里的方法都依靠工具箱里的一些内容,所以需要将这些内容打 ...

最新文章

  1. 高水平文章发表必备-数据分析和文献解读技巧
  2. python udp 直播_[Python] socket发送UDP广播实现聊天室功能
  3. eigrp ospf 邻居建立过程比较
  4. android培训内容明细,记录Android开发学习
  5. python 如何从列表中剔除(去除)重复元素?set()
  6. C++ Gotchas: Avoiding Common Problems in Coding and Design
  7. 网络运维经验分享01
  8. yarn的安装及使用教程
  9. Packet Tracer 和 Wirshark 抓取数据包
  10. (转)转给入职新人得体会
  11. 免费在线思维导图网站,这么好用一定要收藏
  12. Ubuntu16.04安装Redshift色温调节工具
  13. VLAN单线复用实操
  14. Affinity Designer Beta(mac设计绘图工具)
  15. 解决Kafka消费端错误:o.s.kafka.listener.LoggingErrorHandler : Error while processing: null
  16. python无法安装tensorflow_Windows上安装Tensorflow踩的坑
  17. 360浏览器,qq浏览器等登录页输入账号密码,在页面内再次遇见有密码框的地方会自动填充的解决办法。
  18. nyoj 455-黑色帽子
  19. 前端使用emoji表情
  20. win10、pycharm、Intellij IDEA、jupyter及高斯键盘常用快捷键、指令

热门文章

  1. 基于python的opencv计算机视觉基础知识及例程代码【视觉入门看这一篇就够了】
  2. Unity-Chan Toon Shader 2 介绍
  3. windows下System Volume Information Folder文件夹过大的处理
  4. setBounds()和setSize的区别
  5. 【第一组】第八次冲刺例会纪要
  6. 北京强化养老行业诚信自律 从业者禁止侮辱、虐待老人
  7. 网易云那些触动人心的经典热评
  8. JEECG集成flowable
  9. MEM/MBA 写作-论证有效性分析(03) 论证有效性分析 写作模板
  10. mysql存储过程 outfile_mysql存储过程 outfile