iOS实现视频压缩上传实例代码

发布时间 - 2026-01-11 00:52:17    点击率:

之前写过图片上传PHP服务器,今天把接口稍微改了一下,把视频上传的代码贴出来,目前上传功能已经调通,视频的压缩代码上似乎并不完善,后续会完善压缩部分的代码;

- (void)convertVideoWithURL:(NSURL *)url
{
  NSDate *date = [NSDate date];
  NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
  [dateformatter setDateFormat:@"YYYY-MM-dd-HH-mm-ss"];
  NSString *dateName = [dateformatter stringFromDate:date];
  NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
  NSString *pathName = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4",dateName]];
  NSLog(@"沙盒:%@",pathName);
  //转码配置
  AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
  AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
  exportSession.shouldOptimizeForNetworkUse = YES;
  exportSession.outputURL = [NSURL fileURLWithPath:pathName];
  exportSession.outputFileType = AVFileTypeMPEG4;
  [exportSession exportAsynchronouslyWithCompletionHandler:^{
    int exportStatus = exportSession.status;
    switch (exportStatus)     {
      case AVAssetExportSessionStatusFailed:
      {
        // log error to text view
        NSError *exportError = exportSession.error;
        NSLog (@"AVAssetExportSessionStatusFailed: %@", exportError);
        [SVProgressHUD showErrorWithStatus:@"视频压缩失败"];
        [SVProgressHUD dismissWithDelay:1.0];
        break;
      }
      case AVAssetExportSessionStatusCompleted:
      {
        self.videoData = [NSData dataWithContentsOfFile:pathName];

        [[NetTool shareDL]upLoadVideoWithURL:@"http://192.168.1.102/php/image.php" paremeter:nil data:self.videoData videoName:[NSString stringWithFormat:@"%@.mp4",dateName] progress:^(NSProgress * _Nonnull uploadProgress) {

          [SVProgressHUD showProgress:1.0*uploadProgress.completedUnitCount/uploadProgress.totalUnitCount status:@"正在上传"];
          NSLog(@"正在上传%f%%",(1.0*uploadProgress.completedUnitCount/uploadProgress.totalUnitCount)*100);

        } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
          [SVProgressHUD showSuccessWithStatus:@"上传成功"];
          [SVProgressHUD dismissWithDelay:1.0];
        } fail:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
          [SVProgressHUD showErrorWithStatus:@"上传失败"];
          [SVProgressHUD dismissWithDelay:1.0];
        }];

      }
    }
  }];
}

[manager POST:url parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
    [formData appendPartWithFileData:videoData name:@"upimage" fileName:videoName mimeType:@"video/mp4"];
  } progress:^(NSProgress * _Nonnull uploadProgress) {
    progress(uploadProgress);
  } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    success(task,responseObject);
  } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    fail(task,error);
  }];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # 视频压缩上传  # 视频压缩上传demo  # 视频录制压缩上传  # iOS中图片的解压缩到渲染过程详解  # iOS图片压缩、滤镜、剪切及渲染等详解  # iOS开发之image图片压缩及压缩成指定大小的两种方法  # iOS视频压缩存储至本地并上传至服务器实例代码  # IOS开发压缩后图片模糊问题解决  # 上传  # 改了  # 贴出  # 写过  # 大家多多  # 图片上传  # 视频压缩  # 沙盒  # NSLog  # URLAssetWithURL  # asset  # AVURLAsset  # stringWithFormat  # NSDocumentDirectory  # NSSearchPathForDirectoriesInDomains  # path  # NSUserDomainMask  # stringByAppendingPathComponent  # pathName  # firstObject 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Android okhttputils现在进度显示实例代码  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  如何用花生壳三步快速搭建专属网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Python高阶函数应用_函数作为参数说明【指导】  Linux系统命令中screen命令详解  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel Fortify是什么,和Jetstream有什么关系  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  bing浏览器学术搜索入口_bing学术文献检索地址  再谈Python中的字符串与字符编码(推荐)  如何在建站主机中优化服务器配置?  制作电商网页,电商供应链怎么做?  如何在搬瓦工VPS快速搭建网站?  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel如何生成API文档?(Swagger/OpenAPI教程)  如何在腾讯云服务器快速搭建个人网站?  如何在Tomcat中配置并部署网站项目?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel怎么上传文件_Laravel图片上传及存储配置  JS弹性运动实现方法分析  LinuxCD持续部署教程_自动发布与回滚机制  Laravel怎么为数据库表字段添加索引以优化查询  如何注册花生壳免费域名并搭建个人网站?  原生JS获取元素集合的子元素宽度实例  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在阿里云ECS服务器部署织梦CMS网站?  Python图片处理进阶教程_Pillow滤镜与图像增强  java ZXing生成二维码及条码实例分享  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  网站建设要注意的标准 促进网站用户好感度!  音乐网站服务器如何优化API响应速度?  如何快速查询网站的真实建站时间?  如何在阿里云部署织梦网站?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  网页设计与网站制作内容,怎样注册网站?  如何构建满足综合性能需求的优质建站方案?  黑客如何利用漏洞与弱口令入侵网站服务器?