php - 为什么我不能 str_replace?

标签 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!";

最佳答案

使用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

关于php - 为什么我不能 str_replace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347787/

相关文章:

php - 使用 MpAndroid 库库从 MYSQL 获取的数据在 android 上创建图表

PHP 将memberid 与目录匹配

javascript - 循环播放视频并在每次播放后刷新

python - tf.contrib.signal.stft 返回一个空矩阵

php - 进行预赛以获取总数之间的总和||和\\n |}

php - jQuery AJAX 加载两次

android - 在android中使用ffmpeg时出现乱码

video - ffmpeg:结合 filter_complex 修剪、叠加和连接

PHP 函数使用抓取方法获取远程站点上 <DIV> 内的所有链接

php - preg_match 用于 mysql 日期格式