一种在线视频转GIF的方法技术

技术编号:14943716 阅读:40 留言:0更新日期:2017-04-01 10:08
本发明专利技术涉及网页PHP技术领域,特别是一种在线视频转GIF的方法。本发明专利技术的方法是配置PHP环境,创建三个文件夹frames、gif和video;其中frames文件夹存放视频的JPG截图,gif文件夹存放JPG转换成的单帧的N张GIF图片,video文件夹为存放最原始的视频资源和FFMPEG.exe;同时创建三个PHP文件index.php、convert.php和buildGif.php;其中index.php为入口文件,提供用户交互的上传组件和提交按钮,convert.php为后台处理功能文件,buildGif.php是后台引用的具有GIF合成功能的PHP文件。本发明专利技术提供了一种在线视频转GIF的方法。

【技术实现步骤摘要】

本专利技术涉及网页PHP
,特别是一种在线视频转GIF的方法
技术介绍
GIF(GraphicsInterchangeFormat,可交换的图像文件)相比视频而言,有许多优势存在:体积小,易于传播,支持浏览器多,很多论坛签名和聊天表情包都是GIF做的。因此将视频转成GIF成为时下一个热门。PHP:HypertextPreprocessor,超文本预处理器。
技术实现思路
本专利技术解决的技术问题在于提供一种在线视频转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动画。本文档来自技高网...
一种在线视频转GIF的方法

【技术保护点】
一种在线视频转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动画。

【技术特征摘要】
1.一种在线视频转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动画。2.根据权利要求1中所述的方法,其特征在于:所述的以convert.php功能点的实现方法是:(1)、引入buildGif.php并接受来自index.php传来的视频路径参数,用extehsion_loaded函数加载PHP扩展ffmpeg,利用路径参数实例化ffmpeg;(2)、定义一个视频长度的参数$length,单位为秒,内容为floor($ffmpegInstance->getDuration()),取舍去小数点后的整数;利用exec函数启动ffmpeg.exe将视频转换格式成flv格式;(3)、利用一个for循环将flv视频利...

【专利技术属性】
技术研发人员:黄博关班记张远世齐兆勇庞毅何龙泉季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1