首页 > 解决方案 > 如何在php中使用系统命令?

问题描述

我正在编写如下所示的 PHP 代码,其中mp4 到 mp3 的转换发生在 Line B

在系统命令后添加了 if 块,以便在转换完成后在网页上打印转换完成 ,但它似乎不起作用。

php代码:

if (isset($_POST['id']))
{
    for($i=0; $i <count($mp4_files); $i++) {
        if($i == $_POST['id']) {
            $f = $mp4_files[$i];
            $parts = pathinfo($f); 
            switch ($parts['extension'])
            {  
            case 'mp4' :
                $filePath = $src_dir . DS . $f;

                print_r($f);  // Line A        

                system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);  // Line B

                if($result)
                {
                    echo "Conversion Completed";
                }

            }
        }
    }
} 

问题陈述:

我想知道我应该在上面的 PHP 代码中进行哪些更改,以便在转换完成后;在网页上,它应该打印Conversion Completed.

标签: phpffmpeg

解决方案


您可以使用shell_exec来获取返回值,然后将其放入这样的 if 语句中

$output = shell_exec('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3');
if ($output) {
   echo "Conversion Completed!";
   // or redirect here
}

此外,请确保在您的输入暴露于 CLI 界面时对其进行清理。


推荐阅读