如何在電視端子與S端子之間選擇 擷取所需影像 |
尚未結案
|
simgen
一般會員 發表:2 回覆:3 積分:1 註冊:2004-11-09 發送簡訊給我 |
請教各位先進 小弟使用電視卡(附S端子 Compro 啟示錄 M800)擷取監視器攝影鏡頭信號(S端子),經多次實驗,均無法正確擷取訊號(僅能擷取TV訊號),請各位先進不吝賜教,謝謝。以下為本人撰寫程式片段 HWND hCapWnd;
BITMAPINFO B;
HDC hCapDc;
hCapWnd = capCreateCaptureWindow("My Capture Window",WS_CHILD|WS_VISIBLE,0,0,640,480,Form1->Handle,0);
hCapDc=GetDC(hCapWnd);
capDriverConnect(hCapWnd,0);
capPreview(hCapWnd,true);
capPreviewRate(hCapWnd,1000/100);
capOverlay(hCapWnd,true);
B.bmiHeader.biBitCount=24;
capGetVideoFormat(hCapWnd,&B,sizeof(BITMAPINFO));
SetWindowPos(hCapWnd,0,0,0,640,480,0);
|
fdia
一般會員 發表:4 回覆:12 積分:3 註冊:2002-10-09 發送簡訊給我 |
過濾器還沒設定是由那個裝置 In 起來,
所以預設由 Input0 的裝置,如果沒在控
制台 (Direct-X 的 Demo Amcap 有範例)
設好輸入方式,你系統預設就是 TV Tuner
為 Input0 ,要改成使用 S-Video ::StringFromPinType (TCHAR *pc, int nSize, long lType)
{
TCHAR *pcT;
BOOL bSuccess; switch (lType) {
case PhysConn_Video_Tuner: pcT = TEXT("Video Tuner"); break;
case PhysConn_Video_Composite: pcT = TEXT("Video SVideo"); break;
case PhysConn_Video_SVideo: pcT = TEXT("Video Composite"); break;
case PhysConn_Video_RGB: pcT = TEXT("Video RGB"); break;
case PhysConn_Video_YRYBY: pcT = TEXT("Video YRYBY"); break;
case PhysConn_Video_SerialDigital: pcT = TEXT("Video SerialDigital"); break;
case PhysConn_Video_ParallelDigital: pcT = TEXT("Video ParallelDigital");break;
case PhysConn_Video_SCSI: pcT = TEXT("Video SCSI"); break;
case PhysConn_Video_AUX: pcT = TEXT("Video AUX"); break;
case PhysConn_Video_1394: pcT = TEXT("Video 1394"); break;
case PhysConn_Video_USB: pcT = TEXT("Video USB"); break;
case PhysConn_Video_VideoDecoder: pcT = TEXT("Video Decoder"); break;
case PhysConn_Video_VideoEncoder: pcT = TEXT("Video Encoder"); break;
case PhysConn_Audio_Tuner: pcT = TEXT("Audio Tuner"); break;
case PhysConn_Audio_Line: pcT = TEXT("Audio Line"); break;
case PhysConn_Audio_Mic: pcT = TEXT("Audio Mic"); break;
case PhysConn_Audio_AESDigital: pcT = TEXT("Audio AESDigital"); break;
case PhysConn_Audio_SPDIFDigital: pcT = TEXT("Audio SPDIFDigital"); break;
case PhysConn_Audio_SCSI: pcT = TEXT("Audio SCSI"); break;
case PhysConn_Audio_AUX: pcT = TEXT("Audio AUX"); break;
case PhysConn_Audio_1394: pcT = TEXT("Audio 1394"); break;
case PhysConn_Audio_USB: pcT = TEXT("Audio USB"); break;
case PhysConn_Audio_AudioDecoder: pcT = TEXT("Audio Decoder"); break;
default:
pcT = TEXT("Unknown/不確定的AV輸入");
break;
}
參數由 PhysConn_Video_Tuner ,改成由 PhysConn_Video_SVideo 為預設就行了。 I Love Sony
------
I Love Sony |
simgen
一般會員 發表:2 回覆:3 積分:1 註冊:2004-11-09 發送簡訊給我 |
[quote]
過濾器還沒設定是由那個裝置 In 起來,
所以預設由 Input0 的裝置,如果沒在控
制台 (Direct-X 的 Demo Amcap 有範例)
設好輸入方式,你系統預設就是 TV Tuner
為 Input0 ,要改成使用 S-Video ::StringFromPinType (TCHAR *pc, int nSize, long lType)
{
TCHAR *pcT;
BOOL bSuccess; switch (lType) {
case PhysConn_Video_Tuner: pcT = TEXT("Video Tuner"); break;
case PhysConn_Video_Composite: pcT = TEXT("Video SVideo"); break;
case PhysConn_Video_SVideo: pcT = TEXT("Video Composite"); break;
case PhysConn_Video_RGB: pcT = TEXT("Video RGB"); break;
case PhysConn_Video_YRYBY: pcT = TEXT("Video YRYBY"); break;
case PhysConn_Video_SerialDigital: pcT = TEXT("Video SerialDigital"); break;
case PhysConn_Video_ParallelDigital: pcT = TEXT("Video ParallelDigital");break;
case PhysConn_Video_SCSI: pcT = TEXT("Video SCSI"); break;
case PhysConn_Video_AUX: pcT = TEXT("Video AUX"); break;
case PhysConn_Video_1394: pcT = TEXT("Video 1394"); break;
case PhysConn_Video_USB: pcT = TEXT("Video USB"); break;
case PhysConn_Video_VideoDecoder: pcT = TEXT("Video Decoder"); break;
case PhysConn_Video_VideoEncoder: pcT = TEXT("Video Encoder"); break;
case PhysConn_Audio_Tuner: pcT = TEXT("Audio Tuner"); break;
case PhysConn_Audio_Line: pcT = TEXT("Audio Line"); break;
case PhysConn_Audio_Mic: pcT = TEXT("Audio Mic"); break;
case PhysConn_Audio_AESDigital: pcT = TEXT("Audio AESDigital"); break;
case PhysConn_Audio_SPDIFDigital: pcT = TEXT("Audio SPDIFDigital"); break;
case PhysConn_Audio_SCSI: pcT = TEXT("Audio SCSI"); break;
case PhysConn_Audio_AUX: pcT = TEXT("Audio AUX"); break;
case PhysConn_Audio_1394: pcT = TEXT("Audio 1394"); break;
case PhysConn_Audio_USB: pcT = TEXT("Audio USB"); break;
case PhysConn_Audio_AudioDecoder: pcT = TEXT("Audio Decoder"); break;
default:
pcT = TEXT("Unknown/不確定的AV輸入");
break;
}
參數由 PhysConn_Video_Tuner ,改成由 PhysConn_Video_SVideo 為預設就行了。 對不起 小弟對上面的完全沒有概念 上面的寫法 好像Visual C的寫法是嗎 可否在寫完整一點 是不是要用directshow呢 那該要如何寫呢 小弟對directx完全沒有概念說
|
fdia
一般會員 發表:4 回覆:12 積分:3 註冊:2002-10-09 發送簡訊給我 |
你是用 BCB6? BCB5 ? DirectX 9.0 ?
http://delphi.ktop.com.tw/topic.php?topic_id=35109
其實在站上就已經有許多範例了,可以下載回來編譯試試就知道喔.. ^.^ #pragma hdrstop #include Unit1.h
#include DShow.h
#include windows.h #define CLASSNAME VideoWindow //---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource *.dfm
TForm1 *Form1;
IGraphBuilder *pGraph = NULL;
IMediaControl *pMediaControl = NULL;
IVideoWindow *pVidWin = NULL;
HWND g_hwnd;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)
{ // Create the filter graph manager.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **)&pGraph); //執行到這裡就不行了 請教各位高手能給小弟一些意見 改成
CoCreateInstance(CLSID_FilterGraph, IID_IGraphBuilder, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph);
^^^^^^^^^^^^^^^^^^
強制轉換的方式不對吧,需要傳入正確的 source object,
如果有中文檔名需要 wchar_t 操作。 pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin); // Build the graph.
pGraph->RenderFile(LC:\\CAPTURE.AVI, NULL); //Set the video window.
g_hwnd=Form1->Handle;
pVidWin->put_Owner((OAHWND)g_hwnd);
pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS); TRect grc;
grc=Form1->ClientRect; pVidWin->SetWindowPosition(0, 0, grc.right, grc.bottom); // Run the graph.
pMediaControl->Run(); }
//--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender)
{
pVidWin->put_Visible(OAFALSE);
pVidWin->put_Owner(NULL);
pMediaControl->Release();
pVidWin->Release();
pGraph->Release(); } I Love Sony
------
I Love Sony |
KENI_LIN
中階會員 發表:86 回覆:267 積分:90 註冊:2004-05-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |