2

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

更新 - 以下の回答

4

3 に答える 3

3

コマンドラインで -formats フラグを使用して、どのフォーマットがインストールされているかを確認できるはずです。

ffmpeg -formats

これにより、利用可能なコーデックの長いリストが出力されます。

于 2012-11-10T03:04:35.307 に答える
1

答え:

exec($ffmpegPath." -codecs", $codecArr);
for($ii=0,$ii<count($codecArr);$ii++){
    echo $codecArr[$ii];
}
于 2012-11-19T01:02:37.973 に答える
0

ffmpeg バージョン 0.8 以降は

$ ffmpeg -codecs

古いバージョンを使用している場合

$ ffmpeg -formats

その他の ffmpeg オプション構文の変更もあります。たとえば、-vcodes は ffmpeg 0.9 以降の -c:v です。

ビデオを MP4、WEBM、または OGG 形式に変換するために、php ライブラリhtml5-video-phpも参照したことがあるかもしれません。ライブラリは ffmpeg をラップし、さまざまな ffmpeg バージョンを考慮します。使用可能なすべてのコーデックを一覧表示し、基本的なビデオ情報を取得するには、次を使用します。

$html5video = new Html5Video\Html5Vide();
$codecsList = $html5video->getEncoders();
$videoInfo = $html5video->getInfo($src);
于 2013-08-09T04:20:41.360 に答える