問題は、(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で利用できるコーデックをどのように判断するのですか? それはできますか?
更新 - 以下の回答