前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用matlab打造属于自己屏幕录像工具

用matlab打造属于自己屏幕录像工具

作者头像
巴山学长
发布2019-07-15 16:00:11
1.4K0
发布2019-07-15 16:00:11
举报
文章被收录于专栏:巴山学长巴山学长

现在网上的录屏软件可谓是五花八门,各有特色,收费免费的都有。可聪明的你,有没有想过用matlab打造一款属于自己的录屏工具呢?是的,没有看错,用matlab打造。网上介绍采用录制屏幕的资料很多,大部分都是录制GIF动画(见:如何用matlab制作演示动画并存储)、录制无声视频等。采用今天介绍的方法将能同时录制声音和屏幕画面并保存。

下面来简单介绍一下实现原理,即在录制声音的同时录制屏幕,声音录制使用matlab内置的函数,录屏则是通过屏幕截图来实现的。将同步录制的声音和图片分别保存成音频和视频文件,在使用Micah Richert编写的mmread函数读取音频和视频,mmwrite函数来合并音频视频文件,最终完成屏幕录制。

经测试,录制两分钟的视频大约占用21MB左右存储空间,以下视频就是采用所编写的程序录制的,请大家欣赏!!!

视频内容
代码语言:javascript
复制
clc;clear;
% 创建用于录制音频的对象R
R = audiorecorder(22050,16,1);
% 定义录制长度,注意这里不是录制时长,是截屏的张数
len = 1000;
vd = cell(len,1);
tic;
% 开始声音录制
record(R);
for k = 1:len
% screensnap采用C语言编写,需要VC编译
% 下载地址:https://ww2.mathworks.cn/matlabcentral/fileexchange?q=screensnap
    imwrite(screensnap(0),[num2str(k),'.jpg']);
end
% 截屏结束时停止声音录制
stop(R);
disp('录制完成');
fR = toc;
signal = getaudiodata(R);
% 保存音频
audiowrite('myspeech.wav',signal,22050,'BitsPerSample',16);
ved = VideoWriter('myspeech.avi');
ved.FrameRate = floor(len/fR);
open(ved);
% 截图生成视频文件
for k = 1:len
    writeVideo(ved,imread([num2str(k),'.jpg']));
end
close(ved);
% 音视频合并需要用到Micah Richert编写mmread和mmwrite函数
% https://ww2.mathworks.cn/matlabcentral/fileexchange/8028-mmread
% https://ww2.mathworks.cn/matlabcentral/fileexchange/15881-mmwrite
[~, audio] = mmread('myspeech.wav');
[video, ~] = mmread('myspeech.avi');
mmwrite('myspeech.wmv',audio,video);
disp('处理完成');
delete('myspeech.wav');
delete('myspeech.avi');
for k = 1:len
    delete([num2str(k),'.jpg']);
end
disp('清理完成');

视频中所有相关文件都已打包整理,需要的小伙伴请在公众号中回复“屏幕”或者“录像”即可获取下载链接。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档