Самый быстрый способ сжать размер видео с помощью библиотеки или 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 для сжатия видео.

  • Могу ли я использовать распознавание / диктовку OS X 10.8 без графического интерфейса?
  • Как связать версию python для домашнего пива и установить ее по умолчанию
  • UTF-8 и os.listdir ()
  • Что сделала Apple в рамках Python?
  • Экспорт в формат Matplotlib PDF использует неправильный шрифт
  • Python получает нормальный формат HEX для MAC-адреса
  • Устанавливает ли OS X пакеты с установкой пакетов, которые я поддерживаю с помощью pip?
  • Как правильно установить Python на OSX для использования с OpenCV?
  •  
    Interesting Posts for Van-Lav

    Django InlineModelAdmin – установить встроенное поле из запроса на сохранение (автоматически установить поле пользователя) (save_formset vs save_model)

    Python ищет удаленный файл, используя HTTP

    Понимание kwargs в Python

    Могу ли я передавать значения словаря / ввод и клавиши для работы

    Python тестирование ncurses

    Spark dataframe преобразует несколько строк в столбец

    Получите все документы RavenDB для документов коллекции для модификации «для каждого документа»

    Загрузка файла в указанное место с помощью Selenium и python

    Как преобразовать путь в путь Mac OS X, нормальную форму почти-NFD?

    Python: файл перевода не найден для домена, используя пользовательскую папку locale

    Как разобрать неверный HTML в python, используя стандартные библиотеки

    Безопасное хранение переменных среды в GAE с помощью app.yaml

    Как выполнить бинарный поиск для диапазона одного и того же значения?

    В Django вы можете добавить метод к запросам?

    Python: как получить значения из словаря из серии pandas

    Python - лучший язык программирования в мире.