iOS视频压缩

//
//  ViewController.m
//  iOS视频测试
//
//  Created by apple on 15/8/19.
//  Copyright (c) 2015年 tqh. All rights reserved.
//

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()

@end

@implementation ViewController

//下载视频
- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *path = NSHomeDirectory();//主目录
    NSLog(@"NSHomeDirectory:%@",path);
    //获取沙盒中的路径

    NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:0];

    NSString *plistPath =[doucumentsDirectiory stringByAppendingPathComponent:@"mp4Test.mp4"];

    NSFileManager *file = [NSFileManager defaultManager];

    if ([file fileExistsAtPath:plistPath])

    {
        NSLog(@"沙盒中有视频");
    }
    else //若沙盒中没有

    {
        NSError *error;
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString *bundle = [[NSBundle mainBundle] pathForResource:@"mp4Test" ofType:@"mp4"];
        [fileManager copyItemAtPath:bundle toPath:plistPath error:&error];
        NSLog(@"写入没有%d",[fileManager copyItemAtPath:bundle toPath:plistPath error:&error]);

    }

    NSString *newPlistPath =[doucumentsDirectiory stringByAppendingPathComponent:@"mp4Test5.mp4"];
    [self lowQuailtyWithInputURL:[NSURL fileURLWithPath:plistPath] outputURL:[NSURL fileURLWithPath:newPlistPath] blockHandler:^(AVAssetExportSession *session) {
        if (session.status == AVAssetExportSessionStatusCompleted)
        {
            NSLog(@"压缩完成");
        }else if (session.status == AVAssetExportSessionStatusFailed) {
            NSLog(@"压缩失败");
        }
    }];
}

#pragma mark - 视频压缩

- (void) lowQuailtyWithInputURL:(NSURL*)inputURL
                      outputURL:(NSURL*)outputURL
                   blockHandler:(void (^)(AVAssetExportSession*))handler
{
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
    AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:asset     presetName:AVAssetExportPresetLowQuality];
    session.outputURL = outputURL;
    session.outputFileType = AVFileTypeQuickTimeMovie;
    [session exportAsynchronouslyWithCompletionHandler:^(void)
     {
         handler(session);
     }];
}

@end

AVAssetExportPresetLowQuality:低质量压缩

AVF_EXPORT NSString *const AVAssetExportPresetLowQuality        NS_AVAILABLE_IOS(4_0);
AVF_EXPORT NSString *const AVAssetExportPresetMediumQuality     NS_AVAILABLE_IOS(4_0);
AVF_EXPORT NSString *const AVAssetExportPresetHighestQuality    NS_AVAILABLE_IOS(4_0);

时间: 2024-08-02 21:35:27

iOS视频压缩的相关文章

iOS视频压缩处理

最近忙于项目开发, 昨天才完成整个项目的开发, 今天就抽出时间, 分享一下我在开发中所涉及到的技术问题! 由于近期开发涉及到视频, 所以视频压缩, 上传, 播放等一系列功能都是要涉及到的, 所以在此, 我就跟大家分享一下视频压缩! iOS 视频压缩问题, 我在网上也找了资料, 但是不多, 也不够详细全面, 我就自己写了一个压缩的小demo, 用到的是系统的一个类库 #import <AVFoundation/AVFoundation.h> 中 AVAssetExportSession 这个类,

iOS视频压缩存储至本地并上传至服务器-b

最近做了一个项目,我把其中的核心功能拿出来和大家分享一下,重点还是自己梳理一下. 这里关于视频转码存储我整理了两个方法,这两个方法都是针对相册内视频进行处理的. 1.该方法没有对视频进行压缩,只是将视频原封不动地从相册拿出来放到沙盒路径下,目的是拿到视频的NSData以便上传 这里我传了一个URL,这个URL有点特别,是相册文件URL,所以我说过只针对相册视频进行处理 //将原始视频的URL转化为NSData数据,写入沙盒     + (void)videoWithUrl:(NSString *

iOS视频压缩存储至本地并上传至服务器

最近做了一个项目,我把其中的核心功能拿出来和大家分享一下,重点还是自己梳理一下. 这里关于视频转码存储我整理了两个方法,这两个方法都是针对相册内视频进行处理的. 1.该方法没有对视频进行压缩,只是将视频原封不动地从相册拿出来放到沙盒路径下,目的是拿到视频的NSData以便上传 这里我传了一个URL,这个URL有点特别,是相册文件URL,所以我说过只针对相册视频进行处理 //将原始视频的URL转化为NSData数据,写入沙盒 + (void)videoWithUrl:(NSString *)url

相册--视频压缩

iOS视频压缩AVAssetExportSession 字数55 阅读3 评论0 喜欢1 AVAssetExportSession是系统自带的压缩首先导入头文件 #import <AVFoundation/AVFoundation.h> #import <MobileCoreServices/MobileCoreServices.h> #import <AssetsLibrary/AssetsLibrary.h> 设置代理 <UIImagePickerContro

视频播放器边下边播(保存到沙盒,显示进度)

没怎么研究视频播放器,就在网上找了个,链接:https://github.com/835239104/KrVideoPlayerPlus 下载AFNetworking, 1.下载最新版的会报错,没有引入相关库 2.AFSecurityPolicy.m中:注释了一部分代码 #pragma mark - 这里改了 ------ #warning - 这里改了 -------- //#if !TARGET_OS_IOS && !TARGET_OS_WATCH //static NSData *

【如何快速的开发一个完整的iOS直播app】(原理篇)

一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的. 直播易:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架,就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程. 二.了解直播 热门直播产品 映客,斗鱼,熊猫,虎牙,花椒等等 直播效果图 直播效果.jpeg 1.一个完整直播ap

iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像

iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像 本文档基于H.264的解码,介绍读写Video Toolbox解码回调函数参数CVImageBufferRef中的YUV或RGB数据的方法,并给出CVImageBufferRef生成灰度图代码.方便调试.同时,还介绍了Video Toolbox解码回调中进行YUV处理时容易忽略的问题.文档定位于iOS音视频高级编程,致力于提供高参考价值的Core Video中文资料,最近也在StackO

如何快速的开发一个完整的iOS直播app(原理篇)

前言 大半年没写博客了,但我一直关注着互联网的动向,最近会研究很多东西,并分享,今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,整理了直播的原理,当前只是原理篇,后续会持续发布实战篇,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播. 一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频

ffmpeg for iOS

链接: ios ffmpeg 实时视频压缩(主要是H264) 最简单的基于FFmpeg的移动端例子:IOS 视频转码器 iOS下使用FFMPEG的一些总结