将视频转换成MP4_单片机将采集的视频信息转换为mp4-程序员宅基地

技术标签: iOS  

- (NSURL *)convert2Mp4:(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:avAsset

                                                                              presetName:AVAssetExportPresetHighestQuality];

        mp4Url = [movUrl copy];

        mp4Url = [mp4Url URLByDeletingPathExtension];

        mp4Url = [mp4Url URLByAppendingPathExtension:@"mp4"];

        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;

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BianHuanShiZhe/article/details/42531929

智能推荐

SQL: coalesce()函数---返回第一个非空值_sql取第一个非空值-程序员宅基地

文章浏览阅读2.7k次。①用途:将空值替换成其他值返回第一个非空值②表达式:COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。③举例:SELECT COALESCE(NULL,NU..._sql取第一个非空值

java过滤有可能的xss攻击的参数_java过滤xss参数-程序员宅基地

文章浏览阅读1.6k次。public boolean checkXssChar(String s){ if(s != null){ String [] str = {"","\"","'","(",")"}; for (String string : str) { if(s.indexOf(string) != -1)_java过滤xss参数

Linux 文件编辑(vim)_linux 编辑文件 vim-程序员宅基地

文章浏览阅读1.3k次,点赞35次,收藏24次。vim 是编辑文件所使用到的命令,类似 Windows 的笔记本或 Word。因为这个指令使用的非常频繁,也很重要,所以我选择将它单独写一篇。与 vim 相仿的还有一个工具叫做 vi ,它们之间大致相同,我们也可以理解 vim 是 vi 的升级版。但是,vi 有一个很好的特性,vi 粘贴内容的时候不会有格式,不会带任何的特殊字符。_linux 编辑文件 vim

Canvas 实现画中画动画效果--网易娱乐年度盘点H5动画解密-程序员宅基地

文章浏览阅读947次。前言由于本人最近在做一些 growth hacking 的工作,业务上以后可能也会涉及去做一些能够在朋友圈火爆分享的 H5 页面,突然想到去年看到一个网易娱乐年度新闻盘点的 H5 页面非常的新颖,采用画中画的形式依次串联十多个手绘娱乐图片,加上洗脑的“好运来”音乐,让人有很大的分享的欲望。手机扫码体验网易年度娱乐盘点:一步步实现接下来我们来一步步实现这样的一个 H5 页面,首先,我们需要..._网易 canvas

R语言ggplot2可视化多项式曲线、多项式方程以及多项式模型评估指标R方:使用ploynom包拟合三阶多项式模型_ggplot多项式拟合-程序员宅基地

文章浏览阅读707次,点赞10次,收藏9次。R语言ggplot2可视化多项式曲线、多项式方程以及多项式模型评估指标R方:使用ploynom包拟合三阶多项式模型_ggplot多项式拟合

STM32F103 USB OTA升级BootLoader (一)_stm32f103bootloader程序-程序员宅基地

文章浏览阅读646次。STM32F103 USB OTA升级BootLoader (一)_stm32f103bootloader程序

随便推点

Android 网络服务类提供的服务接口_android registerscanresultscallback-程序员宅基地

文章浏览阅读2.9k次。1.NetworkManagementService继承了INetworkManagementService.Stub,因此提供对应的 AIDL 定义的服务:在 frameworks/base/core/java/android/os/INetworkManagementService.aidl 中定义interface INetworkManagementService{ /* Register and unregister an observer to receive ev..._android registerscanresultscallback

VScode、argparse库、lauch.json中args参数_launch.json args 参数-程序员宅基地

文章浏览阅读7.2k次,点赞6次,收藏9次。argparse库是用于接受从command-lines传来参数的库,即argparse库接受命令台终端出传入的参数,但在VScode中并不需要从command-lines来配置参数。VScode通过launch.json文件配置args参数,并通过在python文件中引入sys模块调用参数args1=sys.argv[3]launch.json文件:{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问:_launch.json args 参数

探秘 UPnP-DLNA-Demo:家庭智能设备互连新体验-程序员宅基地

文章浏览阅读549次,点赞21次,收藏14次。探秘 UPnP-DLNA-Demo:家庭智能设备互连新体验项目地址:https://gitcode.com/hubing8658/UPnP-DLNA-Demo在当今智能家居时代,让设备之间无缝协作已经成为一种基本需求。UPnP-DLNA-Demo 是一个开源项目,它提供了一种简单易用的方式,让你的设备能够遵循 UPnP(通用即插即用)和 DLNA(数字生活网络联盟)标准进行通信,实现多媒体数..._upnp开源项目

sql防注入代码(asp)_asp防sql注入代码-程序员宅基地

文章浏览阅读1.4k次。将本页用include方法放在头部以让所有页都可以调用,比如include在conn.asp里如果有流式上传的页面请把该页加到表page中,以防form冲突 Dim N_no,N_noarray,req_Qs,req_F,N_i,N_dbstr,Conn,N_rs,N_userIP,N_thispageN_userip = Request.ServerVariables("REMO_asp防sql注入代码

信息学奥赛一本通_1.6编程基础之一维数组_06:校门外的树-程序员宅基地

文章浏览阅读427次。06:校门外的树总时间限制:1000ms内存限制:65536kB描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的..._06:校门外的树

PHP和java通讯 WebService+JavaBridge_php与java用http通讯-程序员宅基地

文章浏览阅读856次。最近弄ecshop网上商城这个系统,需要提供对银联快捷支付支持,我查了下资料,发现php调用java,可以通过PHP/Java Bridge来实现这个功能。于是采用PHP/Java Bridge来调用java实现银联支付Demo. 一般来说,PHP和java通讯通讯,使用JavaBridge就可以了,坑爹的是银联那边提供的demo打包成jar包不能正常运行(打包完后运行需要3-5分_php与java用http通讯