打印

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

[复制链接]
1369|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AC, pi, rc, C++, RGB
本帖最后由 LcwSwust 于 2021-1-12 20:54 编辑

接上一帖: https://bbs.21ic.com/icview-3063776-1-1.html
现上传自己用VB写的一个视频截图并转为BIN文件的程序:
(还有VC写的DLL)
视频播放器-BIN.part1.rar (9 MB)
视频播放器-BIN.part2.rar (9 MB)
视频播放器-BIN.part3.rar (4.7 MB)
MYDLL.rar (797 KB)

说明:
  程序运行中会对剪贴板有影响;
  录制中鼠标不要点击其它窗体;
“播放视频”按钮播放视频;
“截图”按钮可对视频截图;“保存”按钮保存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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:good good study day day up

5

主题

1531

帖子

9

粉丝