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的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG PHP - 将 gif 转换为 mpeg

如何在 Flutter 中将 GIF 转换为 mp4 视频?

从gif转换的mp4没有在网络浏览器中显示

PHP FFMPEG - 将.mov转换为.mp4(H264)

在 php 中通过 ffmpeg 命令将 avi 文件转换为 mp4 文件

FFMPEG视频转换问题