2012-01-16 3 views
5

Я новичок в AVFoundation и процессе декодирования. Мне нужно декодировать видеофайл h264 и воспроизводить его в iphone ... может ли кто-нибудь дать мне руководство для этого.декодирование h264 в ios

Я не хочу использовать ffmpeg или любую стороннюю библиотеку для этого. Насколько я знаю, используя кодирование Avfoundation возможно ... вот код, который я думал, что используется для кодирования, но не уверен, что вообще ...

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; 

Я совершенно наивный об этом, пожалуйста, помогите .. .from где начать ///

благодаря

+0

Я пытаюсь сделать то же самое, если вы найдете решение? –

+0

проект был отменен ... мы не нашли решение ... –

ответ

0

Чем проще решение заключается в использовании MPMoviePlayerController. Он принимает входной файл mov или mv4 (из локальной файловой системы или через URL-адрес).

Другой вариант - использовать класс AVPlayer.

Надежда это помогает,

David

0

Вы можете обратиться и построить официальный образец кода: AVPlayerDemo, чтобы увидеть, как это работает. Он использует структуру AV Foundation, в основном AVPlayer API для воспроизведения видеофайлов, и производительность отличная. Чтобы воспроизвести видеофайл AVPlayerDemo, вы должны скопировать видеофайлы на устройство iOS с помощью itunes и выбрать библиотеку iPod в приложении AVPlayerDemo.

Смежные вопросы