大家好,我是小白李胖胖,纯新手一名,哪位大神做过iOS录制视频并且压缩上传?帮帮忙,网上虽说是有录制视频了,目前我的项目也可以录制视频并且保存在手机相册了,但是怎么压缩上传啊?我们的拍照片倒是可以上传了,不过不用压缩,一般都2MB左右,可是视频不同,我们做的是10-15面的视频,要是不压缩上传太影响用户体验了,所以求哪位前辈大神帮帮忙,大概的思路和使用的方法名字倒是都知道了,但是具体不会实现操作,最好能给个demo或是详细点的讲解或有相关的视频学习资料也可以,然后我还得做完了视频压缩上传后,接着还得做用户自己录制出来的视频转成gif图片  并上传,所以这么着也得先把录制视频  压缩  上传先弄明白了才可以做gif!!!大哥大姐前辈大神好人一生平安啊!!!

解决方案 »

  1.   

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
       // dismissViewController,判断是录制视频省略
       NSURL *sourceURL = [[info objectForKey:UIImagePickerControllerMediaURL];
       NSURL *newVideoUrl = ........; //一般.mp4
       [self convertVideoQuailtyWithInputURL:sourceURL outputURL:newVideoUrl completeHandler:^(AVAssetExportSession  *) {
           //...........
       }];
    }- (void) convertVideoQuailtyWithInputURL:(NSURL*)inputURL
                                   outputURL:(NSURL*)outputURL
                             completeHandler:(void (^)(AVAssetExportSession*))handler
    {
        AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL opti*****:nil];
        AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset     presetName:AVAssetExportPresetMediumQuality];
        exportSession.outputURL = outputURL;
        exportSession.outputFileType = AVFileTypeQuickTimeMovie;
        [exportSessionexportAsynchronouslyWithCompletionHandler:^(void) {
               switch (exportSession.status)
                   {
                         case AVAssetExportSessionStatusUnknown:                    
                              break;
                         case AVAssetExportSessionStatusWaiting:           
                              break;
                         case AVAssetExportSessionStatusExporting:        
                              break;
                         case AVAssetExportSessionStatusCompleted: {
                              handler(exportSession)
                              break;
                           }         
                         case AVAssetExportSessionStatusFailed:
                              break;
            }
         }];
    }
    差不多这样吧,LZ 自己完善吧
      

  2.   

    @人中赤兔马中吕布这段代码我已经写进去了,您看看这个段代码是压缩使的吗?我现在已经可以录制  保存  但是不能压缩  上传已经有点思路差不多应该可以完成,但是现在主要就是压缩- (void) convertVideoQuailtyWithInputURL:(NSURL*)inputURL
                                   outputURL:(NSURL*)outputURL
                             completeHandler:(void (^)(AVAssetExportSession*))handler
    {
        AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL opti*****:nil];
        AVAssetExportSession *exportSession= [[AVAssetExportSession alloc] initWithAsset:asset     presetName:AVAssetExportPresetMediumQuality];
        exportSession.outputURL = outputURL;
        exportSession.outputFileType = AVFileTypeQuickTimeMovie;
        [exportSessionexportAsynchronouslyWithCompletionHandler:^(void) {
               switch (exportSession.status)
                   {
                         case AVAssetExportSessionStatusUnknown:                    
                              break;
                         case AVAssetExportSessionStatusWaiting:           
                              break;
                         case AVAssetExportSessionStatusExporting:        
                              break;
                         case AVAssetExportSessionStatusCompleted: {
                              handler(exportSession)
                              break;
                           }         
                         case AVAssetExportSessionStatusFailed:
                              break;
            }
         }];
    }
      

  3.   

    NSURL *newVideoUrl = ........; //一般.mp4
    你新建一个新的mp4的文件路径,调用转换函数,然后上传的时候用这个newVideoUrl 就可以了
    你可以用outputURL 和 newVideoUrl  都输出下文件大小对比下就知道了
      

  4.   


    这谁知道你们android 长的啥样?
      

  5.   

    三方可以采用 vitamio,秒拍开源的sdk
      

  6.   

    vitamio这个已经试了  不能用  原因是bug多  而且真机测试老崩;   秒拍开源的sdk这个我试试  不懂的再问您吧  谢谢您啊  太麻烦您了  一直跟进  一直帮我解决问题  谢谢
      

  7.   

    秒拍开源的就是vitamio,可能由于一些商业原因吧,vitamio确实比较麻烦,试着去github上找找,应该会有收获。
      

  8.   

    还有vitamio的官网上有iOS版本的qq群,一定要加一下,好多东西要咨询一下里面的工作人员,才能很好的使用。
      

  9.   

    录制好视频保存成mp4格式后,视频编码应该是H264了,然后怎么在压缩上传呢?
      

  10.   


    H264已经是编码压缩过后的数据。再用zip什么的压缩意义不大。
      

  11.   

    我用了convertVideoQuailtyWithInputURL 这个方法。
    但是,总是失败。
    具体过程时这样的:
    我在app的Document下,放了一个test.wmv,然后希望在压缩生产一个.mp4 或者.mov的文件。
    我构建了NSURL类型的input output的地址。
    然后发现问题,switch (exportSession.status) 这个状态永远都是失败的。
    文件也没有出现。请问是为什么?
      

  12.   

    我用了convertVideoQuailtyWithInputURL 这个方法。
    但是,总是失败。
    具体过程时这样的:
    我在app的Document下,放了一个test.wmv,然后希望在压缩生产一个.mp4 或者.mov的文件。
    我构建了NSURL类型的input output的地址。
    然后发现问题,switch (exportSession.status) 这个状态永远都是失败的。
    文件也没有出现。请问是为什么?
      

  13.   

    设置url的时候需要使用fileurl