線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2071
推到 Plurk!
推到 Facebook!

用DSPack的ASFWriter 作網路直播,問題粉大!

尚未結案
ufft47
一般會員


發表:3
回覆:3
積分:1
註冊:2004-02-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-23 22:58:54 IP:59.113.xxx.xxx 訂閱
先建一個新專案,
依序加入 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, 註解 無‧
系統時間:2024-05-03 3:41:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!