淘先锋技术网

首页 1 2 3 4 5 6 7
网上可以找到将ppt转为视频,没看到到视频转为ppt。想去找一些ppt形式的绘本,甚至pdf的绘本都没有找到,但发现不少绘本以视频的形式存在,就想着能不能将视频转为ppt。基本思路很简单将视频的每一帧,按照固定的间隔转换为图片,然后用图片再生成ppt

利用matlab的VideoReader可以很容易读取视频数据,代码Video2Image2函数参考自
https://blog.csdn.net/lingyunxianhe/article/details/83543282
在我的matlab2018的环境下运行出错,稍微做了一点改动



%auto ppt

Path   =  "D:\";%视频的路径
VideoPath = Path;%图片的保存路径
VideoName = "szxz";%视频的名称,未加后缀,主要是作为图片保存的前缀
VideoPath =  strcat(Path,VideoName);%视频的路径
VideoPath = strcat(VideoPath,".mp4");%视频的完整路径
Video2Image2(VideoPath,Path,VideoName,60,20);

%VideoPath,ImageSaveFolder,ImNamePre,ImSpanNum,StartId
%VideoPath                         ---视频的路径
%ImageSaveFolder             ---图片保存路径
%ImNamePre                      ---图片保存的前缀
%ImSpanNum                     ---每间隔ImSpanNum帧保存图像
%StartId                               ---起始保存帧

function Video2Image2(VideoPath,ImageSaveFolder,ImNamePre,ImSpanNum,StartId)
ImageSaveForm='.jpg';
ObjImSize=[480,640];
%获取视频信息
vidObj= VideoReader(VideoPath);
%把上面保存的信息写入图片中去
if ~exist(ImageSaveFolder,'dir')
    mkdir(ImageSaveFolder);
end
IsExtractPointStartId=false;%从指定的帧号开始提取图片
CurFrameId=0;
PreFrameId=0;
MyFrame = 0;
while hasFrame(vidObj)
    Image = readFrame(vidObj);
    CurFrameId=CurFrameId+1;
    if (~IsExtractPointStartId)&&(CurFrameId==StartId)
        IsExtractPointStartId=true;
        PreFrameId=CurFrameId;
        Image=imresize(Image,ObjImSize);
        %按指定格式保存到指定的文件夹
        ImageName=sprintf('%s%d%s',ImNamePre,MyFrame,ImageSaveForm);
        ImagePath=fullfile(ImageSaveFolder,ImageName);
       ImagePath =  sprintf('%s',ImagePath);
        imwrite(Image,ImagePath);
        MyFrame = MyFrame + 1;
        continue;
    end
    if ((CurFrameId-PreFrameId)==ImSpanNum)
        PreFrameId=CurFrameId;
        Image=imresize(Image,ObjImSize);
        %按指定格式保存到指定的文件夹
        ImageName=sprintf('%s%d%s',ImNamePre,MyFrame,ImageSaveForm);
        ImagePath=fullfile(ImageSaveFolder,ImageName);
        ImagePath =  sprintf('%s',ImagePath);
        imwrite(Image,ImagePath);
        MyFrame = MyFrame + 1;
    end
end
end

得到图像后,用FreePic2Pdf将图片转为pdf,即可在电脑上播放
在这里插入图片描述
从上图可以看到,由于是固定帧数间隔的保存图像,里面包含了不少重复的图片。简单的做法可以直接手动删除,虽然low了一些,工作量不大。另外一个思路是用图像减法,相邻的两帧做一个减法,看看图像的差距。如果差距大,说明帧与帧之间存在差异,说明视频的图像变动了,以此为契机,保存当前帧,寻找下一个变化的图像,直到视频结束。代码没什么难度,懒得实现。

如果pdf想转ppt也很容易,推荐一个在线的网址 https://www.ilovepdf.com/pdf_to_powerpoint。 另外,使用WPS投屏在小米电视上播放ppt也很舒服,用遥控器可以上翻下翻ppt,有一种上课的感觉。