2012-01-16 16 views
5

Soy un novato en el proceso de decodificación y AVFoundation. Necesito decodificar un archivo de video h264 y reproducirlo en iphone ... ¿alguien me puede dar una guía para hacerlo?decodificación h264 en ios

No quiero usar ffmpeg ni ninguna biblioteca de terceros para hacer eso. Por lo que yo sé usando AVFoundation codificación es posible ... Aquí está el código que me pareció que se utiliza para la codificación, pero no estoy seguro del todo ...

float bitsPerPixel; 
CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(currentFormatDescription); 
int numPixels = dimensions.width * dimensions.height; 
int bitsPerSecond; 

// Assume that lower-than-SD resolutions are intended for streaming, and use a lower bitrate 
if (numPixels < (640 * 480)) 
    bitsPerPixel = 4.05; // This bitrate matches the quality produced by AVCaptureSessionPresetMedium or Low. 
else 
    bitsPerPixel = 11.4; // This bitrate matches the quality produced by AVCaptureSessionPresetHigh. 

bitsPerSecond = numPixels * bitsPerPixel; 

NSDictionary *videoCompressionSettings = [NSDictionary dictionaryWithObjectsAndKeys: 
              AVVideoCodecH264, AVVideoCodecKey, 
              [NSNumber numberWithInteger:dimensions.width], AVVideoWidthKey, 
              [NSNumber numberWithInteger:dimensions.height], AVVideoHeightKey, 
              [NSDictionary dictionaryWithObjectsAndKeys: 
              [NSNumber numberWithInteger:bitsPerSecond], AVVideoAverageBitRateKey, 
              [NSNumber numberWithInteger:30], AVVideoMaxKeyFrameIntervalKey, 
              nil], AVVideoCompressionPropertiesKey, 
              nil]; 
if ([assetWriter canApplyOutputSettings:videoCompressionSettings forMediaType:AVMediaTypeVideo]) { 
    assetWriterVideoIn = [[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:videoCompressionSettings]; 
    assetWriterVideoIn.expectsMediaDataInRealTime = YES; 
    assetWriterVideoIn.transform = [self transformFromCurrentVideoOrientationToOrientation:self.referenceOrientation]; 
    if ([assetWriter canAddInput:assetWriterVideoIn]) 
     [assetWriter addInput:assetWriterVideoIn]; 
    else { 
     NSLog(@"Couldn't add asset writer video input."); 
     return NO; 
    } 
} 
else { 
    NSLog(@"Couldn't apply video output settings."); 
    return NO; 
} 

return YES; 

estoy completamente ingenuos sobre esto, por favor ayuda .. .de dónde empezar ///

gracias

+0

Estoy tratando de hacer lo mismo ¿ha encontrado una solución? –

+0

el proyecto fue cancelado ... no encontramos la solución ... –

Respuesta

0

La solución más simple es utilizar MPMoviePlayerController. Se necesita ingresar un archivo mov o mv4 (del sistema de archivos local o a través de una URL).

La otra opción es utilizar la clase AVPlayer.

creo que sirve,

David

0

Se puede hacer referencia y construir el código oficial de la muestra: AVPlayerDemo para ver cómo funciona. Utiliza el framework AV Foundation, principalmente las API de AVPlayer para reproducir archivos de video y el rendimiento es excelente. Para reproducir un archivo de video con AVPlayerDemo, debe copiar los archivos de video en su dispositivo iOS por iTunes y seleccionar la biblioteca del iPod en la aplicación AVPlayerDemo.