Avi视频生成缩略图时,提示“尝试读取或写入受保护的内存。这一般指示其余内存已损坏”

需求:录制Avi格式视频成功后,使用DirectShow生成缩略图,因为视频录制时,宽高分辨率可调节,因此有些状况下,生成缩略图会抛出异常“尝试读取或写入受保护的内存。这一般指示其余内存已损坏”。html

异常位于代码段:bmp = new Bitmap(width, height, stride, System.Drawing.Imaging.PixelFormat.Format24bppRgb, hImage);以后。只要对此bmp图像进行操做就会有异常抛出。数组

因而,查阅msdn关于bitmap类的介绍,以下:ide

用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。 spa

public Bitmap (
	int width,
	int height,
	int stride,
	PixelFormat format,
	IntPtr scan0
)

参数

width

Bitmap 的宽度(以像素为单位)。指针

height

Bitmap 的高度(以像素为单位)。orm

stride

指定相邻扫描行开始处之间字节偏移量的整数。这一般(但不必定)是以像素格式表示的字节数(例如,2 表示每像素 16 位)乘以位图的宽度。传递给此参数的值必须为 4 的倍数视频

format

BitmapPixelFormat 枚举。htm

scan0

指向包含像素数据的字节数组的指针。内存

 

 

根听说明Stride必须为4的倍数,因而限定设置的宽高必须为4的倍数,以后生成的avi在缩略图时再也不异常,问题解决。v8

 

说明:若有更好方法欢迎指出。谢谢。

相关文章
相关标签/搜索