用DSPack的ASFWriter 作網路直播,問題粉大! |
尚未結案
|
ufft47
一般會員 發表:3 回覆:3 積分:1 註冊:2004-02-14 發送簡訊給我 |
先建一個新專案,
依序加入 ASFWriter1, Filter1, FilterGraph1, VideoWindow1, 4個元件 以下在ObjectInspector視窗設定屬性, FilterGraph1 Mode = gmCapture VideoWindow1 FilterGraph = FilterGraph1 Filter1 BaseFilter = DirectShow Filters->"WM ASF Writer" FilterGraph = FilterGraph1 ASFWriter1 FileName = c:\temp.asf FilterGraph = FilterGraph1 Port = 3333 Profile = wmp_V80_255VideoPDA <=這是內定值 //===================================================================
//以下是程式碼 //=================================================================== __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { vInitAsfWriter(); } IBaseFilter *SourceFilter = NULL;
IBaseFilter *VideoFilter = NULL; TSysDevEnum *SysDev = NULL; void TForm1::vInitAsfWriter()
{ SysDev = new TSysDevEnum(CLSID_VideoInputDeviceCategory); ICaptureGraphBuilder2 *GraphBuilder = NULL; IBaseFilter *ASFWrite = NULL; Filter1->BaseFilter->Moniker = SysDev->GetMoniker(0);
FilterGraph1->Active = true;
CheckDSError(FilterGraph1->QueryInterface(IID_ICaptureGraphBuilder2, &GraphBuilder)); CheckDSError(ASFWriter1->QueryInterface(IID_IBaseFilter, &ASFWrite)); CheckDSError(VideoWindow1->QueryInterface(IID_IBaseFilter, &VideoFilter)); CheckDSError(Filter1->QueryInterface(IID_IBaseFilter, &SourceFilter)); GraphBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, NULL, SourceFilter, NULL, VideoFilter); GraphBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, NULL, SourceFilter, NULL, ASFWrite); FilterGraph1->Play(); if(GraphBuilder) GraphBuilder->Release();
if(VideoFilter) VideoFilter->Release(); if(SourceFilter) SourceFilter->Release(); } //=================================================================== //程式結束 //=================================================================== 這時 FilterGraph1->Play() 一執行,就會產生一個"...無法指出的的錯誤...",然後程式結束。
將ASFWriter1 改成以下 Profile = wmp_V80_288VideoOnly <=這是新值 這次可以正常執行,可是.........問題粉大!!!!!!!!!!!!! 1) 都沒捕捉到聲音,我用Media Player播放temp.asf,然後看影片資訊,視訊轉碼器是Window Media Video V8,但是音訊轉碼器是空的, 2) 為啥ASFWriter1的Profile 只能指定為wmp_V80_288VideoOnly,一使用其他的值,馬上 "...無法指出的的錯誤..." 網路上說可以改Profile,可是怎改啊!!!!!!!!!! 3) ASFWriter1的c:\temp.asf, 能讓他不產生嗎?我是要網路監控,要是讓他一整天儲存下來還得了,外加影響程式效能... 我有在網上找到說要刪除文件的sink就行,可是... sink在哪啊!!!。救人喔。 這些問題已經卡了我好久了,網路上找了好久的資料,程式碼改來改去,還是不行,
只好請各位大蝦幫忙了。 拜託拜託 編輯記錄
taishyang 重新編輯於 2007-04-24 10:23:02, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |