DirectShow Demo---MediaCapture.h源码解析

MediaCapture主要就是进行相关音视频数据采集功能封装,提供音视频操作相关方法,包括对采集数据的分辨率、帧速率、采样率,与采集数据处理相关方法:音视频比特率等。

#include <dshow.h>
#include <string>
#include "..\RTMPLiveStreamFilter\RTMPConstant.h"

 

//视频捕获
class MediaCapture
{
public:
 MediaCapture(void);
 ~MediaCapture(void);

 

public:
 // 驱动
 //设置视频驱动
 void setVideoDevice(std::wstring deviceName);
 //获取视频驱动程序
 std::wstring getVideoDevice();
 //设置音频驱动
 void setAudioDevice(std::wstring deviceName);
 //获取音频驱动
 std::wstring getAudioDevice();

 

 // 输出文件
 //设置文件名
 void setFileName(std::wstring fileName);
 //获取文件名
 std::wstring getFileName();

 

 // 视频显示
 //设置视频显示窗口
 void setDisplayWindow(HWND wnd);
 
 //设置画面刷新帧率
 void setFPS(int fps);
 //不知道啥功能
 void setMinGOPlength(int ikeyint_min);

 

 //使用设置显示分辨率
 void setUseCustomResolution(bool bValue);
 //设置显示分辨路
 void setCustomResolution(int iWidth, int iHeight);

 

 

 

 // capture parameters
 //捕获参数
 //设置和获取显示宽度
 void setWidth(int width);
 int getWidth();
 //设置和获取显示高度
 void setHeight(int height);
 int getHeight();
 //设置和获取帧数
 void setFramerate(int rate);
 int getFramerate();
 //设置和获取采样率
 void setSamplingFrequency(SamplingFrequency frequency);
 SamplingFrequency getSamplingFrequency();
 
 // codec parameters
 //编解码器参数
 //设置和获取比特率
 void setVideoBitrate(int bitrate);
 int getVideoBitrate();
 //设置和获取比特率模式
 void setVideoBitrateMode(VideoBitrateMode mode);
 VideoBitrateMode getVideoBitrateMode();
 //设置视频处理文件(这里处理为h264文件)
 void setVideoProfile(H264Profile profile);
 H264Profile getVideoProfile();
 //设置和获取视频质量
 void setVideoQuality(int q);
 int getVideoQuality();
 //设置和获取音频比特率
 void setAudioBitrate(AudioBitrate bitrate);
 AudioBitrate getAudioBitrate();

 

 // operations
 //操作
 //启动
 bool start();
 //暂停
 void pause();
 //复原
 void resume();
 //停止
 void stop();

 

 //获取出错信息
 const std::wstring getLastError();

 

private:
 //清理
 void cleanup();
 //设置裁剪窗口
 void setClippingWindow();
 //获取视频参数
 VideoFormat getVideoFormat(GUID subtype);

 

private:
 
 std::wstring mVideoDevice;     //视频驱动
 std::wstring mAudioDevice;     //音频驱动
 std::wstring mFileName;        //文件名
 HWND mDisplayWindow;           //显示窗口句柄
 int mFps;                      //显示帧数fps
 bool mUseCustomResolution;     //是否使用自定义分辨率
 int mCustomWidth;              //自定义分辨率宽度
 int mCustomHeight;             //自定义分辨率高度

 

 int mkeyint_min;               //作用未知,等后面调用
 int mWidth;                    //宽度
 int mHeight;                   //高度
 int mFramerate;                //帧速率
 SamplingFrequency mSamplingFrequency;   //采样率
 int mVideoBitrate;                      //视频比特率
 VideoBitrateMode mVideoBitrateMode;     //视频比特率模式(应该还有别的模式)
 AudioBitrate mAudioBitrate;             //音频比特率
 H264Profile mH264Profile;               //h264处理文件
 int mVideoQuality;                      //视频质量
 std::wstring mLastError;                //错误信息
 VideoFormat mSelectedVideoFormat;       //选中视频格式

 

 // dshow stuff
 //dshow相关东西
 DWORD mGraphReg;
 CComPtr<IGraphBuilder>  mGraphBuilder;
 CComPtr<IMediaControl>  mMediaCtrl;
 CComPtr<IMediaEvent>  mMediaEvent;
 CComPtr<IBaseFilter>  mVideoSource;
 CComPtr<IBaseFilter>  mAudioSource;
 CComPtr<IBaseFilter>  mVideoRenderer;
 CComPtr<IBaseFilter>  mAudioRenderer;
 CComPtr<IBaseFilter>  mMediaStreamingFilter;
 CComPtr<IBaseFilter>  mTeeFilter;

 

private:
 void setLastError(WCHAR* text);
};

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值