
400-123-4657
之前在一家公司做过采集卡SDK,需要支持基于Directshow架构的视频采集设备(采集卡、USB摄像头)和音频采集设备(麦克风或者AV音频输入)。 它可以同时捕捉图像和声音,并转换视频和音频编码,然后录制成AVI或MP4文件; 采集过程中可预览图像,支持任意时间段录像(即可以在不同时间点开始录像,但需要完成一次录像后才能进行下一次录像); 录制的视频音频必须同步。
我会添加一些条件,从视频编码为H264、音频编码为MP3或AAC的要求开始。 录制为 AVI 时,音频采用 MP3 编码; 录制为 MP4 时,音频采用 AAC 编码。 记录格式由用户指定。
需求看似简单,但是如何实现呢? 我对Directshow技术比较熟悉,所以首先想到了使用Filter来实现各种子功能。 比如视频编码器可以使用FFDShow Video Encoder Filter,音频编码可以使用AAC Encode和MP3 Encode Filter(这两个Filter都可以),并且录制AVI和MP4也有相应的Muxers。 因此,最初的实现过程可以用下面的Directshow链接图来表示:
图1:采集音视频并编码,然后打包成指定的容器格式
注意:上面的链接图要分两种情况。 两种情况下的音频编码和录音封装格式不同,因此Audio Encoder和Muxer在不同情况下使用不同的Filter。
其中,用于录制AVI文件的Grap
本文介绍使用Directshow从摄像头(采集卡设备)采集图像并录制成AVI和MP4文件的实现。 希望我们推荐的文章对程序员有所帮助!