繁体   English   中英

Media Foundation H264解码器无法正常工作

[英]media foundation H264 decoder not working properly

我正在创建一个使用Media Foundation的视频会议应用程序,但在解码通过网络接收到的H264视频帧时遇到问题。

该设计

当前,除非有可用的存储样本,否则我的网络源会在每个请求样本上将令牌排队。 如果样本通过网络到达并且没有令牌可用,则样本将存储在链接列表中。 否则,它将与MEMediaSample事件一起排队。 我也将解码器设置为低延迟。

我的问题

使用网络源运行拓扑时,我立即看到渲染到屏幕的第一帧。 然后,我会经历一段长时间的停顿,直到直播开始完美播放为止。 几秒钟后,流似乎暂停了,但随后您注意到它只是一次又一次地循环遍历同一帧,每隔几秒钟添加一个实时帧,然后立即消失并返回到显示旧循环。

为什么会这样呢? 对于这件事,我绝不是H264或媒体基金会的专家,但是,我一直试图解决该问题已有数周之久,但没有成功。 我不知道问题可能在哪里。 请帮我!

通过从0开始并为每个新样本添加持续时间来创建时间戳。 其他数据从IMFSampleGrabberSinkCallback检索。

我还张贴了一些我MFTrace的到MSDN媒体基金会论坛链接

我在那儿提到演示时钟似乎并没有改变,但是我不确定这是原因还是解决方法。

编辑 :您是否可以共享视频和完整的mftrace日志以解决此问题? 我不清楚发生了什么实际情况:一段时间后您是否看到了实时视频?

当前日志没有足够的信息来跟踪样本处理。 根据您的描述,看起来只有关键帧被渲染。 另外,渲染关键帧的持续时间很奇怪:

    Sample @00A74970, Time 6733ms, Duration 499ms. <- Duration is not 33ms.

我想看看那个样品发生了什么。

无论如何,如果您使用标准的编码器和解码器,则问题应该出在您的媒体源及其缓冲帧的方式上。 错误的循环缓冲区实现? 在开始将它们提供给解码器之前,您可能需要尝试缓存一两个样本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM