iPhone中H 264流的SPS值

有人能指出我的文档,可以帮助我获得正确的iPhone SPS和PPS值。

问题有点不清楚……

Picture Parameter Set在最新的ITU-T第7.3.2.2章标准版本中描述

Sequence Parameter Set在第7.3.2.1章中描述。

您可以将单个帧编码为文件,然后从该文件中提取sps和pps。 我有一个例子,说明如何做到这一点http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html

我相信你知道,但你只能将H264编码的video保存到iOS上的文件(.mp4,.mov)中。 目前还无法从代码访问编码video帧。 因此,如果要创建具有编码video的mp4文件,则需要使用AVAssetWriter。 Apple有一个很好的示例代码来说明如何执行此操作。

我不知道发布不同SPS / PPS的地方; 因为它们会根据您的压缩设置,图像大小以及您是以纵向还是横向模式编码video而有所不同。 您可以使用上面的示例代码(RosyWriter)生成一些带有编码预设的小.mp4文件; 然后我会使用hex编辑器手动查找SPS / PPS。 请注意,作为更大的mp4信息结构的一部分,SPS / PPS将在H264流之后的文件末尾。 您可以在线找到有关其结构的更多信息。

这是我发现对我的项目有用的一些SPS / PPS。 其中一些可能适合您,但如果没有,您可以随时使用H264编码预设生成mp4并找到必要的SPS / PPS。 我的video是使用AVVideoProfileLevelH264Baseline30编码的,这里是我需要的不同video尺寸的SPS / PPS:

SPS:

 // For AVCaptureSessionPresetLow(144x192) AVCaptureSessionLandscape on Iphone4S, Iphone5 char iphone_sps[] = {0x67, 0x4D, 0x00, 0x0C, 0xAB, 0x41, 0x82, 0x74, 0xD4, 0x04, 0x04, 0x18, 0x08}; // For AVCaptureSessionPresetLow(144x192), AVCaptureVideoOrientationPortrait on all Ipads char ipad_sps[] = {0x67, 0x4D, 0x00, 0x0C, 0xAB, 0x41, 0x23, 0x34, 0xD4, 0x04, 0x04, 0x18, 0x08}; // Iphone 4G AVCaptureSessionPresetLow (144x192), AVCaptureVideoOrientationPortrait char iphone4g_sps[] = {0x67, 0x42, 0x00, 0x1E, 0x8D, 0x68, 0x24, 0x66, 0x9A, 0x83, 0x00, 0x83, 0x01}; // For AVCaptureSessionPreset352x288 (352x288), AVCaptureVideoOrientationLandscape char iphone_sps[] = {0x67, 0x42, 0x00, 0x1E, 0xAB, 0x40, 0xB0, 0x4B, 0x4D, 0x40, 0x40, 0x41, 0x80, 0x80}; // For AVCaptureSessionPreset352x288 (352x288), AVCaptureVideoOrientationPortrait char ipad_sps[] = {0x67, 0x42, 0x00, 0x1E, 0xAB, 0x40, 0xB0, 0x4B, 0x4D, 0x40, 0x40, 0x41, 0x80, 0x80}; 

PPS:

 char pps[] = {0x28, 0xCE, 0x3C, 0x80}; char iphone4g_pps[] = {0x68, 0xCE, 0x09, 0xC8};