декодирование h264 в ios - PullRequest
       33

декодирование h264 в ios

5 голосов
/ 16 января 2012

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

Я не хочу использовать 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;

Я абсолютно наивен в этом, пожалуйста, помогите... с чего начать ///

спасибо

Ответы [ 2 ]

0 голосов
/ 30 июля 2012

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

0 голосов
/ 03 марта 2012

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

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

Надеюсь, это поможет,

David

...