gpt4 book ai didi

visual-c++ - 将位图(640x480)推送到 AVI 文件的 Visual C++ AVI 编写器函数?

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:43 25 4
gpt4 key购买 nike

我有一个带有 SDK for Visual C++ 的视频采集卡。在 SDK 的回调中,我可以以 30 fps 的速度使用彩色帧 (640 x 480)。目前,我在一个单独的线程中将整个图像序列作为单个 bmp 文件一次一个地写出——一小时内有 108,000 个文件,或者每小时大约 100 GB,这是不可管理的。我想将这些传入的帧推送到一个 AVI 文件中,并进行可选压缩。我什至从哪里开始?到目前为止,浏览 MSDN DirectShow 文档一直让我感到困惑。有更好的例子吗? OpenCV 是答案吗?我看过一些例子,但我不确定 OpenCV 是否会将该卡识别为捕获设备,我也不了解它一开始是如何识别捕获设备的。此外,我已经将帧输入,我只需要将它们输出 到某个不支持我的生产者线程的消费者线程中的AVI。感谢您的帮助。

最佳答案

我用过 CAviFile前。它工作得很好,我不得不稍微调整一下以允许用户选择编解码器。我从 CAviGenerator 中获取了该代码. CAviFile 的接口(interface)非常简单,下面是一些示例代码:

CAviFile *Avi = new CAviFile(fileName.c_str(), 0, 10);

HRESULT res = Avi->AppendNewFrame(Width, Height, ImageBuffer, BitsPerPixel);
if (FAILED(res))
{
std::cout << "Error recording AVI: " << Avi->GetLastErrorMessage() << std::endl;
}

delete Avi;

显然,您必须确保您的 ImageBuffer 包含正确格式的数据等。但是一旦我把这些东西都整理好了,它就很好用了。

关于visual-c++ - 将位图(640x480)推送到 AVI 文件的 Visual C++ AVI 编写器函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1167043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com