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

 

說明:若有更好方法歡迎指出。謝謝。

相關文章
相關標籤/搜索