LcwSwust 发表于 2021-1-12 20:49

[分享]VB写的视频截图制作BIN的程序

本帖最后由 LcwSwust 于 2021-1-12 20:54 编辑

接上一帖: https://bbs.21ic.com/icview-3063776-1-1.html
现上传自己用VB写的一个视频截图并转为BIN文件的程序:
(还有VC写的DLL)





说明:
程序运行中会对剪贴板有影响;
录制中鼠标不要点击其它窗体;
“播放视频”按钮播放视频;
“截图”按钮可对视频截图;“保存”按钮保存BIN文件;
“保存图片”按钮将截图保存为图片"test.bmp",图片尺寸为控件Picture2的pixel尺寸。
XP系统下播放器不支持mp4等格式,建议用格式工厂转换为WMV。
WIN8、WIN10等系统下要“以兼容模式运行”,选择“XP”,否则截图位置有偏差。

用处:BIN文件放入SD卡,单片机读取并将图片逐张显示,就成了动画.


视频转BIN原理:
WindowsMediaPlayer控件播放视频;
利用Call keybd_event(vbKeySnapshot, theForm, 0, 0) 进行窗体截图;
Picture1.Picture = Clipboard.GetData(vbCFBitmap)显示截图;
Picture2.PaintPicture 取出截图中的视频区域图像;
GetBitmapBits 取出Picture2的图像RGB数据;
VC6.0写的MYDLL.DLL中的 RGB8880_565 函数将RGB32位数据转为16位数组,便于直接发送到LCD;

DLL中的函数:
//像素点转换,rgb8880数组转rgb565数组,pixcnt为像素点个数
void __stdcall RGB8880_565(char *src,char *dst, int pixcnt, int rev)
{
      unsigned char r,g,b;
      while(pixcnt--)
      {
                if(rev)
                {
                        b=*(src++);
                        g=*(src++);
                        r=*(src++);
                }
                else
                {
                        r=*(src++);
                        g=*(src++);
                        b=*(src++);
                }
                *(src++);//0
                *(dst++)=(r & 0xF8)|(g >> 5);
                *(dst++)=((g<<3) & 0xE0 )|(b >> 3);
      }
}


gaoyang9992006 发表于 2021-1-14 22:19

感谢分享,以前VB是做桌面软件很好的选择,现在好像叫VB.net了。

changle11sdo5 发表于 2021-7-11 18:43

我上位机也只会VB,很久以前学的,挺容易玩,可惜VB死了,控件不更新,做仪表界面和USB很困难,竞然还有那么多人用VB
页: [1]
查看完整版本: [分享]VB写的视频截图制作BIN的程序