【问题标题】:ffmpeg: How to get list of available codecs with PHP?ffmpeg:如何使用 PHP 获取可用编解码器的列表?
【发布时间】:2013-08-09 12:20:41
【问题描述】:

问题是,我正在尝试(通过 php)将 .3gp(或任何视频格式)文件转换为 ogg。

当我没有指定 -vcodec 和 -acodec 时,视频被转换,但没有任何音频。

我已经阅读了这里和其他需要指定 -acodec libvorbis 的地方,但是,当我将编解码器指定为 libvorbis 时,转换失败:视频转换为 0byte 文件。

基本上,我试图确定指定的编解码器是否实际上是我用来缩小问题范围的 ffmpeg 构建的一部分。

产生无声全长视频的代码:

$srcFile = 'anyvideo.3gp';
$destFile = 'anyvideo.ogg';
$ffmpegPath = 'path/to/ffmpeg.exe';
$ffmpegObj = new ffmpeg_movie($srcFile);
$srcWidth = makeMultipleTwo($ffmpegObj->getFrameWidth()); 
$srcHeight = makeMultipleTwo($ffmpegObj->getFrameHeight());
$srcFPS = $ffmpegObj->getFrameRate(); 
$srcAB = intval($ffmpegObj->getAudioBitRate()/1000);
$srcAR = $ffmpegObj->getAudioSampleRate();
$srcLen = $ffmpegObj->getDuration();

exec($ffmpegPath." -i ".$srcFile." -ar ".$srcAR." -s ".$srcWidth."x".$srcHeight." ". $destFile);

以及产生0byte文件的代码:

exec($ffmpegPath." -i ".$srcFile." -acodec libvorbis -ar ".$srcAR." -s ".$srcWidth."x".$srcHeight." ".$destFile);

所以,我的问题是,如何确定编解码器可用于使用 PHP 的 ffmpeg?还能做到吗?

已更新 - 答案如下

【问题讨论】:

  • 先尝试 ffmpeg 本身,然后在获得有效命令后尝试将其集成到您的 PHP 脚本中。如果 ffmpeg 不起作用,则提供您尝试过的命令和完整的控制台输出。

标签: php ffmpeg codec


【解决方案1】:

您应该能够通过在命令行上使用 -formats 标志来查看安装了哪些格式

ffmpeg -formats

这将输出一长串可用的编解码器。

【讨论】:

  • 我正在寻找你所建议的 php 版本,实际上ffmpeg -codecs 的 php 版本是我所追求的,但是,我给了你一个 +1 作为那些可以访问 ffmpeg通过命令行可能会通过您发布的解决方案获得他们所追求的。
  • ffmpeg 从命令行运行,甚至在 php 内部(查看上面脚本中的 exec(ffpeg) )。你可以做的是 exec($ffmpegPath . " -formats") 它应该给你相同的输出。
  • 我为延迟道歉...当我输入exec($ffmpegPath . " -formats"); 任何建议时,我得到一个空白的 html 窗口?
  • 想通了exec($ffmpegPath." -codecs", $codecArr); for($ii=0;$ii<count($codecArr);$ii++){ echo $codecArr[$ii]; } 会更新。
【解决方案2】:

回答:

exec($ffmpegPath." -codecs", $codecArr);
for($ii=0,$ii<count($codecArr);$ii++){
    echo $codecArr[$ii];
}

【讨论】:

    【解决方案3】:

    从 ffmpeg 0.8 版开始

    $ ffmpeg -codecs
    

    如果您有旧版本,请使用

    $ ffmpeg -formats
    

    还有其他 ffmpeg 选项语法更改。例如。 -vcodes 是 -c:v 从 ffmpeg 0.9 开始。

    您可能还需要查看 php 库 html5-video-php 将您的视频转换为 MP4、WEBM 或 OGG 格式。该库包装了 ffmpeg 并考虑了不同的 ffmpeg 版本。要列出所有可用的编解码器并检索基本视频信息,请使用:

    $html5video = new Html5Video\Html5Vide();
    $codecsList = $html5video->getEncoders();
    $videoInfo = $html5video->getInfo($src);
    

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2011-02-21
      • 2016-11-07
      相关资源
      最近更新 更多