为什么我不能str_replace?

时间:2014-01-25 07:10:46

标签: php ffmpeg preg-match str-replace

我正在尝试仅抓取视频文件的持续时间。

我将使用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!";

1 个答案:

答案 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