首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将视频从UIPickerViewController压缩到MB的特定大小,以便在Swift 2中进行网络连接

将视频从UIPickerViewController压缩到MB的特定大小,以便在Swift 2中进行网络连接
EN

Stack Overflow用户
提问于 2016-04-18 01:34:08
回答 1查看 822关注 0票数 3

我试图从UIPickerViewController中选择一个视频,将视频压缩为1.5MB,并将其发送到服务器。

我已经能够选择一个形象和张贴成功。我也能够选择一个视频并成功地发布它。问题是,由于视频文件大约是27 to,它太大,无法播放一次发送。因此,当试图从服务器播放视频时,时间会显示"--“。如果我选择一个较小的视频,它将张贴和播放完美的好。

我知道问题是大小问题,因为我使用了另一个应用程序来压缩视频,然后使用我的应用程序将其发送到服务器。效果很好。

我在这个问题上花了5个多小时,我自己似乎也想不出来。(只是说我已经试着解决这个问题,并自己找到了答案)

我尝试过实现这些技术:

https://gist.github.com/daltheman/4716ec10d6d0f71aba56

buffer

https://snackcoffee.me/2015/11/29/zlib-swift-2/

IOS Video Compression Swift iOS 8 corrupt video file

还有其他几个不在我的标签上。其中一些是在目标C中,但我似乎无法很好地翻译它们。

TL;博士在AVFoundation中有像UIImageJPEGRepresentation这样的视频功能吗?您可以发布一个基本代码示例,从UIPicker中选择图像并将其文件大小更改为1.5MB吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-18 19:39:02

在其中一个项目中,我有一个类似的任务,并使用AVAssetExportSession压缩视频:

代码语言:javascript
复制
    - (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:AVAssetExportPresetMediumQuality];
exportSession.outputURL = outputURL;
exportSession.shouldOptimizeForNetworkUse = YES;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
 {
     handler(exportSession);
 }];}

您可以选择几种质量类型:

代码语言:javascript
复制
AVF_EXPORT NSString *const AVAssetExportPresetLowQuality        NS_AVAILABLE(10_11, 4_0);
AVF_EXPORT NSString *const AVAssetExportPresetMediumQuality     NS_AVAILABLE(10_11, 4_0);
AVF_EXPORT NSString *const AVAssetExportPresetHighestQuality    NS_AVAILABLE(10_11, 4_0);

然后使用如下函数检查输出大小:

代码语言:javascript
复制
- (NSString *)sizeOfLocalURL:(NSURL *)url {
NSData *fileData = [[NSData alloc] initWithContentsOfURL:url];
return [NSString stringWithFormat:@"%.2f mb", fileData.length/1000000.00];
}

希望它有帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36684159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档