前言
如题,这篇文章主要说的是在windows系统上使用directshow库和lav filter库对h264编码的摄像头做预览功能,实际效果可以参照下图。
先提供两个后面需要用到的下载链接:
lav filter下载地址:https://github.com/Nevcairiel/LAVFilters/releases
graph studio next下载地址:https://github.com/cplussharp/graph-studio-next/releases
准备环境
首先我们安装 lav filter
和 graph studio next
,下载链接在上面已经提供。
lav filter
这里建议下载.zip
压缩包而不是.exe
安装包。因为压缩包能直接提供我们需要的dll动态库
,安装程序还需要自己寻找,而且压缩包提供注册表安装脚本,如果目标机器没有安装lav filter
我们可以使用代码调用安装脚本直接给机器安装上,而不需要手动安装。- 安装
graph studio next
是因为安装了lav filter
之后就没办法使用自带的调试工具graphedt.exe
。好像是graphedt.exe
的bug,安装了lav filter
之后展开filter项程序会直接崩溃,所以使用graph studio next
代替。
注意:如果这里程序是32位的就下载32位的 lav filter 和 32位的 graph studio next 否则无法正常使用。
开发流程
一、使用工具预览效果
在开发我们自己的代码之前,我们可以先用 graph studio next
设计图的流程、过滤器的参数和预览实际效果,这能让我们极大提高效率。就以预览 h264
码流摄像头为例,图流程设计可以参考下图。
双击 Lav Video Decoder
可以打开配置界面,设计好流程和配置好参数后,点运行按键预览实际效果。当预览效果符合我们实际需求时就可以开始写代码了。
二、编写程序
1.摄像头预览
先提供官方的预览Demo:https://learn.microsoft.com/zh-cn/windows/win32/directshow/previewing-video
其实编写程序并不难,流程就跟用 gr