2012-01-16 9 views
5

Sono un principiante nel processo di AVFoundation e decodifica. Devo decodificare un file video h264 e riprodurlo in iphone ... qualcuno può darmi delle linee guida per farlo.decodifica h264 in ios

Non voglio usare ffmpeg o qualsiasi libreria di terze parti per farlo. Per quanto ne so utilizzando la codifica Avfoundation è possibile ... Ecco il codice che ho pensato è usato per la codifica, ma non sono sicuro affatto ...

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; 

Sono completamente ingenuo su questo, si prega di aiuto .. .da dove cominciare ///

grazie

+0

Sto provando a fare la stessa cosa, hai trovato una soluzione? –

+0

il progetto è stato annullato ... non abbiamo trovato la soluzione ... –

risposta

0

La soluzione più semplice è quella di utilizzare MPMoviePlayerController. Prende in input un file mov o mv4 (dal file system locale o attraverso un URL).

Un'altra opzione consiste nell'utilizzare la classe di AVPlayer.

Speranza che aiuta,

David

0

È possibile fare riferimento e costruire il codice ufficiale di esempio: AVPlayerDemo per vedere come funziona. Utilizza il framework AV Foundation, principalmente le API di AVPlayer per riprodurre file video e le prestazioni sono eccellenti. Per riprodurre un file video da AVPlayerDemo è necessario copiare i file video sul dispositivo iOS da itunes e selezionare la libreria iPod nell'app AVPlayerDemo.