zoukankan      html  css  js  c++  java
  • Avi视频生成缩略图时,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”

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

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

    于是,查阅msdn关于bitmap类的介绍,如下:

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

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

    参数

    width

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

    height

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

    stride

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

    format

    BitmapPixelFormat 枚举。

    scan0

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

     

     

    根据说明Stride必须为4的倍数,于是限定设置的宽高必须为4的倍数,之后生成的avi在缩略图时不再异常,问题解决。

     

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

  • 相关阅读:
    条件注释判断浏览器版本<!--[if lt IE 9]>
    动态加载js、css 代码
    C趣味题目
    shell脚本
    Logiscope学习网址
    将double型小数点后面多余的零去掉
    qt和makefile学习网址
    微软推出的工作流引擎
    java例子
    js 定义hash类
  • 原文地址:https://www.cnblogs.com/lxp-ontheroad/p/3665833.html
Copyright © 2011-2022 走看看