关于H.264,jrtp,directShow视频采集等的整合开发研究
2010-05-06 14:34
363 查看
2003-2005年前后开发directShow的程序,只是知道照猫画虎,根据一个例子写另外一个filter,当时写了好多独立的com组件,H.261,H.263,H.264,Mpeg4等视频编解码的Filter,音频方面,G.711,G.729,G.723等Filter。当时把jrtplib对应的也写成了jrtpSendVideo,jrtpRecvVideo,jrtpSendAudio,jrtpRecvAudio等Filter。在进行H.323系统开发的时候,也曾使用Graphedit将其链接起来,进行过处理。并成功开发了H.323项目。后来独立写过处理这些Filter的Demo程序,也就是我在以前提到过的MediaSever程序。
后来开发sip程序,发现这种使用方式,虽然每个模块完全独立,但是在使用过程中,因为每一个组件都可以独立注册,反注册,一旦有人反注册了自己使用的组件,整个应用程序便不能正常工作了。于是就想着把这部分重新整理下。后来因为忙,当然也可以说是懒,就放下了。最近,想起来要整理下这些东西了。
刚刚使用H.264,jrtp做了一个demo程序,实现了对视频的采集和编解码以及rtp收发。这个将所有的组件放在一个模块里面实现。保证不会因别人反注册某个组件影响我们的进程工作。本模块外部调用方法如下:
void CMediaProDemoDlg::OnButtonStart()
{
// TODO: Add your control notification handler code here
CWnd* pWnd = (CWnd*)GetDlgItem(IDC_BUTTON_START);
if(!m_bOpenCamera)
{
pWnd->SetWindowText(_T("停止收发视频"));
m_bOpenCamera = TRUE;
BOOL bOpenRes = CCameraMgr::GetInstance()->OpenCameraMgr();
CWnd* pWndLocalVideo = (CWnd*)GetDlgItem(IDC_STATIC_LOCAL_VIDEO);
CWnd* pWndRemoteVideo = (CWnd*)GetDlgItem(IDC_STATIC_REMOTE_VIDEO);
m_pIndexChannel->SetLocaLVideoHandle(pWndLocalVideo->GetSafeHwnd());
m_pIndexChannel->SetRemoteVideoHandle(pWndRemoteVideo->GetSafeHwnd());
UpdateData(true);
m_pIndexChannel->SetRtpParam(m_nLocalRtpPort,m_nDestRtpPort,m_strDestIp);
m_pIndexChannel->StartThread();
}
else
{
pWnd->SetWindowText(_T("开始收发视频"));
m_bOpenCamera = false;
bool bOpenRes = CCameraMgr::GetInstance()->CloseCameraMgr();
m_pIndexChannel->StopThread();
}
}
后来开发sip程序,发现这种使用方式,虽然每个模块完全独立,但是在使用过程中,因为每一个组件都可以独立注册,反注册,一旦有人反注册了自己使用的组件,整个应用程序便不能正常工作了。于是就想着把这部分重新整理下。后来因为忙,当然也可以说是懒,就放下了。最近,想起来要整理下这些东西了。
刚刚使用H.264,jrtp做了一个demo程序,实现了对视频的采集和编解码以及rtp收发。这个将所有的组件放在一个模块里面实现。保证不会因别人反注册某个组件影响我们的进程工作。本模块外部调用方法如下:
void CMediaProDemoDlg::OnButtonStart()
{
// TODO: Add your control notification handler code here
CWnd* pWnd = (CWnd*)GetDlgItem(IDC_BUTTON_START);
if(!m_bOpenCamera)
{
pWnd->SetWindowText(_T("停止收发视频"));
m_bOpenCamera = TRUE;
BOOL bOpenRes = CCameraMgr::GetInstance()->OpenCameraMgr();
CWnd* pWndLocalVideo = (CWnd*)GetDlgItem(IDC_STATIC_LOCAL_VIDEO);
CWnd* pWndRemoteVideo = (CWnd*)GetDlgItem(IDC_STATIC_REMOTE_VIDEO);
m_pIndexChannel->SetLocaLVideoHandle(pWndLocalVideo->GetSafeHwnd());
m_pIndexChannel->SetRemoteVideoHandle(pWndRemoteVideo->GetSafeHwnd());
UpdateData(true);
m_pIndexChannel->SetRtpParam(m_nLocalRtpPort,m_nDestRtpPort,m_strDestIp);
m_pIndexChannel->StartThread();
}
else
{
pWnd->SetWindowText(_T("开始收发视频"));
m_bOpenCamera = false;
bool bOpenRes = CCameraMgr::GetInstance()->CloseCameraMgr();
m_pIndexChannel->StopThread();
}
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/31/56a939878a442b1397fb39d273eff2fc.gif)
相关文章推荐
- 关于H.264,jrtp,directShow视频采集等的整合开发研究
- iOS RTMP 视频直播开发笔记(2)----关于MP4及H.264
- 使用DirectShow开发视频采集程序
- 【iOS开发】关于视频直播技术,你想要知道的都在这里了(一)采集
- DirectShow采集视频图像,开发环境的搭建,amcap编译运行
- iOS RTMP 视频直播开发笔记(2)----关于MP4及H.264
- 提取DirectShow中视频采集的数据
- 用DirectShow实现视频采集
- 摘录DirectShow数据,视频采集
- Android 音视频开发(四):使用 Camera API 采集视频数据
- iOS RTMP 视频直播开发笔记(3)- 了解 H.264 编码
- 探讨一下Android平台的视频类应用开发的技术研究点
- iOS开发----关于导航条的研究
- directshow和vfw采集并转发视频数据的接口
- H.264整数DCT公式推导和蝶形图分析-多视角视频编码(mvc)研究(转载)
- (必看)视频开发项目的技术来源、实现形式、走向。 --VFW。DirectSHow 。MediaFoundation
- iOS开发小记:关于环信Demo3.0的使用总结以及昵称和头像问题的研究与解决
- 关于安卓平台下的音视频开发系统
- 视频图像数据采集方法研究
- 转载H.264视频开发---代码移植ZZ