Самый быстрый способ сжать размер видео с помощью библиотеки или Algo

Я пытаюсь сжать высококачественное видео в меньший размер, и я могу уменьшить размер видео, которое я сжал, используя следующий код цели-c:

- (BOOL)convertMovieToMP4:(NSString ) originalMovPath andStoragePath:(NSString ) compMovPath { NSURL *tmpSourceUrl = [NSURL fileURLWithPath:originalMovPath]; compMovPath = [compMovPath stringByReplacingOccurrencesOfString:[compMovPath pathExtension] withString:@"mp4"]; NSURL *tmpDestUrl = [NSURL fileURLWithPath:compMovPath]; AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:tmpSourceUrl options:nil]; AVMutableComposition* mixComposition = [AVMutableComposition composition]; AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; AVAssetTrack *clipVideoTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:clipVideoTrack atTime:kCMTimeZero error:nil]; [compositionVideoTrack setPreferredTransform:[[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] preferredTransform]]; CGSize videoSize = [[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] naturalSize]; CATextLayer *titleLayer = [CATextLayer layer]; titleLayer.string = @"Ojatro"; titleLayer.font = (_bridge CFTypeRef Nullable)(@"Helvetica"); titleLayer.fontSize = videoSize.height / 8; titleLayer.shadowOpacity = 0.2; titleLayer.alignmentMode = kCAAlignmentCenter; titleLayer.bounds = CGRectMake(0, 0, videoSize.width, videoSize.height / 6); titleLayer.position=CGPointMake(videoSize.width/2, videoSize.height/2); CALayer *parentLayer = [CALayer layer]; CALayer *videoLayer = [CALayer layer]; parentLayer.frame = CGRectMake(0, 0, videoSize.width, videoSize.height); videoLayer.frame = CGRectMake(0, 0, videoSize.width, videoSize.height); [parentLayer addSublayer:videoLayer]; [parentLayer addSublayer:titleLayer]; AVMutableVideoComposition* videoComp = [AVMutableVideoComposition videoComposition]; videoComp.renderSize = videoSize; videoComp.frameDuration = CMTimeMake(1, 30); videoComp.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer]; AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction]; instruction.timeRange = CMTimeRangeMake(kCMTimeZero, [mixComposition duration]); AVAssetTrack *videoTrack = [[mixComposition tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; AVMutableVideoCompositionLayerInstruction* layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoTrack]; instruction.layerInstructions = [NSArray arrayWithObject:layerInstruction]; videoComp.instructions = [NSArray arrayWithObject: instruction]; AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetMediumQuality];//AVAssetExportPresetPasst _assetExport.videoComposition = videoComp; //NSString* videoName = @"mynewwatermarkedvideo.mov"; NSString *tmpDirPath = [compMovPath stringByReplacingOccurrencesOfString:[compMovPath lastPathComponent] withString:@""]; if ([Utility makeDirectoryAtPath:tmpDirPath]) { NSLog(@"Directory Created"); } //exportPath=[exportPath stringByAppendingString:videoName]; NSURL *exportUrl = tmpDestUrl; if ([[NSFileManager defaultManager] fileExistsAtPath:compMovPath]) { [[NSFileManager defaultManager] removeItemAtPath:compMovPath error:nil]; } _assetExport.outputURL = exportUrl; _assetExport.shouldOptimizeForNetworkUse = YES; _assetExport.outputFileType = AVFileTypeMPEG4; //[strRecordedFilename setString: exportPath]; [_assetExport exportAsynchronouslyWithCompletionHandler: ^(void ) { switch (_assetExport.status) { case AVAssetExportSessionStatusUnknown: NSLog(@"Export Status Unknown"); break; case AVAssetExportSessionStatusWaiting: NSLog(@"Export Waiting"); break; case AVAssetExportSessionStatusExporting: NSLog(@"Export Status"); break; case AVAssetExportSessionStatusCompleted: NSLog(@"Export Completed"); totalFilesCopied++; [self startProgressBar]; break; case AVAssetExportSessionStatusFailed: NSLog(@"Export failed"); break; case AVAssetExportSessionStatusCancelled: NSLog(@"Export canceled"); break; } } ]; return NO; } 

Но моя основная проблема заключается в том, что когда я сжимаю 500 МБ видео (т.е. средний видео), и он занимает примерно 20-30 минут. Он уменьшает размер видео до 130 МБ. Я использую Native AVFoundation Library для сжатия видео, чтобы уменьшить его размер.

Мне нужно сжать размер видео очень быстро, как приложение Apple Compressor, оно сжимает файл 500 МБ всего за 30 секунд …

https://itunes.apple.com/en/app/compressor/id424390742?mt=12

Я также использовал библиотеку FFMPEG для этого, но это тоже медленно. Я не нашел эту библиотеку более полезной.

Я также попытался найти решение, используя другие языки, такие как java, python. но не найдено никакого решения.

Если у кого-то есть решение для этой конкретной проблемы или есть некоторые библиотеки (например, Платная библиотека или Библиотека с открытым исходным кодом), которые могут выполнять сжатие с меньшим временем как минимум на 1 минуту … Пожалуйста, поделитесь со мной. Или какой-либо другой фрагмент кода, который может преодолеть проблему времени сжатия от 20 до 30 минут, по крайней мере, до 1 минуты.

Благодаря…

One Solution collect form web for “Самый быстрый способ сжать размер видео с помощью библиотеки или Algo”

Вот документ, в котором содержится некоторое RnD для сжатия видео: https://drive.google.com/file/d/0BySTUFVtfzJmM3pYeVRiWmxSLVU/view

Он также содержит пример кода для быстрого сжатия видео в объективе-C. Он использует AVAssetExportSession для сжатия видео.

  • Mac Os X: «версия libcurl link-time (7.43.0) старше версии для компиляции (7.51.0)»
  • Как открыть файл на Mac OSX 10.8.2 в python
  • Почему модуль cProfile не работает с unittest?
  • установка opencv для python на mavericks
  • Возврат результата внешнего скрипта к VBA
  • OpenCV не будет захватывать MacBook Pro iSight
  • Python получает значение пикселя экрана в OS X
  • Установка PIP и путь Python
  • Все еще не удается установить scipy из-за отсутствия компилятора fortran после установки brew install gcc на Mac OS X
  • Как редактировать PYTHONPATH на Mac?
  • Python: MySQLdb и «Библиотека не загружена: libmysqlclient.16.dylib»
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.