我的编程过程:(只是单向传输,S端视频传个C端)
1.创建一个socket连接(TCP)(这里要做什么设置吗?)
2.S端创建Graph: 添加视频设备Filter,添加Sender Filter. Graph->run;
3.C端收到视频媒体类型后,设置接收Filter的媒体类型, 连接显示Filter。 run。
发送 和 接收 Filter直接用的陆其明 老师的。但是我的传输效果就是很差,也是在局域网。我的很卡。我是不是少哪步关键步凑没做? 求救啊~~~~~~~~ 我本地采集参数设置是这么写的,不知道对不对:IAMStreamConfig *pConfig = NULL;
hr = pSourceOut->QueryInterface(IID_IAMStreamConfig, (void **)&pConfig);//pSourceOut是采集设备的输出IPin
if(FAILED(hr))
{
MessageBox("IID_IAMStreamConfig没找到!");
return;
}
AM_MEDIA_TYPE *pmt = NULL;
LONGLONG avgTimePerFrame = 500000; // 20fps这里帧数改变了没区别,AVChar里改了也没区别
hr = pConfig->GetFormat(&pmt);
if(pmt->formattype == FORMAT_VideoInfo)
{
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pmt->pbFormat;
pvi->AvgTimePerFrame = avgTimePerFrame;
pvi->bmiHeader.biWidth = Preferred_Width;
pvi->bmiHeader.biHeight = Preferred_Height;
pvi->bmiHeader.biSizeImage = Preferred_Width * Preferred_Height * pvi->bmiHeader.biBitCount / 8;
pConfig->SetFormat(pmt);
}
pConfig->Release();
1.创建一个socket连接(TCP)(这里要做什么设置吗?)
2.S端创建Graph: 添加视频设备Filter,添加Sender Filter. Graph->run;
3.C端收到视频媒体类型后,设置接收Filter的媒体类型, 连接显示Filter。 run。
发送 和 接收 Filter直接用的陆其明 老师的。但是我的传输效果就是很差,也是在局域网。我的很卡。我是不是少哪步关键步凑没做? 求救啊~~~~~~~~ 我本地采集参数设置是这么写的,不知道对不对:IAMStreamConfig *pConfig = NULL;
hr = pSourceOut->QueryInterface(IID_IAMStreamConfig, (void **)&pConfig);//pSourceOut是采集设备的输出IPin
if(FAILED(hr))
{
MessageBox("IID_IAMStreamConfig没找到!");
return;
}
AM_MEDIA_TYPE *pmt = NULL;
LONGLONG avgTimePerFrame = 500000; // 20fps这里帧数改变了没区别,AVChar里改了也没区别
hr = pConfig->GetFormat(&pmt);
if(pmt->formattype == FORMAT_VideoInfo)
{
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pmt->pbFormat;
pvi->AvgTimePerFrame = avgTimePerFrame;
pvi->bmiHeader.biWidth = Preferred_Width;
pvi->bmiHeader.biHeight = Preferred_Height;
pvi->bmiHeader.biSizeImage = Preferred_Width * Preferred_Height * pvi->bmiHeader.biBitCount / 8;
pConfig->SetFormat(pmt);
}
pConfig->Release();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货