如何使用 php 从图像创建视频?
Posted
技术标签:
【中文标题】如何使用 php 从图像创建视频?【英文标题】:How to create videos from images with php? 【发布时间】:2012-03-05 08:18:22 【问题描述】:假设我有 10 张图片,我想将这些图片组合成一个视频,例如幻灯片。
例如,我想将每个图像显示 5 秒钟,然后再继续显示下一张图像 5 秒钟。
如果可能的话,最好包含音乐和一些描述性文字。
ffmpeg 库中是否有此示例代码?
【问题讨论】:
【参考方案1】:我的第一个想法是使用类似这样的东西来使用 ffmpeg 命令。
从图像创建视频
ffmpeg 可用于将多个图像拼接成一个视频。 有很多选择,但是下面的例子应该足够了 开始吧。它需要所有具有文件名的图像 XXXXXX.morph.jpg,其中 X 是数字,并创建一个名为 “输出.mp4”。 qscale 选项指定图片质量(1 是 最高,32 最低),“-r”选项用于 指定每秒的帧数。
ffmpeg -r 25 -qscale 2 -i %05d.morph.jpg output.mp4
(获取此简介的网站已消失。链接 已被删除。)
其中 25 表示每秒 25 张图像。您可以将其设置为 1 以实现轻微(1 秒)延迟或使用小数,即:0.5 以延迟 2 秒。
然后您可以将视频和音频流与类似的东西结合起来。
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -b:a 128k final.mp4
当然要选择合适的编解码器。如果您想要一个 mp4,则将 libx264 用于视频,将 aac(内置于 ffmpeg,不再“实验性”)用于音频。
请记住,如果您选择使用这样的方法,则 ffmpeg 输出默认情况下会发送到 stderr 以供您尝试读取它。如果您愿意,可以将其重定向到标准输出。
【讨论】:
好的,所以我们可以选择每秒帧数,但这是否意味着我们可以通过提高 fps 来确定视频的持续时间?例如,如果 25 fps 是 1 秒。使用ffmpeg -r 250
是否意味着每张图像需要 10 秒?
不,它将每秒使用 25 张图像。 25 只是复制/粘贴示例。尝试将其设置为 1 甚至 0.5 并暂停 2 秒。我也将此信息添加到帖子中。
@AdilMalik 我删除了链接,这实际上只是为了提供内容的来源。该帖子仍然包含完成任务的相关信息。还做了一些小的内容更新,因为这有点过时了。【参考方案2】:
我首先想到的是imagemagick。我已经将它与 php 一起用于大量图像处理,我知道它支持读取相当数量的视频格式,并且根据该链接,它也支持写入一些格式。
【讨论】:
imagick 需要 ffmpeg 所以基本上使用 php 进行视频处理没有优势...【参考方案3】:是的,ffmpeg 是适合您的解决方案。我最近做了一些类似的东西——一个带有动画缩略图的视频网站。我使用 ffmpeg 将图像放在一个氨基化的 gif 中。然而,输出可以是你需要的任何东西......不幸的是,在我搜索这个主题时,我没有找到任何可以结合你所追求的所有点的示例代码,所以我想你将不得不手动尝试使用 ffmpeg.. . 在我的项目中,我在某些部分使用了 php 视频工具包http://sourceforge.net/projects/phpvideotoolkit/ 以使其更容易...
【讨论】:
【参考方案4】:你可以在 ffmpeg 中使用混合效果:
ffmpeg -framerate 20 \
-loop 1 -t 0.5 -i 1.jpg \
-loop 1 -t 0.5 -i 2.jpg \
-loop 1 -t 0.5 -i 3.jpg \
-loop 1 -t 0.5 -i 4.jpg \
-c:v libx264 \
-filter_complex " \
[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
[2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
[3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
[0:v][b1v][1:v][b2v][2:v][b3v][3:v]concat=n=7:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4
你应该查看下面的链接以获得更多 ffmpeg 的效果:D
https://github.com/letungit90/ffmpeg_memo
【讨论】:
以上是关于如何使用 php 从图像创建视频?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Gstreamer 从 PNG 图像创建 mp4 视频文件