討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
directshow 全螢幕播放影片時的問題
更改我的閱讀文章字型大小
作者 : pinone(拍狼)
[ 貼文 3 | 人氣 543 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/12/1 下午 03:00:45
想請問一下各位前輩
我想要利用directshow反覆播放影片時 遇到了問題

就是如果當全螢幕的時候 會只有影片的聲音 但是畫面是一騙黑
而切回視窗模式 又正常了

不知是否有哪裡出錯 可否請各位高手幫忙點出 ?

//判斷是否全螢幕
if ( fScreenMode ) //full screen
{
hWnd = CreateWindowEx( 0 ,
     szWindowClass,
szTitle,
WS_POPUP | WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
SCREEN_WIDTH,
SCREEN_HEIGHT,
NULL,
NULL,
hInstance,
NULL );
}
else //window
{
hWnd = CreateWindowEx( 0,
szWindowClass,
szTitle,
(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX) ,
CW_USEDEFAULT,
CW_USEDEFAULT,
(rc.right-rc.left),
(rc.bottom-rc.top),
NULL,
NULL ,
hInstance,
NULL );
}

作者 : pinone(拍狼)
[ 貼文 3 | 人氣 543 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/12/1 下午 03:02:28
承上文
這部分是播放影片的部分

//播放影片所叫用的函式
int InitDirectShow(char * filePath)
{
g_MovieFinish = false;
HRESULT hr;
hr = CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER,
     IID_IGraphBuilder,(void**)&g_pGraphBuilder);
    if (FAILED(hr))
return -1;

// Get MediaControl Interface
g_pGraphBuilder->QueryInterface(IID_IMediaControl, (void**)&g_pMediaControl);
g_pGraphBuilder->QueryInterface(IID_IMediaEvent, (void**)&g_pMediaEvent);
g_pGraphBuilder->QueryInterface(IID_IMediaPosition, (void**)&g_pMediaPosition);

hr = g_pGraphBuilder->QueryInterface(IID_IVideoWindow, (void**)&g_pVideoWindow);

if (FAILED(hr))
return -1;

g_pMediaEvent->SetNotifyWindow((OAHWND)ghwnd, WM_GRAPHEVENT, 0);
g_pMediaEvent->SetNotifyFlags(0);

// Prepare VMR9 filter
IBaseFilter *pVmr9 = NULL;
CoCreateInstance(CLSID_VideoMixingRenderer9, 0,
CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pVmr9);

// Add VMR9 filter to Graph
g_pGraphBuilder->AddFilter(pVmr9, L"VMR9");

// Prepare media file using SourceFilter
IBaseFilter *pSource;
g_pGraphBuilder->AddSourceFilter((LPCWSTR)filePath, L"Source", &pSource);

// Create GraphBuilder, CaptureGraphBuilder2
CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC,
IID_ICaptureGraphBuilder2, (LPVOID *)&pCaptureGraphBuilder2);

// Set FilterGraph for CaptureGraphBuilder2
pCaptureGraphBuilder2->SetFiltergraph(g_pGraphBuilder);

// Build Graph
pCaptureGraphBuilder2->RenderStream(0, 0, pSource, 0, pVmr9);

hr = g_pVideoWindow->put_Owner((OAHWND)ghwnd);
if (FAILED(hr))
return -1;

if(fScreenMode)
{
g_pVideoWindow->put_WindowStyle( WS_CHILD | WS_CLIPSIBLINGS );
RECT rect;
GetClientRect(ghwnd, &rect);
g_pVideoWindow->SetWindowPosition(0, 0, 640, 480);

}
else
{
g_pVideoWindow->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
RECT rect;
GetClientRect(ghwnd, &rect);
g_pVideoWindow->SetWindowPosition(rect.left, rect.top, rect.right, rect.bottom);//add 2
g_pVideoWindow->put_FullScreenMode(OAFALSE);
}

g_pVideoWindow->put_MessageDrain((OAHWND)ghwnd);
return 0;
}
作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/4/28 上午 10:28:47
我碰過的是bug
顯卡driver要更新.
 板主 : 白老鼠(Gary)
 > DirectX - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - DirectX - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
DirectX
1 aming 4010 
2 pernghy 1780 
3 白老鼠(Gary) 1120 
4 Akira 1020 
5 冷眼 980 
6 PLAYER 690 
7 阿西德倫 480 
8 andre 450 
9 小弦 430 
10 藍斯洛 410 
DirectX
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875