【问题标题】:decoding h264 in ios在 ios 中解码 h264
【发布时间】:2012-02-11 09:33:56
【问题描述】:

我是 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;

我对此完全幼稚,请帮助...从哪里开始///

谢谢

【问题讨论】:

  • 我正在尝试做同样的事情你找到解决方案了吗?
  • 项目被取消...我们没有找到解决方案...

标签: ios avfoundation h.264 decoding


【解决方案1】:

更简单的解决方案是使用 MPMoviePlayerController。它接受 mov 或 mv4 文件的输入(来自本地文件系统或通过 URL)。

另一种选择是使用 AVPlayer 类。

希望对你有帮助,

大卫

【讨论】:

    【解决方案2】:

    您可以参考并构建官方示例代码:AVPlayerDemo,看看它是如何工作的。它使用 AV Foundation 框架,主要是 AVPlayer API 来播放视频文件,性能非常好。 要通过 AVPlayerDemo 播放视频文件,您应该通过 iTunes 将视频文件复制到您的 iOS 设备,然后在 AVPlayerDemo App 上选择 iPod 库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 2015-05-26
      • 2016-01-25
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多