我正在使用Media Foundation播放需要實時編輯的視頻,因此我需要知道幀何時可以呈現,但回調不提供此類消息。MediaFoundation - 框架已準備就緒?
我唯一的想法是檢查幀速率,然後設置一個計時器,只是害羞的,並使用GetPosition來檢查我在哪裏我最後一次計時器被稱爲,但必須有一個更好的辦法比這個。
謝謝!
馬特
我正在使用Media Foundation播放需要實時編輯的視頻,因此我需要知道幀何時可以呈現,但回調不提供此類消息。MediaFoundation - 框架已準備就緒?
我唯一的想法是檢查幀速率,然後設置一個計時器,只是害羞的,並使用GetPosition來檢查我在哪裏我最後一次計時器被稱爲,但必須有一個更好的辦法比這個。
謝謝!
馬特
爲什麼你不能注入自己的IMFStreamSink例如在topologoy,做編輯在實施IMFStreamSink::ProcessSample
和傳球的編輯以任何輸出節點使用的是目前?
此外,如果您使用EVR,則可以創建自定義演示者 - 請參閱MSDN上的this文章。
我找到了一個簡單的解決方案。設置會話的播放速度,然後從會話中創建演示時鐘。設置一個計時器,並檢查演示時鐘。當時間流逝等於一個滴答的播放速度時,正在呈現新的幀。
花了一天的時間,我可以放心地說,我完全困惑。我對MediaFoundation完全陌生,爲了讓它工作,我在下面的MSDN網站上使用了教程。我不確定如何將IMFStreamSink集成到程序中。這似乎是它自己的做事方式,所以我需要取消這個並重新開始。 https://msdn.microsoft.com/en-us/library/windows/desktop/ff728866(v=vs.85).aspx – CodeConfusion