本发明涉及网页PHP技术领域,特别是一种在线视频转GIF的方法。

背景技术:

GIF(Graphics Interchange Format,可交换的图像文件)相比视频而言,有许多优势存在:体积小,易于传播,支持浏览器多,很多论坛签名和聊天表情包都是GIF做的。因此将视频转成GIF成为时下一个热门。

PHP:Hypertext Preprocessor,超文本预处理器。

技术实现要素:

本发明解决的技术问题在于提供一种在线视频转GIF的方法。

本发明解决上述技术问题的技术方案是:

所述的方法包括如下步骤:

(1)、配置PHP环境,创建三个文件夹frames、gif和video;

其中frames文件夹存放视频的JPG截图,gif文件夹存放JPG转换成的单帧的N张GIF图片,video文件夹存放最原始的视频资源和FFMPEG.exe;

(2)、创建三个PHP文件index.php、convert.php和buildGif.php;其中index.php为入口文件,提供用户交互的上传组件和提交按钮;convert.php为后台处理功能文件;buildGif.php是后台引用的具有GIF合成功能的PHP文件;

(3)、在本地PHP环境下或在线PHP服务器环境下,用户进入index.php程序入口,在中间的文件上传组件中上传视频文件,然后点击转换按钮,等待网页显示出转换的GIF动画。

所述的以convert.php功能点的实现方法是:

(1)、引入buildGif.php并接受来自index.php传来的视频路径参数,用extension_loaded函数加载PHP扩展ffmpeg,利用路径参数实例化ffmpeg;

(2)、定义一个视频长度的参数$length,单位为秒,内容为floor($ffmpegInstance->getDuration()),取舍去小数点后的整数;利用exec函数启动ffmpeg.exe将视频转换格式成flv格式;

(3)、利用一个for循环将flv视频利用ffmpeg.exe按一定的时间间隔批量截图,截取的JPG用时间的MD5加密码在后面加上当前帧的后缀命名;得到视频长度分割整齐的N张JPG图片;

(4)、readdir函数读取存放JPG的文件夹frames,利用FOR循环,定义一个数组为文件夹内容(JPG图片)的集合;同时定义一个延时参数为$ffmpegInstance->getFrameRate()即帧率;

(5)、得到JPG数组后利用函数imagecreatefromjpeg,创建一个$image;然后利用imagegif函数将所有的JPG转换成单帧的GIF格式;此时GIF不是动画,只是JPG转了格式,也是有N张,存在gif文件夹里;

(6)、利用引入的GIF合成功能的PHP文件buildGif.php将所有GIF按时间顺序合成成一张GIF动画,显示在网页上。

所述的buildGif.php功能点的实现方法是:

(1):定义编码格式为“GIF89A”(GIF动画);定义一系列错误信息的显示内容,定义几个参数和数组参数,做一些出错判断,将所有GIF单帧图片组成到一个数组里;

(2):首先添加GIF头部,读取指定的字符串,利用数组的第一帧读取指定参数;

(3):然后按序列逐个添加后续帧,利用一个FOR循环,分布将gif扩展参数,GIF图片参数,GIF颜色参数,GIF单帧图的临时字符组成到一起,连续将N张GIF图片解码组合在一起;

(4):最后将得到的整串字符串重新编码即得到GIF动画。

本发明方案的有益效果如下:

本发明使用方便,PHP环境下上传视频点击按钮即可转换,用户只需要上传待转换的视频文件如MP4等即可等待数秒后得到转换成的GIF动图,由于GIF动画文件小,易于传播,因此具有快速在线转换功能的系统将广泛流行。

本发明效率高,文件只有几个,不含JS,响应速度快。

本发明实用性好,几乎支持所有视频格式,转成的GIF不失真,质量好,

本发明兼容性高:所有主流浏览器都可以适用。

附图说明

下面结合附图对本发明进一步说明:

图1为本发明的流程图。

具体实施方式

下面将结合附图1,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出实质性创造获得的方案,都属于本发明保护的范围。

以下为convert.php里功能点的实现顺序和方法:

1:引入buildGif.php并接受来自index.php传来的视频路径参数,用extension_loaded函数加载PHP扩展ffmpeg,利用路径参数实例化ffmpeg;

2:定义一个视频长度的参数$length,单位为秒,内容为floor($ffmpegInstance->getDuration()),取舍去小数点后的整数;利用exec函数启动ffmpeg.exe将视频转换格式成flv格式;

3:利用一个for循环将flv视频利用ffmpeg.exe按一定的时间间隔(本例为1s)批量截图,截取的JPG用时间的MD5加密码在后面加上当前帧的后缀命名;这样便得到视频长度分割整齐的N张JPG图片;

4:readdir函数读取存放JPG的文件夹frames,利用FOR循环,定义一个数组为文件夹内容(JPG图片)的集合;同时定义一个延时参数为$ffmpegInstance->getFrameRate()即帧率。因为本例每秒截取一张图片,所以帧率即图片延时;

5:得到JPG数组后利用函数imagecreatefromjpeg,创建一个$image;然后利用imagegif函数将所有的JPG转换成单帧的GIF格式;此时GIF不是动画,只是JPG转了格式,也是有N张,存在gif文件夹里;

6:利用引入的GIF合成功能的PHP文件buildGif.php将所有GIF按时间顺序合成成一张GIF动画,显示在网页上。

以下为buildGif.php里功能点的实现顺序和方法:

1:定义编码格式为“GIF89A”(GIF动画);定义一系列错误信息的显示内容,定义几个参数和数组参数,做一些出错判断,将所有GIF单帧图片组成到一个数组里;

2:首先添加GIF头部,由于GIF单帧图已经存储成了字符,所有只需要读取指定的字符串,利用数组的第一帧即可读取指定参数;这里充分利用了substr函数和一些转义字符;

3:然后按序列逐个添加后续帧。利用一个FOR循环,分布将gif扩展参数,GIF图片参数,GIF颜色参数,GIF单帧图的临时字符组成到一起,连续将N张GIF图片解码组合在一起;

4:最后将得到的整串字符串重新编码即得到GIF动画。

php实现视频转gif,一种在线视频转GIF的方法与流程相关推荐

  1. 在线语音识别引擎及识别方法与流程

    本发明涉及语音识别领域,具体涉及一种在线语音识别引擎及识别方法. 背景技术: 深度学习网络(Deep-Learning Neural Network,DNN)技术的发展,带来了语音识别领域的飞速发展. ...

  2. html在线录音并上传,一种网页版在线录制wav音频的方法与流程

    本发明涉及网页版音频录制的技术领域,特别涉及一种网页版在线录制wav音频的方法. 背景技术: 随着国内经济的快速发展,人们的生活水平越来越高,而随之带动了电子产品的广泛应用与高速发展,电子已普及到人们 ...

  3. 计算机全息图的制作与在线,一种计算全息图的制作和再现方法与流程

    本发明涉及全息图像处理技术领域,尤其是一种计算全息图的制作和再现方法. 背景技术: 计算全息图是一种广泛应用的全息形式,其记录光路与传统光学全息的相似,但全息图的记录装置使用CCD相机或CMOS相机. ...

  4. android epg界面实现,一种EPG引擎及页面解析方法与流程

    本发明涉及浏览器页面解析领域,更具体的说是涉及一种EPG引擎及页面解析方法. 背景技术: 传统的浏览器客户端当中,需要消耗相当大的资源和文档对象模型接口进行交互,通常是用JS库.参照图1,浏览器解析页 ...

  5. uvm 形式验证_一种基于UVM的总线验证方法与流程

    本发明涉及芯片设计的功能验证领域,尤其是一种基于UVM的总线验证方法. 背景技术: 随着集成电路工艺的不断进步,集成电路的规模和复杂度也在不断地提高,验证的难度也越来越大.在集成电路设计中,验证工作已 ...

  6. bms用matlab吗,一种BMS的MATLAB建模集成方法与流程

    技术特征: 1.一种BMS的MATLAB建模集成方法,其特征在于,包括以下步骤: S01:将BMS分为输入模块.输出模块及若干个中间模块,并定义各模块的名称: S02:定义各模块的输入端口和输出端口的 ...

  7. 小优机器人系统恢复_一种机器人异常恢复系统及方法与流程

    本发明涉及异常恢复系统及方法,尤其涉及一种机器人异常恢复系统及方法. 背景技术: 目前,一些家庭拥有机器人,机器人对人类的生活有很大的影响,它给了人们更加智能化舒适化的享受:但是,当机器人在运行某些应 ...

  8. bgll算法 matlab,一种复杂网络社区检测的方法与流程

    本发明涉及一种社区检测方法,具体说是一种复杂网络社区检测的方法. 背景技术: 过去几年中已有许多社区检测方法相继提出,其中应用最广泛的是基于模块度的最优化方法.然而,模块度最优化本质上是一个典型的NP ...

  9. 一种语音识别的自动控制系统及方法与流程

    本发明涉及语音识别技术领域,尤其涉及一种语音识别的自动控制系统及方法. 背景技术: 随着电子技术的不断发展,各种交互式系统都采用了语音交互的方式,语音交互已成为一种重要的人机交互方式,以提高与用户的互 ...

最新文章

  1. 【每日一念经】四轮面试,我如何拿到美团的offer?
  2. 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)
  3. httpClient 超时时间设置
  4. 洛谷.4245.[模板]任意模数NTT(MTT/三模数NTT)
  5. oracle union详解,Oracle中的union和join
  6. Tomcat设置网站别名
  7. 设计模式之Builder
  8. OpenCV 4.5 发布!
  9. python绘制函数曲线x2sin(x2-x-2)_Python数据处理从零开始----第四章(可视化)(2)图形和轴...
  10. js系列教程7-DOM操作全解
  11. SelfUpdate 树不起作用
  12. 在哪里可以找水系图_请问在哪可以找到广西的水系图
  13. 象棋马走日UML类图
  14. 使用SendCloud企业发送邮件
  15. UE5 Gameplay 框架拆解
  16. M3U8文件简介及在线播放器
  17. python求字典的平均值_获取字典列表中值的平均值
  18. CSDN上代码块背景颜色的设置
  19. Python中的pillow(PIL)
  20. 易联云k4php_易联云k4打印机重新绑定

热门文章

  1. Hutool XML 转JSON 后 parseArray踩坑
  2. HTML中的图片如何自适应屏幕?这篇文章有图片的自适应用法介绍
  3. Android5.0录屏
  4. okhttp3与okhttp的区别
  5. iOS动画 Masonry约束弹框动画animateWithDuration:
  6. 恒定帧率30帧以上录制掉帧问题分析
  7. Smartbi自定义生成报表-制作流程
  8. spss分析方法-多个独立样本检验(转载)
  9. qsort的基本用法
  10. STL快速入门学习教程之map的简单使用