2012-01-16 11 views
5

Jestem początkującym w procesie AVFoundation i dekodowania.Musię dekodować plik wideo h264 i odtwarzać go w iphone ... może ktoś dać mi wytyczne, aby to zrobić.dekodowanie h264 w ios

Nie chcę używać do tego celu biblioteki ffmpeg ani żadnej innej firmy. O ile wiem, przy użyciu kodowania Avfoundation jest możliwe ... Oto kod, który myślałem służy do kodowania, ale nie wiesz w ogóle ...

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; 

Jestem kompletnie naiwny na ten temat, proszę o pomoc .. .Z czego zacząć ///

dzięki

+0

Próbuję zrobić to samo, czy znajdziesz rozwiązanie? –

+0

projekt został anulowany ... nie znaleźliśmy rozwiązania ... –

Odpowiedz

0

prostsze rozwiązanie jest użycie MPMoviePlayerController. Zajmuje się wprowadzaniem pliku mov lub mv4 (z lokalnego systemu plików lub poprzez adres URL).

Kolejną opcją jest użycie klasy AVPlayer.

nadzieję, że to pomaga,

David

0

Można odwoływać i budować oficjalny przykładowy kod: AVPlayerDemo, aby zobaczyć jak to działa. Wykorzystuje framework AV Foundation, głównie API AVPlayer do odtwarzania plików wideo, a wydajność jest doskonała. Aby odtworzyć plik wideo przez AVPlayerDemo, powinieneś skopiować pliki wideo na urządzenie iOS za pomocą iTunes i wybrać bibliotekę iPoda w aplikacji AVPlayerDemo.