【发布时间】:2016-12-25 00:25:52
【问题描述】:
我正在使用媒体基础通过自定义播放器播放视频(包含 x264 编码视频流的 mp4)。
当我将 YUV 信息转换为 RGB 时,我需要考虑编码时使用的颜色矩阵和范围。
我的一些视频有这个信息,我可以使用 MediaInfo.exe 或 FFMPEG 来查看它是否存在。
但是,对于此类视频,如果我查看相关的媒体基金会属性 (Extended Color Information),文件中不存在这些属性。
所以,我需要找到一种访问信息的方法。
Media Foundation 确实提供了对视频流的 MF_MT_MPEG4_SAMPLE_DESCRIPTION 和 MF_MT_MPEG_SEQUENCE_HEADER 的访问权限,但我找不到这些内容的描述。
我注意到 MF_MT_MPEG_SEQUENCE_HEADER 对于包含信息的视频来说要长得多,这 (MPEG Headers Quick Reference) 似乎表明标题可能包含我需要的信息。
我正在寻找颜色范围(有限/完整)、原色、传输特性和矩阵系数(BT.709 等)。
如果能帮助我从 Media Foundation 视频流中查找此信息,我将不胜感激。
谢谢
朱尔斯
更新 - 序列头
序列标头似乎是 MPEG4 示例描述的子集,但我找不到任何指示数据位实际包含/不具体包含的内容。
序列头似乎包含结构化为 MP4 字节流的数据,如 H264 Standards Document 中所述,并包括 VUI(视频可用性信息 - 文档附件 E),其中可能包含我感兴趣的颜色信息。
鉴于它是一个字节流,我需要知道它从哪里开始以及是否有一些现有的代码可以用来对其进行解码。
在 libavcodec/h264_ps.c 中的 FFMPEG 中有一个名为 ff_h264_decode_seq_parameter_set 的函数,它最终会调用 decode_vui_parameters。 seq_parameter_set 似乎有可能映射到 MF_MT_MPEG_SEQUENCE_HEADER 并且可以使用该代码来解码数据。
如果有人对解码这些数据有任何直接经验,那将非常有用。
再次感谢
更新 - 相关帖子
我发现这个How to decode sprop-parameter-sets in a H264 SDP? 和Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream 很有帮助。
序列头似乎是序列或图片参数集 (pps),而我想要的参数是 VUI 扩展子集。
另外,这篇文章H.264 stream structure 提供了流数据结构的高级信息,并且 MF_MT_MPEG_SEQUENCE_HEADER 似乎以 NAL 0x00 0x00 0x01 开头,所以我猜它是一个包含 PPS 的 NAL。
【问题讨论】:
标签: video ffmpeg mp4 h.264 ms-media-foundation