我正在尝试仅抓取视频文件的持续时间。
我将使用ffmpeg获取任意长度视频文件的10个缩略图。 为此,我需要找出持续时间,然后除以10.做ffmpeg。
结果相同。 str_replace不起作用。 结果:
b: [FORMAT] duration=6.048000 [/FORMAT]
bb: [FORMAT] duration=6.048000 [/FORMAT]
bbbb: [FORMAT] duration=6.048000 [/FORMAT]
$_b = array(shell_exec("C:\\ffmpeg\\bin\\ffprobe -v quiet -v fatal -show_format_entry duration $videoFile"));
$b = $_b[0];
echo "b: " .$b . "<br/>";
$bb = str_replace("[FORMAT] duration=","",$b);
echo "bb: " .$bb . "<br/>";
$bbbb = str_replace(" [/FORMAT]", "", $bb);
echo "bbbb: " .$bbbb . "<br/>";
//var partsArray = coolVar.split('-');
for($num=1; $num<=3; $num++)
{
$interval=$num*3;
shell_exec("$ffmpeg -i $videoFile -an -ss $interval -s $size $num.jpg");
echo "Thumbnail Created........! - $num.jpg <br />";
}
echo "<br / >$num thumbnails Created!";
答案 0 :(得分:3)
改为使用preg_match_all()
:
preg_match_all('~(\w+):.*?duration=([\d.]+).*~', $data, $matches);
要显示它,您可以使用循环:
for ($i=0; $i < count($matches); $i++) {
echo $matches[1][$i]. ' : ' . $matches[2][$i] . PHP_EOL;
}
输出:
b : 6.048000
bb : 6.048000
bbbb : 6.048000