exec()中的ffmpeg命令

时间:2014-10-30 11:40:42

标签: php ffmpeg

我不能在exec()

中使用此命令
ffmpeg -i ../uploads/".$row['videoid'].".".$row['van']." -filter_complex \
"[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[vid]" -map "[vid]" -map 0:a \
-codec:v libx264 -crf 18 -preset fast -codec:a aac -strict -2 -b:a 192k ../uploads/mp4sd/".$row['videoid'].".mp4

我如何将它放在exec()中?

这不起作用:

exec(ffmpeg -i ../uploads/".$row['videoid'].".".$row['van']." -filter_complex \
"[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[vid]" -map "[vid]" -map 0:a \
-codec:v libx264 -crf 18 -preset fast -codec:a aac -strict -2 -b:a 192k ../uploads/mp4sd/".$row['videoid'].".mp4);

enter image description here

1 个答案:

答案 0 :(得分:2)

找出问题的方法很少。

  1. 首先直接在命令提示符下运行命令及其参数是否正确。
  2. 如果它在命令提示符下运行正常,它应该工作cli

    1. 然后检查是否安装并启用了exec()命令。

      <?php
      if(function_exists('exec')) {
          echo "exec is installed";
      }
      ?>
      
    2. <?php
      function exec_enabled() {
        $disabled = explode(',', ini_get('disable_functions'));
        return !in_array('exec', $disabled);
      }
      ?>
      
      1. 如果已启用并已安装。第三,您可以在Web中回显命令并复制并通过它cli以确保所有参数在Web中正确传递。
      2. echo "ffmpeg -i ../uploads/".$row['videoid'].".".$row['van']." -filter_complex \
        "[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[vid]" -map "[vid]" -map 0:a \
        -codec:v libx264 -crf 18 -preset fast -codec:a aac -strict -2 -b:a 192k ../uploads/mp4sd/".$row['videoid'].".mp4";
        

        也可以用引号

        来试试
        exec("ffmpeg -i ../uploads/".$row['videoid'].".".$row['van']." -filter_complex \
        "[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[vid]" -map "[vid]" -map 0:a \
        -codec:v libx264 -crf 18 -preset fast -codec:a aac -strict -2 -b:a 192k ../uploads/mp4sd/".$row['videoid'].".mp4");