2012-07-02 86 views
0

我有一個客戶端應用程序正在使用VMR9播放通過網絡傳輸的在線電影。每當流由於問題而停止播放時,播放器將凍結顯示上一次接收到的幀。 有什麼辦法可以在客戶端檢測到這種狀態嗎?我檢查通過VMR9發送到我的ContainerForm的窗口消息:在VideoMixingRenderer中檢測損壞的流

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

預計沒有窗口消息會指示意外的行爲。相反,您應該使用IMediaEvent::GetEvent來檢查過濾器圖形事件。此外,爲了解決特定問題,您可能正在檢查媒體樣本(例如時間戳)或驗證數據(如H.264比特流)。

+0

感謝羅馬,雖然由於某種未知的原因,我無法通過rtsp協議與流媒體服務器通信,但至少我知道沒有directshow方式來找到它。 – Bakhshi

+0

...您提到的事件沒有提供任何此類情況的證據 – Bakhshi