メディア ファイルのディレクトリを循環し、チャートにメディア情報を表示するために、php スクリプト (php を使用する必要があります) を作成しています。
現在、1つのファイルで実行しようとしています。
私は成功することができます。現在、出力を(正規表現を使用して)解析して、ファイル名、期間、解像度などの情報を取得できます
正規表現を組み合わせてより効率的にできると言われました。
ただし、そうすると、ffmpeg の出力を正しく解析できません。
その結果、出力を文字列にコピーして、複数の式を使用して解析しようとしましたが、うまくいきました。
どんな助けでも大歓迎です。
ありがとう。
作業コード
$media_info = "'test.mkv': Metadata: creation_time : 2011-03-12 09:04:18 Duration: 00:21:44.10, start: 0.000000, bitrate: 500 kb/s Chapter #0.0: start 0.097000, end 1304.107000 Metadata: title : 00:00:00.097 Stream #0:0: Video: h264 (High), yuv420p, 720x400 [SAR 80:81 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) Stream #0:1: Audio: aac, 48000 Hz, stereo, s16 (default) At least one output file must be specified";
$file = array();
$file_test = preg_match_all("/'([a-zA-Z0-9\._]*\.[a-zA-Z0-9]*)'.* Duration: ([0-9]{2,}:[0-9]{2}:[0-9]{2}\.[0-9]*)/", $media_info, $file);;
var_dump($file)
動作しないコード
ob_start();
passthru("C:\\wamp\\www\\ffmpeg\\bin\\ffmpeg.exe -i \"{$videofile}\" 2>&1");
$raw_data = ob_get_contents();
ob_end_clean();
$ffmpeg_info = explode("from", $raw_data);
$media_info = $ffmpeg_info[1];
$file = array();
$file_test = preg_match_all("/'([a-zA-Z0-9\._]*\.[a-zA-Z0-9]*)'.* Duration: ([0-9]{2,}:[0-9]{2}:[0-9]{2}\.[0-9]*)/", $media_info, $file);;
var_dump($file)
新しいコード
ffmpeg-php 拡張機能を使ってみたところ、以下のように動作しました(ビットレートの表示以外は)
$movie = new ffmpeg_movie($video_file);
echo $movie->getFilename();
echo "<br/>" ;
echo $movie->getDuration();
echo "<br/>" ;
echo $movie->getFrameWidth();
echo "x";
echo $movie->getFrameHeight();
echo "<br/>" ;
echo $movie->getBitRate();
echo "<br/>" ;
echo $movie->getVideoBitRate();
echo "<br/>" ;
echo $movie->getAudioBitRate();
echo "<br/>" ;
echo $movie->getVideoCodec();
echo "<br/>" ;
echo $movie->getAudioCodec();
?>