我正在尝试使用MediaStreamSource在Silverlight3中渲染来自mkv h264文件的帧。解析mkv文件很好,但是我正在为SL中的CodecPrivateData的期望值而努力,它必须是一个字符串,而来自mkv的PrivateData信息是一个二进制元素。此外,我不确定帧应该以什么形式提供给SL (例如,它们存储在mkv / mp4中的方式,或者转码为NALU),有人知道这方面的信息吗?
发布于 2011-05-01 21:01:38
在经历了我自己的类似问题和很多令人费解的事情之后,我能够回答这个问题。
我有blogged a little about the experience here,希望能写更多的博客。
发布于 2009-05-29 14:11:54
CodecPrivateData是'avcC‘原子的内容,它是MP4文件中'stsd’原子的子元素。您必须将二进制数据转换为字符串。它看起来像这样:"014D401FFFE10017674D401F925402802DD0800000030080000018478C195001000468EE32C8“
您还必须将mkv/mp4长度替换为NALU。我写了一些关于这方面的东西(为了让H.264文件可以流畅地工作)。
致以敬意,
请参阅:Smooth Streaming H264
发布于 2012-07-24 18:13:21
根据文档,编解码器私有数据应设置为00000001 + sps + 00000001 + pps。然而,文档是错误的,CodecPrivateData的价值似乎被完全忽略了。相反,您需要将SPS和PPS (当然带有附件b标头)作为GetSampleAsync的第一个和第二个结果传递。
对于常规媒体样本,正常的4字节附件b标头可以正常工作。
https://stackoverflow.com/questions/736235
复制相似问题