Ios录制的视频压缩/优化,减轻重量但保持分辨率为1920x1080

时间:2017-08-25 16:41:37

标签: ios video youtube avfoundation

在我的应用中,用户录制视频并将其上传到YouTube视频频道。我注意到,对于4秒的视频,我的应用需要两倍于官方Youtube应用上传视频的时间。我正在使用谷歌的ios rest Framework,所以我认为我的4秒视频和官方YouTube应用程序上传的4秒视频之间的重量有所不同。所以我想减少我的视频文件重量,但同时我想保持1920x1080的分辨率,所以我怎么能这样做? 我必须在每一帧上工作,以获得更低的质量? 我必须降低比特率?

我的实际approch是录制完整质量的视频并将其保存为文档目录中的文件。然后我重新拍摄视频以尝试压缩。

我试过了:

- (void)compressVideo:(NSURL*)inputURL
            outputURL:(NSURL*)outputURL2
              handler:(void (^)(AVAssetExportSession*))completion  {
    AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:urlAsset presetName:AVAssetExportPreset1920x1080];
    exportSession.outputURL = outputURL2;
    exportSession.outputFileType = AVFileTypeQuickTimeMovie;
    exportSession.shouldOptimizeForNetworkUse = YES;
    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        //completion(exportSession);

        NSData *prima = [NSData dataWithContentsOfURL:self.outputURL];
        NSLog(@"Size of new Video before compression is (bytes):%lu",(unsigned long)[prima length]);
        NSData *newDataForUpload = [NSData dataWithContentsOfURL:outputURL2];
        NSLog(@"Size of new Video after compression is (bytes):%lu",(unsigned long)[newDataForUpload length]);

        [self performSegueWithIdentifier:@"registraToSaved" sender:nil];

    }];
}

但是这个代码本身只有在我改变视频大小时才会减轻重量。 我读过这样的解决方案: How can I reduce the file size of a video created with UIImagePickerController? 但它们与AssetWriter一起工作,而在我用来记录视频的库中没有使用这个对象。有一种方法可以在LLSimpleCamera库中使用类似的概念吗?或者也许有办法修改我的compressVideo方法来实现这个结果?

修改

这是我测试上传的方式。我可以直接在我的应用程序中录制视频(使用LLSimpleCamera库),因此:通过我的应用程序录制4秒视频 - >通过我的应用和谷歌休息库上传到youtube。 为了与官方的YouTube应用程序匹配,我已经通过youtube应用程序记录了相同的主题4秒,然后,总是通过YouTube应用程序,我已经上传到我的频道。 可能这两个录制的视频具有不同的确切权重,但差异肯定是最小的。无论如何,我的应用程序上传时间很长,所以我开始认为youtube创建一个较小的文件录制视频1920x1080比我的应用程序录制了44秒

0 个答案:

没有答案