【发布时间】:2011-10-19 13:41:39
【问题描述】:
我有一个 IP 摄像机将视频流式传输到一家公司提供给我的黑盒缓冲区代码中。他们还为我提供了如何获取缓冲区并将其转换为 unsigned 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.Net,我想知道是否有更优雅的方法可以将我必须的视频缓冲区保存到 avi 文件或我可以在 DirectShow 或 DirectShow.net 中轻松处理的内容?
【问题讨论】:
-
也许我可以创建一个 DirectShow.net 过滤器来处理它或其他什么?
标签: c# c++ directshow directshow.net vfw