【问题标题】:what is ffmpeg exit code 2? and also output error array is empty and not working in php什么是 ffmpeg 退出代码 2?并且输出错误数组为空并且在php中不起作用
【发布时间】:2019-06-15 01:45:07
【问题描述】:

我使用 ffmpeg 将比特率转换为 128 但在 php 中不起作用

 exec("ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output().mp3 2>&1", 
 $output, $exit_code);
 if ($exit_code!= 0) {
    $data['message'][] = "Error";
 }

 print_r($output);
 print_r($exit_code);
 exit;

运行此代码后显示错误代码 2。 输出是一个空数组,exit_code 也是 2 并且不创建 output.mp3 文件。

我已经研究过How can I find out what this ffmpeg error code means?,但这不是我的问题,也不要解释错误代码 2 或错误代码 2 未定义。我的问题是不显示任何错误并且错误消息是空的,只是 exit_code show 2 这意味着发生了一些错误。

【问题讨论】:

  • 尝试在终端中手动运行此命令并检查输出。
  • @Alex 感谢我尝试但不起作用的回复。
  • 不工作 - 那里的错误信息是什么?
  • 在终端手动运行ffmpeg时没有empty array这样的错误信息
  • @Alex 感谢您帮助在终端中运行原始代码并了解发生了什么。意外标记 `(' 附近的语法错误。在我的代码输出中有 () 并且在 PHP 中显示空数组在终端中运行后显示上述错误非常感谢。

标签: php ffmpeg


【解决方案1】:

意外标记 `(' 附近的语法错误

您需要转义括号,因为它们是特殊字符:

exec("ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k 'output().mp3' 2>&1",

exec("ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output\(\).mp3 2>&1",

另见FFmpeg: Quoting & Escaping

这不完全是 PHP 问题,因此请始终确保您的 ffmpeg 命令在尝试编写脚本之前运行。 (这确实会减少这里的问题数量。)

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多