完整地DirectShow捕获音视频地demo源码

上传人:re****.1 文档编号:487527292 上传时间:2023-05-27 格式:DOC 页数:37 大小:358KB
返回 下载 相关 举报
完整地DirectShow捕获音视频地demo源码_第1页
第1页 / 共37页
完整地DirectShow捕获音视频地demo源码_第2页
第2页 / 共37页
完整地DirectShow捕获音视频地demo源码_第3页
第3页 / 共37页
完整地DirectShow捕获音视频地demo源码_第4页
第4页 / 共37页
完整地DirectShow捕获音视频地demo源码_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《完整地DirectShow捕获音视频地demo源码》由会员分享,可在线阅读,更多相关《完整地DirectShow捕获音视频地demo源码(37页珍藏版)》请在金锄头文库上搜索。

1、word近段时间由于工作上的需要,大概看了下DirectShow,写了个小的demo,方便理解。以后在深入的学习下DirectShow。贴出代码。对音频所做的处理如如下图:cppview plaincopyprint?1. #ifndef _MON_H_2. #define _MON_H_3.4. #include 5. #include qedit.h6. #include 7. #include 8. #pragma ment(lib,Strmiids.lib)9.10. /define release maco11. #define ReleaseInterface(x) 12. if

2、( NULL != x ) 13. 14. x-Release( ); 15. x = NULL; 16. 17. / Application-defined message to notify app of filter graph events18. #define WM_GRAPHNOTIFY WM_APP+10019.20. void Msg(HWND hwnd,TCHAR *szFormat, .); 21. bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice); 22.23. #endif/ _MON_H_#ifndef _MON_H_#d

3、efine _MON_H_#include #include qedit.h#include #include #pragma ment(lib,Strmiids.lib)/define release maco#define ReleaseInterface(x) if ( NULL != x ) x-Release( ); x = NULL; / Application-defined message to notify app of filter graph events#define WM_GRAPHNOTIFY WM_APP+100void Msg(HWND hwnd,TCHAR *

4、szFormat, .);bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice);#endif/ _MON_H_实现:cppview plaincopyprint?1. #include mon.h2.3. void Msg(HWND hwnd,TCHAR *szFormat, .) 4. 5. TCHAR szBuffer1024; 6. constsize_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer0); 7. constint LASTCHAR = NUMCHARS - 1; 8.9. va_li

5、st pArgs; 10. va_start(pArgs, szFormat); 11.12. (void)StringCchVPrintf(szBuffer, NUMCHARS - 1, szFormat, pArgs); 13. va_end(pArgs); 14.15. szBufferLASTCHAR = TEXT(0); 16.17. MessageBox(hwnd, szBuffer, TEXT(Message), MB_OK | MB_ICONERROR); 18. 19.20. bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice) 21

6、. 22. bool flag = true; 23. int strlenFilter = SysStringLen(bstrFilter); 24. int strlenDevice = SysStringLen(bstrDevice); 25. char* chrFilter = (char*)malloc(strlenFilter+1); 26. char* chrDevice = (char*)malloc(strlenDevice+1); 27. int j = 0; 28.29. if (strlenFilter!=strlenDevice) 30. flag = false;

7、31. else32. 33. for(; j strlenFilter;j+) 34. 35. chrFilterj = (char)bstrFilterj; 36. chrDevicej = (char)bstrDevicej; 37.38. 39. chrFilterstrlenFilter = 0; 40. chrDevicestrlenDevice = 0; 41.42. for(j=0; j strlenFilter;j+) 43. 44. if(chrFilterj != chrDevicej) 45. flag = false; 46. 47.48. if(flag = tru

8、e & j = strlenFilter-1) 49. flag = true; 50. 51. return flag; 52. #include mon.hvoid Msg(HWND hwnd,TCHAR *szFormat, .)TCHAR szBuffer1024; const size_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer0);const int LASTCHAR = NUMCHARS - 1;va_list pArgs;va_start(pArgs, szFormat);(void)StringCchVPrintf(szBu

9、ffer, NUMCHARS - 1, szFormat, pArgs);va_end(pArgs);szBufferLASTCHAR = TEXT(0);MessageBox(hwnd, szBuffer, TEXT(Message), MB_OK | MB_ICONERROR);bool Bstr_pare(BSTR bstrFilter,BSTR bstrDevice)bool flag = true;int strlenFilter = SysStringLen(bstrFilter);int strlenDevice = SysStringLen(bstrDevice);char*

10、chrFilter = (char*)malloc(strlenFilter+1);char* chrDevice = (char*)malloc(strlenDevice+1);int j = 0;if (strlenFilter!=strlenDevice)flag = false;elsefor(; j strlenFilter;j+)chrFilterj = (char)bstrFilterj;chrDevicej = (char)bstrDevicej;chrFilterstrlenFilter = 0;chrDevicestrlenDevice = 0;for(j=0; j str

11、lenFilter;j+)if(chrFilterj != chrDevicej)flag = false;if(flag = true & j = strlenFilter-1)flag = true;return flag;2.SampleGrabberCallback.h文件,由于截取视频图片,回调函数的实现cppview plaincopyprint?1. #ifndef _SAMPLEGRABBERCALLBACK_H_2. #define _SAMPLEGRABBERCALLBACK_H_3. #include mon.h4.5. class SampleGrabberCallba

12、ck : public ISampleGrabberCB 6. 7. public: 8. ULONG STDMETHODCALLTYPE AddRef(); 9. ULONG STDMETHODCALLTYPE Release(); 10. HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,void* ppvObject); 11.12. HRESULT STDMETHODCALLTYPE SampleCB(double Time, IMediaSample *pSample); 13. HRESULT STDMETHODCALLTYP

13、E BufferCB(double Time, BYTE *pBuffer, long BufferLen); 14.15. SampleGrabberCallback(); 16. BOOL SaveBitmap(BYTE * pBuffer, long lBufferSize ); /保存bitmap图片17. public: 18. BOOL m_bGetPicture; / is get a picture19. long m_lWidth; /存储图片的宽度20. long m_lHeight; /存储图片的长度21. int m_iBitCount; /the number of

14、bits per pixel (bpp)22. TCHAR m_chTempPathMAX_PATH; 23. TCHAR m_chSwapStrMAX_PATH; 24. TCHAR m_chDirNameMAX_PATH; 25. ; 26.27. #endif /_SAMPLEGRABBERCALLBACK_H_#ifndef _SAMPLEGRABBERCALLBACK_H_#define _SAMPLEGRABBERCALLBACK_H_#include mon.hclass SampleGrabberCallback : public ISampleGrabberCBpublic:ULONG STDMETHODCALLTYPE AddRef();ULONG STDMETHODCALLTYPE Release();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号