【发布时间】:2014-09-03 20:34:48
【问题描述】:
我正在使用媒体基础创建视频会议应用程序,但在解码通过网络接收的 H264 视频帧时遇到问题。
设计
目前我的网络源在每个请求样本上排队一个令牌,除非有可用的存储样本。如果样本通过网络到达并且没有可用的令牌,则样本将存储在链表中。否则,它将与 MEMediaSample 事件一起排队。我还将解码器设置为低延迟。
我的问题
当使用我的网络源运行拓扑时,我会立即看到第一帧渲染到屏幕上。然后我会经历一段长时间的停顿,直到直播开始完美播放。几秒钟后,流似乎暂停了,但随后您注意到它只是一遍又一遍地循环通过同一帧,每隔几秒钟添加一个实时帧,然后立即消失并返回显示旧循环。
为什么会这样?我绝不是 H264 或媒体基金会方面的专家,但是,我已经尝试解决这个问题好几个星期了,但没有成功。我不知道问题可能出在哪里。请帮我!
时间戳是通过从 0 开始并为每个新样本添加持续时间来创建的。其他数据从 IMFSampleGrabberSinkCallback 中检索。
我还将我的一些 MFTrace 发布到 msdn 媒体基金会论坛 Link
我在那里提到,演示时钟似乎在跟踪上没有改变,但我不确定这是否是原因或如何解决它。
【问题讨论】:
标签: c++ video decode h.264 ms-media-foundation