iOS开发之视频压缩

基于AVAssetExportSession的视频质量压缩

参考 Unclefeng iOS视频压缩处理

AVAssetExportSession属于<AVFoundation/AVFoundation.h> 这个类, 官方API 是这样解释说明的, AVAssetExportSession 是对AVAsset对象内容进行转码, 并输出到制定的路径;

  • (nullable instancetype)initWithAsset:(AVAsset *)asset presetName:(NSString *)presetName NS_DESIGNATED_INITIALIZER; 初始化方法 asset, 参数为要转码的asset 对象, presetName, 该参数为要进行转码的方式名称, 为字符串类型, 系统有给定的类型值,
视频质量类型
- AVAssetExportPresetLowQuality
- AVAssetExportPresetMediumQuality
- AVAssetExportPresetHighestQualitAy 
- AVAssetExportPreset640x480
- AVAssetExportPreset1280x720

outputURL , 为输出内容的URL, (指定一个文件路径, 然后根据路径初始化一个URL, 赋给, outputURL) outputFileType, 为输出压缩后视频内容的格式类型

//  Created by iOS-Developer on 16/2/19.
//  Copyright © 2016年 iOS-Jessonliu. All rights reserved.
//

#import "JFCompressionVideo.h"
#import <AVFoundation/AVFoundation.h>


#define CompressionVideoPaht [NSHomeDirectory() stringByAppendingFormat:@"/Documents/CompressionVideoField"]

@interface JFCompressionVideo ()
@end

@implementation JFCompressionVideo

+ (void)compressedVideoOtherMethodWithURL:(NSURL *)url compressionType:(NSString *)compressionType compressionResultPath:(CompressionSuccessBlock)resultPathBlock {
    
    NSString *resultPath;
    NSData *data = [NSData dataWithContentsOfURL:url];
    CGFloat totalSize = (float)data.length / 1024 / 1024;
    AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:url options:nil];
    NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset];
    // 所支持的压缩格式中是否有 所选的压缩格式
    if ([compatiblePresets containsObject:compressionType]) {
        
        // 用时间, 给文件重新命名, 防止视频存储覆盖,
        NSDateFormatter *formater = [[NSDateFormatter alloc] init];
        [formater setDateFormat:@"yyyy-MM-dd-HH:mm:ss"];
        
        NSFileManager *manager = [NSFileManager defaultManager];
        BOOL isExists = [manager fileExistsAtPath:CompressionVideoPaht];
        if (!isExists) {
            [manager createDirectoryAtPath:CompressionVideoPaht withIntermediateDirectories:YES attributes:nil error:nil];
        }
        resultPath = [CompressionVideoPaht stringByAppendingPathComponent:[NSString stringWithFormat:@"outputJFVideo-%@.mov", [formater stringFromDate:[NSDate date]]]];
        NSLog(@"resultPath = %@",resultPath);

        AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:avAsset presetName:compressionType];
        exportSession.outputURL = [NSURL fileURLWithPath:resultPath];
        exportSession.outputFileType = AVFileTypeMPEG4;
        exportSession.shouldOptimizeForNetworkUse = YES;
        [exportSession exportAsynchronouslyWithCompletionHandler:^(void) {
             if (exportSession.status == AVAssetExportSessionStatusCompleted) {
                 
                 NSData *data = [NSData dataWithContentsOfFile:resultPath];
                 float memorySize = (float)data.length / 1024 / 1024;
                 NSLog(@"视频压缩后大小 %f", memorySize);
                 resultPathBlock (resultPath, memorySize);
             } else {
                 
                 NSLog(@"压缩失败");
             }
         }];
    } else {
        NSLog(@"不支持 %@ 格式的压缩", compressionType);
    }
}

/**
*  清楚沙盒文件中, 压缩后的视频所有, 在使用过压缩文件后, 不进行再次使用时, 可调用该方法, 进行删除 
 */
+ (void)removeCompressedVideoFromDocuments {
    NSFileManager *manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath:CompressionVideoPaht]) {
        [[NSFileManager defaultManager] removeItemAtPath:CompressionVideoPaht error:nil];
    }
}
@end

转载于:https://my.oschina.net/u/1993252/blog/839634

iOS视频压缩的两种方式 传入源文件URL,或则AVURLAsset资料对象,直接返回文件路径path,或则URL, 里边有两种压缩方式为,了大家方便不上代码了, 直接上文件 立即下载

相关推荐

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 689

ios swift 自定义压缩压缩视频(清晰,解决了旋转问题)

公司最近有一个需求,需要压缩视频,体积和清晰度都有要求。在网上查了很多资料,最终使用了assetReader和assetWriter,但是网上找到的资料,直接拷贝到项目中,都或多或少有些问题,或少了一些参数,所以我把能顺利压缩的代码写出来,记录下。

cai_huaer的博客 3692

K-GAS解读(08)

大众kgas标准,大众及其供应商kgas

m0_51113317的博客 598

ios-视频压缩

其实有的时候我们可能会需要拍一段小视频去上传到服务器,这个时候如果我们直接使用原始的文件的话,那个视频大小会很大,可能上传多了服务器压力大。 所以这个时候我们就要去做相应的导出操作,导出之后,再去相应的路径获取,然后再去上传。具体步骤我们大概应该可以分为如下步骤 1、首先要先去选择这个视频,选择的操作就和选择照片的操作是差不多的 2、去设置媒体的类型,如果不去设置,我们会找不到视频。 3、

rv0p111 715

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3416

COCO数据集缺失文件补全方法

本文代码是以目标检测(object detection)和实例分割(instance segmentation)任务的标签文件为例,即文件。其他任务的标签文件内容略有不同,但是图片来源表示字段完全相同,因此代码可通用。另外如果是非2017版本COCO应该也通用。msgspec是一个高性能的序列化和验证库,支持 JSON、MessagePack、YAML 和 TOML 等多种格式。高性能:在常见协议的编码/解码中表现出色,通常比其他库快10-80倍。零成本的模式验证。

qq_46396470的博客 1995

iOS录制(或选择)视频,压缩、上传(整理)

最新做的一个功能涉及到了视频的录制、压缩及上传。根据网上诸多大神的经验,终于算是调通了,但也发现了一些问题,所以把我的经验分享一下。 首先,肯定是调用一下系统的相机或相册 代码很基本: [objc] view plain copy   //选择本地视频   - (void)choosevideo   { 

WZios的博客 1万+

CRISPR筛选全流程指南:从文库构建到数据分析实战

功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对

weixin_31188927的博客 283

iOS视频压缩问题

具体操作如下 -(void)handleVideoAccroding:(NSURL *)originFilePath { NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]; NSString *outpu...

哈皮吖的博客 2254

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1368

超临界二氧化碳再热再压缩布雷顿循环建模与先进控制

超临界二氧化碳布雷顿循环建模与先进控制研究 本文研究了超临界二氧化碳再热再压缩布雷顿循环系统的建模与控制。通过MATLAB/Simscape构建了包含压缩机、透平、回热器等关键组件的动态模型,并设计了基于模型预测控制(MPC)和自抗扰控制(ADRC)的多层控制策略。系统采用转速控制的压缩机、阀门开度控制的透平,以及可变热源加热器,实现了全动态分析。研究结果表明,MPC与ADRC混合控制方案相较于传统PID控制,功率超调降低至0.9%,效率波动控制在±0.08%,扰动恢复时间缩短至12秒。

AI的内部世界的博客 342

iOS 视频压缩、音视频混合、音频混合

本文将介绍视频、音频处理的方法;方便大家使用 Demo:https://coding.net/u/Xoxo_x/p/VideoAndAudio/git/blob/master/AVFoundation%E9%9F%B3%E8%A7%86%E9%A2%91%E6%B7%B7%E5%90%88%E5%8E%8B%E7%BC%A9.zip或者:https://coding.net/u/Xoxo_x/p/V

Quinn's blog ! I'm glad to be here! 3528

嵌入式工程师成长之路(1)——元件基础(完整版)

为什么你的电路总是“玄学”故障?答案藏在这些元件里! 0欧电阻竟能引发信号反射?5V转3.3V电平匹配失败导致MCU烧毁?电容降压设计让电源“滋滋”响?——这些坑,本文全填平! 优快云硬件领域头部博主十年踩坑经验汇总,覆盖电阻、电容、电感核心难点+高频实战问题,让你从“调试地狱”直通“一次成功”!

云轩阁 2万+

YPImagePicker 项目推荐

YPImagePicker 是一个用于 iOS 平台的开源项目,主要用于实现类似 Instagram 的图片和视频选择器。该项目完全使用 Swift 语言编写,适合 iOS 开发者集成到他们的应用中,以提供丰富的图片和视频选择功能。 ## 项目核心功能 YPImagePicker 提供了多种核心功能,包括: 1. **图片选择**:用户可以从相册中选择图片,支持多种格式的图片。 2. **视...

gitblog_00067的博客 487

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 视频压缩太慢,wx.chooseVideo android平台压缩很慢

- 当前 Bug 的表现这个问题我看社区有去人老早就有人反应过了,但是至今这个问题也没个明确的说法;我想问的是这样的一个接口,如果我要让用户从相册选择一个视频上传到我们服务器,如果不压缩,原始视频动动就几百M的,这么大的文件直接上传显然不合适,那就只能压缩视频后再上传,但是问题来了:wx.chooseVideo这个api设置上压缩参数,在大部分android机子里选择使用相机拍的视频,页面一直处...

weixin_40001442的博客 839

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ipad写java_我花了三天写了手机补帧神器

自从买了最新的iPad以后,我一直考虑移动办公的最大可能性。目前可以实现远程桌面的方式访问Macbook,体验过TeamViewer,VNC Viewer,还有Google远程桌面。个人觉得Google的远程桌面做的最好。除了VNC Viewer走的VNC协议,其他两个都是通过录屏和TCP长连接实现的远程桌面的。Google远程桌面在触屏方面做的真的很好,但是不确定在国内是否可用。不过因为我最近一...

weixin_39586265的博客 560

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

iOS之视频压缩

//视频压缩的原理就是以低质量的导出 - (void)viewDidLoad {     [super viewDidLoad];         //从相册中选择视频出来     UIImagePickerController *picker = [[UIImagePickerController alloc]init];

代码解释生活 1007

推荐使用 Flutter_video_compress - 轻松压缩视频的利器!

推荐使用 Flutter_video_compress - 轻松压缩视频的利器! Flutter_video_compress 是一个高效且易于使用的开源库,专为 Flutter 开发者设计,它允许您在 iOS 和 Android 平台上轻松处理视频压缩任务。这个库不仅可以减少应用大小,而且支持获取视频缩略图以及媒体信息,是移动开发者的理想选择。 项目介绍 Flutter_video_compre...

gitblog_00064的博客 1368

100道ios面试题目的总结体会

常见问题- 你昨天/这周学习了什么?昨天到目前为止学习了图片,以及视频上传的压缩处理,还有就是instruments上面的一些用法,还有一个自动化测试工具,进行软件的测试处理 常见问题- 你为什么热衷于软件开发?你见过妹子不爱美妆爱code的吗,所以对软件开发是一种热爱,在心情不好或是很烦躁的时候看看code或是研究一下code就会心情比较好一些- 你对哪一种控制系统比较熟悉?- 是否参与过Git

喵咪不爱吃鱼的博客 6938

FFmpeg Kit跨平台移动开发终极指南:从零构建专业级多媒体应用

在当今移动应用开发领域,多媒体处理能力已成为衡量应用质量的关键指标。FFmpeg Kit作为FFmpeg的移动平台封装,为开发者提供了强大的跨平台音视频处理解决方案。本文将从实际项目角度出发,深入探讨如何在Android和iOS平台高效集成FFmpeg Kit,解决实际开发中遇到的各类挑战。 ## 项目架构设计与环境准备 ### 多平台项目结构规划 FFmpeg Kit支持多种移动开发框架,

gitblog_00893的博客 1117

【亲测免费】 LightCompressor 使用教程

LightCompressor 是一个强大的视频压缩库,适用于 Android 和 iOS 平台。它能够生成压缩后的 MP4 视频文件,同时保持较高的视频质量。该项目支持多种视频质量设置,包括非常高质量、高质量、中等质量、低质量和非常低质量,用户可以根据需要选择合适的压缩质量。 ## 项目快速启动 ### Android 集成 1. **确保 Kotlin 版本**:确保你的 Kotlin

gitblog_01137的博客 705

AVFoundation关于 iOS 中的视频压缩

最近在开发过程中涉及到了视频压缩的需求,那么在 iOS 上怎么实现自定义码率和分辨率的视频压缩呢? 1. 传统压缩方式 产品需求:不管原视频的清晰度如何,压缩后的视频码率和分辨率是一样的。首先,iOS在AVFoundation中已经提供了简单的视频压缩方法,示例代码如下: 正常情况下这段代码不会出现任何问题,但是大家可以用下面的视频做个测试,链接: https://pan.baidu.com/s/1wLVbDFtzROVPo8T1qw6MXA 密码: ij7d。结果会发现原视频分辨率1080x60

翻肚鱼儿的博客 2094

iOS 视频压缩

AVFoundation框架中提供了视频压缩的功能,有一些应用场景,对像素要求不高,但是需要看到视频的,可以对视频进行压缩,比如微信的小视频功能。 //压缩 - (void)compression{ NSLog(@"压缩前大小 %f MB",[self fileSize:_videoUrl]); // 创建AVAsset对象 AVAsset* asset = [AVAsset assetW

Erice_e的专栏 1196

iOS视频 压缩过程 AVAssetExportSessionStatusFailed 文件创建失败

关键问题代码: AVAssetExportSession *exportSession............ exportSession.outputURL = *******; 这里表示压缩转码后的输出路径 之前一直弄错了  经过修改后 如下 exportSession.outputURL = [NSURL URLWi

Macocoa的专栏 5810

AVFoundation 框架初探究(三)

转载自 http://www.cocoachina.com/ios/20180426/23191.html 这篇总结什么? 在该系列的上一篇的文章中,我们总结的大致内容如下: 1、视频录制  AVCaptureSession + AVCaptureMovieFileOutput 2、视频录制 AVCaptureSession + AVAssetWriter 3、AVCaptureSess...

qq_22220403的博客 786

视频压缩方法

视频压缩

岳彦胜的专栏 1016
上一篇: scrollTop 滚动动画
下一篇: Bzoj3676 [Apio2014]回文串
weixin_33728708
博客等级 码龄11年 5472粉丝 1452原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值