FFMPEG PHP - 将 gif 转换为 mpeg
Posted
技术标签:
【中文标题】FFMPEG PHP - 将 gif 转换为 mpeg【英文标题】:FFMPEG PHP - Converting gif to mpeg 【发布时间】:2014-10-09 12:26:07 【问题描述】:我想创建一个使用 FFMPEG php 将 gif 转换为 mpeg 的简单脚本。该脚本在终端中使用 FFMPEG 时有效。当我使用 FFMEG PHP 的类似脚本并将其托管在我的域上时,该脚本将 gif 转换为 mpeg,但仅转换其中的一帧。这很奇怪,因为负责转换的 FFMPEG 代码行本质上与之前在终端中使用的代码行相同。我已经确保我的网络主机(cirtex)在他们的服务器中安装了 FFMPEG。此外,我确保编辑我的 php.ini 文件以供 FFMPEG 使用。
我创建的脚本由两部分组成 - uploader.php 和 uploader_02.php。
uploader.php 是一个简单的提交表单,用户上传并提交一个 gif。
uploader_02.php 接收 gif 并将其复制到服务器上的另一个目录。然后,该脚本将 FFMPEG 转换应用于保存的 gif。
这是负责转换的 php 行:
<?php
// ffmpeg
$ffmpeg = "/usr/bin/ffmpeg";
$videoFile = "test_videos/" . $name;
$output = "test_videos/instagram.mpg";
$cmd = "$ffmpeg -i $videoFile -vb 5M -y $output";
exec($cmd);
?>
由于某种原因,只有一帧 gif 被转换为 mpeg 格式。不知道是什么导致了这个问题。
有关此问题的任何信息都会有很大帮助。
【问题讨论】:
【参考方案1】:根据网上人们的说法,完成此任务的最佳方法是使用 imagemagic 将 gif 转换为一系列图像,然后使用 FFMPEG 将其重新组合在一起
exec('convert test.gif test%05d.jpg');
exec('ffmpeg -r 5 -i test%05d.jpg -y -an test.mpg');
这是与此问题相关的另一个问题Animated gif to avi on linux
不过,我可以看到帧之间的时间问题。
【讨论】:
以上是关于FFMPEG PHP - 将 gif 转换为 mpeg的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中将 GIF 转换为 mp4 视频?
PHP FFMPEG - 将.mov转换为.mp4(H264)