📄 avcapture.htm
字号:
</tr>
<tr>
<td width="782" colspan="2" bordercolor="#FFFFFF" height="1" style="border-bottom-style: solid"><b><font face="Arial Black" size="3"> </font></b></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2">
<p> </td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2">
<p><b><font face="宋体" size="4" color="#FFFF99"><a name="关于捕捉设备">关于捕捉设备</a></font></b></p>
<p> <font size="3" face="宋体" color="#FFFFFF">这里的捕捉设备专指用于计算机输入音频或视频信号的外围设备。声卡就是最常见的音频捕捉设备,常见的视频捕捉设备则有模拟视频捕捉卡、数字摄像相机和数字摄像头等等。</font></p>
<p><font size="3" face="宋体" color="#FFFFFF"> AVCapture利用一个由系统提供的叫做“system device enumerator”的COM对象枚举系统中所有被支持的音/视频捕捉设备,</font><font size="3" face="宋体" color="#FFFFFF">AVCapture的两个只读属性ACDCounts和VCDCounts分别表示枚举到的音频捕捉设备和视频捕捉设备的数量。</font></p>
<p><font size="3" face="宋体" color="#FFFFFF"> </font><font size="3" face="宋体" color="#FFFFFF">AVCapture内部将枚举到的所有音频和视频捕捉设备分为两个序列,属性CurACD和CurVCD通过从0开始的序号来决定当前使用的音频和视频捕捉设备。方法GetACDName和GetVCDName得到有序号指定的音/视频捕捉设备的名称。用惯VC的朋友会发现</font><font size="3" face="宋体" color="#FFFFFF">AVCapture
对捕捉设备的管理及后面要提到的对音/视频压缩器的管理与在VC中使用组合框非常相似。CurACD和CurVCD都是持久化属性,在开发环境中通过属性设置栏即可完成选择。</font></p>
<p><b><font face="宋体" size="4" color="#FFFF99"><a name="关于音/视频流压缩和存储">关于音/视频流压缩和存储</a></font></b></p>
<p><font color="#FFFFFF" size="3" face="宋体">
AVCapture可以将音/视频流捕捉到的捕捉到一个指定的文件,并且在捕捉过程中对音/视频数据进行实时压缩。与对捕捉设备的管理类似,AVCapture
枚举系统中所有的音频和视频压缩引擎组件分成两个序列,对应的也有两个只读属性ACompCounts和VCompCounts分别表示系统中音频和视频压引擎缩组件的数量,CurAComp和CurVComp两个属性则用来选压缩引擎组件,当然还有GetACompName和GetVCompName两个用来获取压缩引擎组件名称的方法。</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">
具体可以对音/视频数据进行什么格式的压缩,取决与系统中已经安装的压缩引擎组件。</font></p>
<p><a name="关于照相和抓图"><font face="宋体" size="4" color="#FFFF99"><b>关于照相和抓图</b></font></a></p>
<p><font color="#FFFFFF" size="3" face="宋体">
照相和抓图都可以在捕捉到的视频流中抓取一帧视频,不同的是照相操作将抓到的视频保存到一个标准的DIB文件(*.DIB;*.BMP)中,而抓图操作则将抓到的视频以DIB位图的格式放到系统剪贴板中。通过照相和抓图获取的DIB文件或DIB位图的分辨率和色彩深度由抓取时的视频格式决定。</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">
照相和抓图使用同一个方法调用TakePictureToFile,如果调用TakePictureToFile时指定一个合法的文件名作为参数,抓取的视频将被保存到指定的文件中。而如果指定一个空字符串作为参数,则抓取的视频被放到系统剪贴板中。</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">VC示例代码:</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">
m_ctrlAVCapture.TakePictureToFile(_T("C:\\Video.bmp")); </font><font color="#FFCC99" size="3" face="宋体"> //照相</font><font color="#FFFFFF" size="3" face="宋体"><br>
m_ctrlAVCapture.TakePictureToFile(_T("")); </font><font color="#FFCC99" size="3" face="宋体"> //抓图</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">VB示例代码:</font></p>
<p><font color="#FFFFFF" face="宋体" size="3"> AVCapture1.TakePictureToFile
"C:\Video.bmp" </font><font color="#FFCC99" face="宋体" size="3"> '照相</font><font color="#FFFFFF" face="宋体" size="3"><br>
AVCapture1.TakePictureToFile "" </font><font color="#FFCC99" face="宋体" size="3"> '抓图</font></p>
<p><a name="关于字幕"><b><font face="宋体" size="4" color="#FFFF99">关于字幕</font></b></a></p>
<p><font color="#FFFFFF" size="3" face="宋体"> AVCapture支持在视频的任意位置插入定制的字幕信息。可以通过只读属性TitleGenerator
来设置字幕特性包括:位置、字体、文本颜色、边框颜色、风格和文本内容。属性TitleGenerator
是一个ITitleGenerator接口,该接口由一个视频样例加工引擎组件对象实现,视频样例加工引擎在<a href="#关于视频翻转和镜像">关于视频翻转和镜像</a>一节中另述。</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">VC示例代码:</font></p>
<p><font face="宋体" size="3" color="#FFFFFF"> CTitleGenerator oTG;
</font><font face="宋体" size="3" color="#FFCC99"> //MFC自动封装的字幕对象</font><font face="宋体" size="3" color="#FFFFFF"><br>
COleFont oFont; </font><font face="宋体" size="3" color="#FFCC99"> //MFC自动封装的字体对象</font><font face="宋体" size="3" color="#FFFFFF"><br>
<br>
oTG = m_ctrlAVCapture.GetTitleGenerator(); </font><font face="宋体" size="3" color="#FFCC99"> //获取字幕属性</font><font face="宋体" size="3" color="#FFFFFF"><br>
<br>
oTG.SetText("Test OK!"); </font><font face="宋体" size="3" color="#FFCC99"> //设置字幕文本</font><font face="宋体" size="3" color="#FFFFFF"><br>
<br>
oFont = oTG.GetFont(); </font><font face="宋体" size="3" color="#FFCC99"> //获取字幕的字体属性</font><font face="宋体" size="3" color="#FFFFFF"><br>
<br>
oFont.SetName("Arial"); </font><font face="宋体" size="3" color="#FFCC99"> //字体名称</font><font face="宋体" size="3" color="#FFFFFF"><br>
CY cyFontSize;<br>
cyFontSize.Hi = 0;<br>
cyFontSize.Lo = 480000l;<br>
oFont.SetSize(cyFontSize); </font><font face="宋体" size="3" color="#FFCC99"> //字体尺寸</font><font face="宋体" size="3" color="#FFFFFF"><br>
oFont.SetItalic(TRUE); </font><font face="宋体" size="3" color="#FFCC99"> //倾斜</font><font face="宋体" size="3" color="#FFFFFF"><br>
oFont.SetUnderline(TRUE); </font><font face="宋体" size="3" color="#FFCC99"> //下划线</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">VB示例代码:</font></p>
<p><font face="宋体" size="3" color="#FFFFFF"> AVCapture1.TitleGenerator.Text = "Test OK!"
</font><font face="宋体" size="3" color="#FFCC99"> '设置字幕文本</font><font face="宋体" size="3" color="#FFFFFF"><br>
AVCapture1.TitleGenerator.Font.Name = "Arial" </font><font face="宋体" size="3" color="#FFCC99"> '字体名称</font><font face="宋体" size="3" color="#FFFFFF"><br>
AVCapture1.TitleGenerator.Font.Size = 48 </font><font face="宋体" size="3" color="#FFCC99"> '字体尺寸</font><font face="宋体" size="3" color="#FFFFFF"><br>
AVCapture1.TitleGenerator.Font.Italic = True </font><font face="宋体" size="3" color="#FFCC99"> '倾斜</font><font face="宋体" size="3" color="#FFFFFF"><br>
AVCapture1.TitleGenerator.Font.Underline = True </font><font face="宋体" size="3" color="#FFCC99"> '下划线</font></p>
<p><a name="关于视频翻转和镜像"><b><font face="宋体" size="4" color="#FFFF99">关于视频翻转和镜像</font></b></a></p>
<p><font color="#FFFFFF" size="3" face="宋体"> AVCapture支持视频垂直翻转和水平镜像。在摄像设备必须倒置或反射摄像的场合,AVCapture提供的这两项功能将非常有用。</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">
AVCapture
通过安装一个视频样例加工引擎来实现视频垂直翻转、水平镜像以及前面提到的字幕操作。在缺省情况下,AVCapture
会自动安装一个预制的视频样例加工引擎,利用属性VideoSampleMachining可以访问这个视频样例加工引擎,也可以为AVCapture
安装另一个视频样例加工引擎。如果用户希望自己实现一个定制的视频样例加工引擎,那么这个引擎组件必须实现三个COM接口:ISampleGrabberCB、IVideoSampleMachining以及前面提到过的ITitleGenerator。</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">VC示例代码:</font></p>
<p><font face="宋体" size="3" color="#FFFFFF"> CVideoSampleMachining oVSM;
</font><font face="宋体" size="3" color="#FFCC99"> //MFC自动封装的视频样例加工引擎对象</font><font face="宋体" size="3" color="#FFFFFF"><br>
<br>
oVSM = m_ctrlAVCapture.GetVideoSampleMachining(); </font><font face="宋体" size="3" color="#FFCC99"> //获取视频样例加工引擎</font><font face="宋体" size="3" color="#FFFFFF"><br>
<br>
oVSM.SetInversion(TRUE); </font><font face="宋体" size="3" color="#FFCC99"> //允许视频垂直翻转</font><font face="宋体" size="3" color="#FFFFFF"><br>
oVSM.SetMirrorImage(TRUE); </font><font face="宋体" size="3" color="#FFCC99"> //允许视频水平镜像</font></p>
<p><font color="#FFFFFF" size="3" face="宋体">VB示例代码:</font></p>
<p><font face="宋体" size="3" color="#FFFFFF"> AVCapture1.VideoSampleMachining.Inversion = True
</font><font face="宋体" size="3" color="#FFCC99"> '允许视频垂直翻转</font><font face="宋体" size="3" color="#FFFFFF"><br>
AVCapture1.VideoSampleMachining.MirrorImage = True </font><font face="宋体" size="3" color="#FFCC99"> '允许视频水平镜像</font></p>
<p><font face="宋体" size="4" color="#FFFF99"><b><a name="关于事件">关于事件</a></b></font>
<p><font color="#FFFFFF" face="宋体" size="3"> 当AVCapture因为错误而终止运行时,</font><font color="#FFFFFF" face="宋体" size="3">AVCapture会触发ErrorAbort事件,最常见的错误就是因为磁盘空间不足而提前终止将视频和音频流捕捉到磁盘文件。ErrorAbort事件定义了一个long型的事件参数,该参数是一个标准的系统错误代码,它将指明是因何种错误而终止运行。</font><p><font color="#FFFFFF" face="宋体" size="3">
当一个正在被</font><font color="#FFFFFF" face="宋体" size="3">AVCapture
选用的捕捉设备被删除时,</font><font color="#FFFFFF" face="宋体" size="3">AVCapture会触发SelectedDeviceRemoved事件,如果用户使用的是一个1394或USB接口的捕捉设备,这种情况将会经常发生。</font><p><font color="#FFFFFF" face="宋体" size="3">
SelectedDeviceRemovedAvcapture事件定义了以下三个事件参数:<br>
<br>
strName - 设备被删除前的名称字符串。<br>
lIndex - 设备被删除前的序号。<br>
eType - 被删除设备的类型,可能的类型包括:<br>
UnknownDevice(0) 未知设备<br>
AudioCaptureDevice(1) 音频捕捉设备<br>
VideoCaptureDevice(2) 视频捕捉设备</font></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
<tr>
<td width="780" bordercolor="#FFFFFF" height="3" colspan="2"></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -