ffmpeg:如何获取PHP的可用编解码器列表?

时间:2012-11-10 02:25:29

标签: php ffmpeg codec

问题是,我正在尝试将.3gp(或任何视频格式)文件转换(通过php)到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可用的编解码器?它甚至可以完成吗?

更新 - 以下答案

3 个答案:

答案 0 :(得分:3)

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

ffmpeg -formats

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

答案 1 :(得分:1)

解答:

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

答案 2 :(得分:0)

由于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);