最近在做视频上传的时候遇到了个问题,就是当上传自己录制的视频的时候尺寸过大,尤其是录制720p视频的时候尺寸更是不可想象,但是从iPad Library或者相册里面选择视频的时候系统会做一个压缩,不知道这是什么方式压缩的
,求助论坛之后果。后来发现其实IOS里面是提供了几个API可以压缩视频的(准确的说应该是reEncode)。这几个API在AVFoundation里面。写出来希望能给遇到相同的问题的朋友一些帮助。知道的就请略过了。
写了一个便捷的方法
- (void) lowQuailtyWithInputURL:(NSURL*)inputURL
outputURL:(NSURL*)outputURL
blockHandler:(void (^)(AVAssetExportSession*))handler
{
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL opti*****:nil];
AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
session.outputURL = outputURL;
session.outputFileType = AVFileTypeQuickTimeMovie;
[session exportAsynchronouslyWithCompletionHandler:^(void)
{
handler(session);
}];
}
具体用法就是
[self lowQuailtyWithInputURL:video outputURL:output blockHandler:^(AVAssetExportSession *session)
{
if (session.status == AVAssetExportSessi*****tatusCompleted)
{
}
else
{
}
}];
在block里面检测成功,失败,或者是取消,然后释放session.
期间可以通过不断的查看session的progress属性来获取转换的进度。
可以设置这些压缩质量
AVF_EXPORT NSString *c*****t AVAssetExportPresetLowQualityNS_AVAILABLE_IOS(4_0);
AVF_EXPORT NSString *c*****t AVAssetExportPresetMediumQuality NS_AVAILABLE_IOS(4_0);
AVF_EXPORT NSString *c*****t AVAssetExportPresetHighestQualityNS_AVAILABLE_IOS(4_0);
经过我的观察发现系统的压缩和AVAssetExportPresetMediumQuality相当 66m 的 480 * 640 视频压缩过后是15m.
发现这种方法之前我一直是逐帧的压缩,就是一边向文件里面写视频帧一边压缩,这样导致视频非常的不清晰,通过以上的方式
之后,视频质量的损失不大,可以达到视频分享的文件尺寸和清晰度的平衡。
如果设置了session的shouldOptimizeForNetworkUse这个属性,效果会更好。
下面再给一个官方的例子,
https://developer.apple.com/library/ios/#samplecode/RosyWriter/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011110
这个例子给出了当写视频文件的时候手动设置位率和FPS.
同时这个例子已经非常接近iPhone上实时滤镜的做法了。
转特:http://www.cocoachina.com/bbs/read.php?tid=106768
分享到:
相关推荐
传入源文件URL,或则AVURLAsset资料对象,直接返回文件路径path,或则URL, 里边有两种压缩方式为,了大家方便不上代码了, 直接上文件
秒级! 三行代码实现iOS视频压缩、变速、混音、合并、水印、旋转、换音、裁剪 ! 支持不同分辩率,支持你能想到的各种混合操作! 更多功能不断增加中... iOS 8.0
本篇文章主要介绍了iOS视频压缩存储至本地并上传至服务器实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
iOS开发中将视频文件转换为gif图并设置gif压缩尺寸
一款安装可用的ios手机视频软件,附带源码。分享给大家下载测试,更多视频开源项目可参考http://www.anychat.cn/download.html
本篇文章主要介绍了iOS实现视频压缩上传实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
由于开发中用到视频压缩上传, 所以就自己在网上找了一些参考资料, 使用系统的AVAssetExportSession 对视频文件进行视频压缩, 有不好的地方希望大家指正, 共同学习进步
通过原生自带的工具进行视频的压缩处理
最简iOS播放器使用ffmpeg软解码视频数据,SDL_thread视频窗口管理,SDL_render渲染视频数据,SDL_audio播放音频数据,SDL_thread管理线程。 该项目是基础项目,适合学习播放流程、解码流程、线程管理、数据队列等。
想学ios的童鞋们,不用再交至少15000元甚至更高的学费去北京了。 有了这套视频教程,完全可以在家里自己学习。因为视频和实培训是一模一样的,对于经济条件不好的同学,这样的视频教程就更加珍贵了。。 需要说的是...
ffmpeg 解码视频,加声音解码 下载地址https://github.com/Wutaotao692732757/ffmpegTest
选择照片,拍照,视频
最新做的一个功能涉及到了视频的录制、压缩及上传。根据网上诸多大神的经验,终于算是调通了,但也发现了一些问题,所以把我的经验分享一下。 首先,肯定是调用一下系统的相机或相册 代码很基本: //选择本地视频 ...
ios-uc游览器可下载压缩版本,这是更新前最完美的版本
关东升主讲-精通IOS开发[IPHONE与IPAD应用开发课程视频]【分辨率1024×768】无压缩无密码高清版,百度网盘地址,尽快下载,以免和谐!
仿照微信录制小视频功能,可压缩,简单方便,希望能帮助到你
FFmpeg实现裁剪之后的视频压缩 采用Loader或者ContentProvider获取所有视频资源 采用VideoView播放视频 采用RecycleView显示视频的帧图片 通过MediaMetadataRetriever获取视频帧的Bitmap View的自定义 功能扩展思考 ...
react-native-compress 压缩本地视频以响应本机。 仅适用于 iOS,Android 即将推出。 入门 $ npm install react-native-compress --save 大部分是自动安装 $ react-native link react-native-compress 手动安装 iOS ...