iOS UIImagePicker mp4 格式

2024-01-12

是否可以保存视频并将其添加到从 UIImagePicker 捕获的 mp4 格式的自定义 ALAsset 中?或者我必须将其保存在 .mov 中并通过 AVAssetExportSession 进行压缩?


是的,您可以使用压缩视频AVAssetExportSession。您可以在此处指定压缩视频的视频类型、质量和输出 URL。

参见以下方法:

- (void) saveVideoToLocal:(NSURL *)videoURL {

    @try {
        NSArray *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docPath = [documentsDirectory objectAtIndex:0];

        NSString *videoName = [NSString stringWithFormat:@"sampleVideo.mp4"];
        NSString *videoPath = [docPath stringByAppendingPathComponent:videoName];

        NSURL *outputURL = [NSURL fileURLWithPath:videoPath];

        NSLog(@"Loading video");

        [self convertVideoToLowQuailtyWithInputURL:videoURL outputURL:outputURL handler:^(AVAssetExportSession *exportSession) {

             if (exportSession.status == AVAssetExportSessionStatusCompleted) {
                 NSLog(@"Compression is done");
             }
             [self performSelectorOnMainThread:@selector(doneCompressing) withObject:nil waitUntilDone:YES];
         }];
    }
    @catch (NSException *exception) {
        NSLog(@"Exception :%@",exception.description);
        [self performSelectorOnMainThread:@selector(doneCompressing) withObject:nil waitUntilDone:YES];
    }
}


//---------------------------------------------------------------

- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL outputURL:(NSURL*)outputURL handler:(void (^)(AVAssetExportSession*))handler {
    [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough];
    exportSession.outputURL = outputURL;
    exportSession.outputFileType = AVFileTypeMPEG4;
    [exportSession exportAsynchronouslyWithCompletionHandler:^(void) {
        handler(exportSession);
    }];
}

这里我将压缩视频保存到应用程序的文档目录中。您可以在下面的示例代码中检查其详细工作原理:

示例演示: http://jmp.sh/06gIqRp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS UIImagePicker mp4 格式 的相关文章

随机推荐

  • Python 的 hasattr 有时会返回不正确的结果

    为什么hasattr假设该实例没有foo属性 gt gt gt class A object property def foo self ErrorErrorError gt gt gt a A gt gt gt hasattr a foo
  • Mono Winforms MacOSX 替代 WebBrowser

    我距离让我的 Windows Net 应用程序在 Mac OS X 上运行仅一步之遥 而我需要弄清楚的最后一件事是 WebBrowser 控件 我需要使用 winforms 显示一个网页 但没有找到更多关于如何替换 Mac OS X 上的
  • 是否有适用于内置 Windows 8“现代阅读器”PDF 查看器的 API?

    Windows 8 将包含一个名为 Modern Reader 的内置 PDF 阅读器 在我们当前的应用程序中 我们将 Adob e Reader 作为 ActiveX 控件嵌入 我可以以类似的方式嵌入 Windows 8 Modern R
  • 监控多个导轨应用

    是否有任何工具可以在我的服务器上运行来监视多个 Rails 应用程序 我需要监视每个应用程序收到的请求数量 每个应用程序使用了多少内存 使用了多少 CPU 以及类似的其他统计信息 我需要查看每个 Rails 应用程序的统计数据 我建议你尝试
  • 范畴论中的“过滤器”是什么样的态射?

    在范畴论中 是filter操作被认为是态射吗 如果是 它是什么样的态射 示例 Scala 中 val myNums Seq Int Seq 1 3 4 2 myNums filter gt 0 Seq Int List 3 2 result
  • 在 netbeans 中正确导入库

    所以我想搞乱我刚刚下载的一个名为stdlib jar 下载自http introcs cs princeton edu java stdlib http introcs cs princeton edu java stdlib So I a
  • SSRS“OR”过滤逻辑从“=”和“IN”运算符中过滤

    我正在编写一个报告 它需要从两个内置字段中的任何一个过滤数据 所以我使用 FilterExpression 根据下面的文章查询我的要求 即报告服务 SSRS 或过滤器逻辑 https denglishbi wordpress com 201
  • 如何在Android Studio中打印到控制台?

    我刚刚从以下位置下载了适用于 Linux 的 Android Studio http developer android com sdk installing studio html http developer android com s
  • 尝试仅使用图像导出二维变换矩阵

    我不知道这是否应该放在数学论坛或编程论坛中 但我会将其发布在两个论坛中 看看我得到了什么 我有两张计算机图像 其中一张是 原始 图像 一个大的 TIF 文件 另一张是原始图像的转换版本 它在软件程序中经过旋转 剪切和翻译 我需要对转换后的图
  • Twitter api 的 JSON HTTP 请求示例?

    我想向 twitter api 发出请求 这是文档 https dev twitter com docs api 1 get search 中提供的示例 GET http search twitter com search json q b
  • DecimalField 将零转换为 0E-10

    Django 1 6 Python 2 7 5 PostgreSQL 9 1 Linux 我在模型中定义了几个小数字段 如下所示 min inclusive models DecimalField minimum inclusive max
  • 为什么当我提交表单时cookie值没有立即更新?

    为什么当我提交表单时 cookie 值没有立即更新 当我提交表单时 输出的refer id仍然是旧的 但是当我刷新浏览器时 它会改变 为什么它不能立即改变 p cookie refer id p
  • jfreechart - StackedBarChart 定制

    我在下面提到了 4 个 xml 文件 其中有状态 密钥和构建日期 我需要在基于 BuildDate 的图表中表示 key 的 状态 信息 x 轴应该是过去 6 天 相对于当前日期 假设今天是 9 月 7 日 那么条目应该是从 9 月 1 日
  • Android DefaultHttpClient默认超时

    我的问题是 如果我没有指定 使用 DefaultHttpClient 发出的请求的默认超时是多少 所以如果没有这样的代码 HttpParams my httpParams new BasicHttpParams HttpConnection
  • Google Chrome 在 Windows 上插入框阴影错误,而不是在 Mac 上:更好的解决方法吗?

    Chrome 5 0 375 125 上仍然存在这种情况 这是撰写本文时最新的 Windows 版本 在此跟踪错误 http code google com p chromium issues detail id 25334 http co
  • Laravel 5 应用程序密钥

    我是 Laravel 的新手 我今晚才开始做 实际上 我有以下代码 key gt env APP KEY SomeRandomString In xampp htdocs laravel blog config app php 我想通过 c
  • 从 UITabBarController 的 moreNavigationController 中删除 rightBarButtonItem

    我已经添加了tabBar在我的应用程序中并删除rightBarButtonItem与代码 UITableView moreTableView UITableView tabController moreNavigationControlle
  • 如何使用 Access VBA 更新多值字段

    我正在编写一个脚本 该脚本从另一个软件产品获取打印输出 解析数据 然后导入训练事件 这是我正在使用的数据示例 RANDOMLY GENERATED TEST DATA PRIVACY ACT NOT APPLICABLE TRAINING
  • 使用GIT部署网站

    我已经关注了这篇优秀的文章http toroid org ams git website howto http toroid org ams git website howto使用 Git 的 post hooks 策略将代码部署到我的服务
  • iOS UIImagePicker mp4 格式

    是否可以保存视频并将其添加到从 UIImagePicker 捕获的 mp4 格式的自定义 ALAsset 中 或者我必须将其保存在 mov 中并通过 AVAssetExportSession 进行压缩 是的 您可以使用压缩视频AVAsset