La forma más rápida de comprimir el tamaño del video usando la biblioteca o Algo

Muhammd Hassan:

Estoy tratando de comprimir video de alta calidad en un tamaño menor y puedo reducir el tamaño del video que he comprimido usando el siguiente código de objetivo-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;
        }

Pero mi problema principal es que cuando comprimo el archivo de video de 500 MB (es decir, video promedio) y tarda aproximadamente 20 a 30 minutos. Reduce el tamaño del video a aproximadamente 130 MB. Estoy usando la Biblioteca AVFoundation nativa para comprimir el video para reducir su tamaño.

Necesito comprimir el tamaño del video muy rápido al igual que la aplicación Apple Compressor, comprime el archivo de 500 MB en solo 30 segundos ...

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

También he usado la biblioteca FFMPEG para eso, pero eso también es lento. Ya no encontré esa biblioteca útil.

También intenté encontrar la solución usando otros lenguajes como, java, python. pero no encontró ninguna solución fue encontrada.

Si alguien tiene la solución para este problema en particular, o tiene algunas bibliotecas (es decir, biblioteca de pago o biblioteca de código abierto) que pueden hacer la compresión con menos tiempo al menos 1 minuto ... Por favor, comparta conmigo. O alguna otra pieza de código que pueda superar el problema del tiempo de compresión de 20 a 30 minutos a al menos 1 minuto.

Gracias...

Aneeq Anwar:

Aquí hay un documento, que contiene algo de RnD en compresión de video: https://drive.google.com/file/d/0BySTUFVtfzJmM3pYeVRiWmxSLVU/view

También contiene un código de muestra para la compresión rápida de videos en Objective-C. Se utiliza AVAssetExportSessionpara comprimir videos.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Java - La forma más rápida para comprobar el tamaño de los Hilos

Comprimir el tamaño de la imagen usando Java

¿Cuál es la forma más rápida de detectar que el tamaño del archivo no es cero sin conocer el descriptor del archivo?

La biblioteca FFmpegAndroid gira el video después de Comprimir

La forma más rápida de comparar el estado del directorio o hacer hash por diversión y ganancias

La forma más rápida de escribir CSV de gran tamaño con Python

La forma más rápida de comprobar si el archivo existe o no

Cómo comprimir el tamaño de la imagen usando C # Dot Net Core

La forma más rápida y compacta de obtener el número más pequeño que es divisible por números del 1 al n

La forma más rápida y compacta de obtener el número más pequeño que es divisible por números del 1 al n

comprimir el tamaño de la imagen (Laravel)

Android: ¿Cuál es la forma correcta y universal de configurar el tamaño del video para la grabación?

¿Hay alguna forma más rápida de grep del patrón o de aumentar la velocidad del bucle while?

¿Cuál es la forma más rápida de obtener el recuento del valor perdido para Big Data en python o spark?

¿Cuál es la forma más rápida de guardar los píxeles o el estado del lienzo para su uso posterior?

La forma más rápida de leer una imagen de un enorme archivo tar sin comprimir en __getitem__ del conjunto de datos personalizado de PyTorch

¿La forma más rápida de generar todas las cadenas binarias de tamaño n en una matriz booleana?

Swift iOS -¿Cómo comprimir el tamaño del archivo de video incrustado almacenado?

Carga rápida el archivo html en la vista web, cambia el tamaño de la imagen, la fuente y el tamaño del texto

¿Cómo escalar el texto del botón según el diseño de la pantalla de forma rápida?

¿Cómo escalar el texto del botón según el diseño de la pantalla de forma rápida?

Manera más rápida (más) de obtener el tamaño de la carpeta con un script por lotes

¿Cuál es la forma más rápida o elegante de calcular una diferencia establecida usando matrices Javascript?

¿Cuál es la forma más rápida de convertir html a pdf usando JS o PHP?

AWS obtiene el tamaño del depósito S3 usando la API de Java

¿Cómo ajustar el tamaño de la fuente del eje x usando R?

¿Cómo ajustar el tamaño de la fuente del eje x usando R?

El tamaño de la imagen del vecino más cercano es incorrecto usando scipy y PIL

¿Cómo puedo comprimir el tamaño y la calidad del archivo al cargar imágenes?

TOP Lista

CalienteEtiquetas

Archivo