参赛作品
最近,人们比浏览照片更愿意在社交网络上观看视频。 Storis在Instagram上获得的观看次数比仅是一张照片要多3-4倍。
当然,我们不会忘记社交网络不仅要展示自己,结识其他人,而且还要宣传他们的商品,服务等。 我们长期以来一直学习如何从VKontakte网站上发布新发布的新闻。 但是,如果我们走得更远呢? 如果您以视频形式提交此信息怎么办? 还是在Instagram上上传有趣的视频故事来吸引更多观众关注?
因此,我想到了创建一个库的想法,该库使我可以从这些对象的照片,文本和动画创建简短的视频。 是的,有人可以说已经有一些服务可以让您做到这一点,为什么还要拿出自行车呢? 首先-我想要,其次-我可以,第三-它是免费的。
本文介绍如何使用该库,如何使用PHP创建自己的故事。
局限性
应该立即说,该库使用FFmpeg生成最终的视频文件。 FFmpeg必须安装在服务器上。 也许将来会有一个将故事生成为gif文件的选项,但是对我自己来说,由于工作,我选择了视频文件。
准备工作
该库是通过作曲家安装的
composer require borodin-vasiliy/php-stories
建立故事
现在该创造自己的故事了。 例如,我们希望看到一只小猫的背景照片,该照片在整个故事中显得更近一些,并在其上显示2个带有外观动画的文本。 容易!
如您所见,所有参数都作为数组传递。 目前,您可以更改:
- “宽度”-Storis宽度(以像素为单位)
- “高度”-高度(以像素为单位)
- “持续时间”-持续时间(以秒为单位)
- “ Fps”-每秒的帧数,根据标准-30
接下来,我们需要在未来的故事中添加3个对象(图片和2个文本)。 目前,该库允许您添加4种类型的不同对象-图片,文本,椭圆,矩形。 每个对象都有其自己的方法,该方法的参数是所添加对象的参数数组。
对象具有相同的参数:
- “顶部”-从故事顶部开始的对象位置
- “左”-元素从故事左边缘开始的位置
- “不透明度”-透明度,如CSS [0 ... 1]
- “旋转”-对象的旋转角度[0 ... 359]
- “ Z-index”-一层,就像CSS中的z-index一样-越大,该层在框架元素上的位置越高
- “开始”-将项目添加到故事中的第二个时间
- “结束”-应从故事中删除该项目的第二个时间
对于每种类型的对象(例如图片)而言,都是如此独特:
- “路径”-我们要添加图像的路径
- “比例”-图像尺寸乘数(近似值)
做完了! 如果现在产生一个故事,那么我们将在5秒钟内欣赏这只猫。 但是我保证会有动画,让我们添加它。
使用单独的方法添加对象的动画,该方法的参数是对象应到达的参数数组。 一个对象的动画可以是任意数量。 值得一提的是,该库的语法暗含了Fluent接口的使用。
您可能已经注意到,addAnimation方法用于添加动画。 动画所需的参数:
- “开始”-动画应该开始的第二个时间。 如果未设置,则在添加对象时动画将开始。
- “持续时间”-动画的持续时间(以秒为单位)
动画可以影响的参数数组:
- “顶部”
- “左”
- “不透明度”
- “旋转”
- “比例”
- “宽度”
- “身高”
文本具有其自己的唯一参数:
- “文本”-您要显示的文本-必填
- “路径”-字体(.ttf)的路径-必需
- “大小”-字体大小
- “颜色”-颜色,例如“ #ffffff”
- “宽度”-文本块的宽度,如果设置,则文本将自动分成几行
- “对齐”-文本对齐[左,中,右]
- “影子”是一个影子
阴影也是参数数组:
- “颜色”-阴影的颜色
- “顶部”-从上方缩进
- “左”-左边界
故事产生 $file_hash = $stories->generate("/tmp");
结果,我们获得了作为参数传递的临时文件夹中文件的名称。
工作成果

值得一提的是,创建故事的速度不是很好,在一台好的计算机上,一分钟的时间会生成5秒的剪辑,而在一台简单的服务器上会生成3分钟以上的剪辑。
发展计划
- 添加标准动画脚本以减少代码
- 文字动画(逐行显示等)
- 文本的背景。
我希望有人会觉得这个库有用。 我很高兴听到职能部门的批评和希望。
Git仓库