本帖最后由 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);
}
}
|