首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过PHP proc_open调用FFmpeg总是导致输出被发送到标准错误而不是标准错误

通过PHP的proc_open函数调用FFmpeg时,如果输出被发送到标准错误而不是标准输出,可能是由于FFmpeg的输出流被错误地重定向到了标准错误流。为了解决这个问题,可以在调用proc_open函数时,通过设置参数来正确地重定向FFmpeg的输出流。

以下是一个示例代码,展示了如何正确地调用FFmpeg并将输出发送到标准输出:

代码语言:txt
复制
$descriptors = [
    0 => ['pipe', 'r'], // 标准输入
    1 => ['pipe', 'w'], // 标准输出
    2 => ['pipe', 'w'], // 标准错误
];

$process = proc_open('ffmpeg -i input.mp4 output.mp4', $descriptors, $pipes);

if (is_resource($process)) {
    // 读取标准输出
    $output = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    // 读取标准错误
    $error = stream_get_contents($pipes[2]);
    fclose($pipes[2]);

    // 等待进程结束
    $status = proc_close($process);

    if ($status === 0) {
        // 执行成功
        echo "FFmpeg执行成功!";
        echo "输出:".$output;
    } else {
        // 执行失败
        echo "FFmpeg执行失败!";
        echo "错误信息:".$error;
    }
}

在上述代码中,我们通过设置proc_open函数的参数来创建了一个子进程,并将FFmpeg的输出流重定向到标准输出流。然后,我们可以通过stream_get_contents函数读取标准输出和标准错误的内容,并根据进程的返回值判断FFmpeg的执行结果。

请注意,上述代码仅为示例,实际使用时需要根据具体情况进行适当的修改和错误处理。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云音视频处理(MPS)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可用于部署和运行各种应用程序和服务。详情请参考:腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于存储和管理各种类型的数据。详情请参考:腾讯云对象存储
  • 腾讯云音视频处理(MPS):提供丰富的音视频处理功能,包括转码、截图、水印、音视频合成等,可满足多种音视频处理需求。详情请参考:腾讯云音视频处理
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券