我怎么能迁移视频为Windows代码更好的东西

本文关键字:更好 代码 Windows 怎么能 迁移 视频 | 更新日期: 2023-09-27 18:04:21

我有一个IP摄像机将视频流式传输到一家公司提供给我的黑箱缓冲代码中。他们还为我提供了如何将缓冲区转换为无符号char*数组的示例代码。有了这个数组,我可以创建一个AVI文件,并将视频缓冲区保存到其中,然后创建一个视频文件。

for( unsigned short lLine = 0; lLine < mSizeY -1; lLine++)
{
    NumOfLines = lLine;
    unsigned char *lCurLine = (unsigned char *)aBuffer + (lLine) * mSizeX * mBPP;
    unsigned char *lCurLineInv = temp + (mSizeY - lLine - 1) * mSizeX * mBPP;
    ::memcpy(lCurLineInv, lCurLine, mSizeX * mBPP );
}
AVIStreamWrite(mAVICompressedStream, mLastSample, 1, temp, mImageSize, AVIIF_KEYFRAME, &lSamplesWritten, &lBytesWritten )
从很多方面来说,这都是一个糟糕的系统。包括这一切都是在VFW中完成的

目前我在c#和c++/CLi DLL中做所有这些代码。我知道如何使用Directshow。我想知道是否有一种更优雅的方式来保存这个视频缓冲区,我必须一个avi文件或一些我可以很容易地在说DirectShow或DirectShow.net工作的东西?

我怎么能迁移视频为Windows代码更好的东西

看一下DirectShow.net在Samples'Misc'GSSF中的源过滤器示例。我可能不会为了避免VFW而重写为DS,但是:即使在c++中使用它也有稳定性问题,所以只有我才会这样做,以获得输出格式的灵活性。媒体基金会是新的热点,如果你能抛弃<Vista。>

查看AForge.Net。它是VfW, DirectShow和FFMpeg的c#包装器。FFMpeg路由应该是最优雅和健壮的。