有人可以指向我的文档,这将有助于我为iPhone获得正确的SPS和PPS值。iPhone中的H 264流的SPS值为
回答
问题是有点不清楚......
Picture Parameter Set
在7.3.2.1章节描述了在标准的最新ITU-T release在章节7.3.2.2
Sequence Parameter Set
描述。
我确定您知道,但您只能将H264编码的视频保存到iOS上的文件(.mp4,.mov)中。目前尚无法从代码中获取已编码的视频帧。所以如果你想创建一个具有编码视频的mp4文件,你需要使用AVAssetWriter。关于如何做到这一点,Apple有一个很好的example code。
我不知道任何发布不同SPS/PPS的地方;因为它们根据压缩设置,图像大小以及是否以纵向或横向模式编码视频而有所不同。您可以使用上面的示例代码(RosyWriter)来生成一些带有编码预设的小型.mp4文件;然后我会使用十六进制编辑器手动查找SPS/PPS。请注意,SPS/PPS将作为更大的mp4信息结构的一部分在您的H264流之后的文件末尾。您可以在网上找到关于其结构的更多信息。
这是我发现对我的项目有用的一些SPS/PPS。其中一些可能适用于您,但如果不是,您可以随时使用H264编码预设生成mp4,并找到必要的SPS/PPS。我的视频是使用AVVideoProfileLevelH264Baseline30编码,这里是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};
你在哪里找到这些? – 2013-02-27 06:58:52
就像我在我的回答中所描述的那样,SPS/PPS只在视频中显示,我通过avfoundation/avassetwriter类生成了mp4文件 – Aki 2013-02-27 13:03:40
您可以编码一个帧一个文件,然后从该文件中提取sps和pps。我有一个例子,说明如何做到这一点,在http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html
您是我的救星@Geraint!我一直在寻找一个关于这个问题的适当帖子,而且你的代码甚至有很好的示例代码和一个非常简洁的项目列表! – 2013-03-24 18:28:24
3年后,iOs 9仍然如此?这似乎令人难以置信。我可以通过udp套接字接收h264数据并轻松在硬件中对其进行解码,但是如果我想从相机发送h264数据,我需要先将它写入文件,然后从文件中读取数据? 那么,如何在没有所有延迟的情况下结束摄像机数据的唯一方法是使用FFMpeg将其编码为软件? – asendra 2016-05-19 09:56:57
不,从ios 8开始不再需要。您可以直接使用VideoToolbox编码器和解码器apis。 – 2016-05-19 19:09:54
- 1. H.264 over RTP - 识别SPS和PPS帧
- 2. 如何中继h.264流?
- 3. 从具有损坏的SPS的MPEG-TS流获取H.264视频尺寸
- 4. 修改MP4流中的H.264级别
- 5. 流H.264 + AAC,以在GStreamer
- 6. h.264 udp流解码
- 7. h.264字节流解析
- 8. Firefox中的H.264
- 9. 什么ISO/IEC描述H.264 NALUs,SPS,PPS等。
- 10. H.264变换用的FFmpeg(从RTP流)
- 11. 用于解码H.264 RTSP流的库
- 12. MP4 H.264中的Flash
- 13. H.264流媒体播放要求
- 14. MPMoviePlayerController H.264和多音频流
- 15. 在MPEG2传输流中封装H.264流可变帧率
- 16. AVAssetWriterInput H.264直通到QuickTime(.mov) - 传入SPS/PPS创建avcC原子?
- 17. 确定RTP流中H.264 I帧的末端
- 18. H.264实时流,NAL单元中的时间戳?
- 19. 流视频H.264格式网络中的C#
- 20. 接收和解码H.264实时流中的Android
- 21. 我如何使用Objective-C库连接到iPhone上的RTSP h.264流
- 22. 将H.264转换为H.263的Android手机
- 23. 将VP8 RTP视频流转换为H.264
- 24. 转换流MPEG-4原始数据为H.264
- 25. 访问StageFright.so直接解码来自Android的JNIlayer的H.264流
- 26. 使用Azure配置视频流以流式传输H 264?
- 27. Android H.263或H.264文件?
- 28. Qt - 使用FFmpeg库的H.264视频流
- 29. 通过从Live555到VLC的RTP流式传输H.264视频
- 30. 以低延迟在h.264中从opencv流入rtsp视频
你说的H264视频流正在编码的iPhone? – Aki 2013-02-26 20:50:29
是的。这是正确的。 – 2013-02-26 21:25:02