我有一个客户端应用程序,它使用VMR9播放通过网络流式传输的在线电影。每当流由于问题而停止时,播放器冻结显示最后接收的帧。 有没有办法在客户端检测到这种状态?我检查了VMR9发送到我的ContainerForm的Windows消息。:
protected override void WndProc(ref Message m)
{
if (m.Msg == PlayerMessageValue)
{
Program.log.AppendLine(string.Format("msg {0} {1} {2}", m.LParam, m.WParam, Environment.TickCount));
}
base.WndProc(ref m);
}
播放器正在递增时间,播放器按预期间隔发送消息,但实际上没有收到任何消息。 这是日志:
msg 0 0 1316437
msg 0 0 1316515
msg 0 0 1317515
msg 0 0 1318515
msg 0 0 1319515
msg 0 0 1320515
msg 0 0 1321531
msg 0 0 1322531
msg 0 0 1323531
msg 0 0 1324531
msg 0 0 1325531
msg 0 0 1326546
msg 0 0 1327546
msg 0 0 1328546
msg 0 0 1329546
一段时间过去了,从现在起流停止了,但VMR的行为没有任何改变:
msg 0 0 1351593
msg 0 0 1352593
msg 0 0 1353593
msg 0 0 1354593
msg 0 0 1355593
msg 0 0 1356609
msg 0 0 1357609
msg 0 0 1358609
msg 0 0 1359609
msg 0 0 1360609
msg 0 0 1361625
msg 0 0 1362625
msg 0 0 1363625
msg 0 0 1364625
msg 0 0 1365625
msg 0 0 1366640
msg 0 0 1367640
msg 0 0 1368640
msg 0 0 1369640
msg 0 0 1370640
...闭合1371796
图表中是否还有其他部分需要检查图表活动? (虽然图表正在运行)
答案 0 :(得分:0)
预计没有窗口消息表示意外行为。相反,您应该使用IMediaEvent::GetEvent
检查过滤器图形事件。此外,为了解决特定问题,您可能正在检查媒体样本(例如时间戳)或验证数据(例如H.264比特流)。