PHP - FFMPEG - 无法在媒体输出上应用多个正则表达式

时间:2012-04-07 02:28:22

标签: php regex ffmpeg

我正在编写一个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();
?>

1 个答案:

答案 0 :(得分:1)

您是否可以使用库来提取信息而不是命令行工具输出上的正则表达式?例如,ffmpeg-php