Re: [問題] 有關Directshow讀取、播放影片

看板C_and_CPP (C/C++)作者 (4545)時間16年前 (2009/02/04 14:53), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
我已經利用 IMediaEvent 介面中的 WaitForCompletion( msTimeout, pEvCode) 可以監視前一段影片撥完後 在執行接下來程式 就可以連撥兩段影片了 不過想請問大家 再使用WaitForCompletion時 是否有辦法或指令強制終止監視呢 因為一般時候希望一二段接連著撥,但在特定時候可以第二段把第一段截掉直接播放 謝謝 ※ 引述《yenbowl (4545)》之銘言: : 想用directshow讀取一段影片 在panel上播放 : 程式環境是Visual C++ 2005 的Windows forms : 參考了一些範例 目前可以成功播放 : CoInitialize(NULL); : IGraphBuilder *pGraph = NULL; : IMediaControl *pMediaControl = NULL; : IVideoWindow *pVidWin = NULL; : IMediaEvent *pEvent; : HWND g_hwnd; : // Create the filter graph manager. : CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, : IID_IGraphBuilder, (void **)&pGraph); : pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); : pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin); : // Build the graph. : pGraph->RenderFile(L"summer_rain.avi", NULL); : //Set the video window. : pVidWin->put_Owner(OAHWND(this->panel3->Handle.ToInt64())); : pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS); : RECT grc; : GetClientRect(g_hwnd, &grc); : pVidWin->SetWindowPosition(0, 0, 675, 540); : // Run the graph. : pMediaControl->Run() : 不過目前碰到兩個問題,就是我希望可以連續播放兩段影片 : 當我第一段播放完時,接著播第二段 : 但是當我讀取第二段並且Run時,畫面會把第一段的影片截掉 並直接播第二段 : 想請問有什麼方法或指令可以判斷等到第一段播放完時,再接著播二段影片嗎? : 另外是否有可以重複播放同一段的方法或指令? : 想麻煩請各位幫我解答,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.18.83
文章代碼(AID): #19YJji75 (C_and_CPP)
文章代碼(AID): #19YJji75 (C_and_CPP)