我正在使用Aruba.it管理的共享服务器 它使用
ffmpeg version 4.1
built with gcc 4.8.5
(GCC) 20150623
(Red Hat 4.8.5-36)
我需要使用ffmpeg将任何上传的MP3的响度固定为-12 dB LUFS -1 dB TP
我在互联网上发现以下命令,但未生成任何输出。mp3
PHP
exec("/usr/bin/ffmpeg -i Temp.mp3 -af loudnorm=I=-12:LRA=7:tp=-2:measured_I=-30:measured_LRA=1.1:measured_tp=-11 04:measured_thresh=-40.21:offset=-0.47 -y output.mp3");
请问我在哪里错了?
编辑 没有返回任何错误。
答案 0 :(得分:1)
如果您手动运行它,并且没有在终端中编写脚本,则会出现错误:
Unable to find a suitable output format for '04:measured_thresh=-40.21:offset=-0.47'
04:measured_thresh=-40.21:offset=-0.47: Invalid argument
您的命令中有错误的空格,因此请将measured_tp=-11 04
更改为measured_tp=-11.04
。
答案 1 :(得分:1)
根据@llogan的建议,我找到了解决方案。 它应该分三步进行,而不仅仅是一步。 就我而言,MP3到MP3无效。 所以我将输入的MP3转换为wave,对其进行归一化,然后转换回MP3
exec("/usr/bin/ffmpeg -i Temp.mp3 Temp.wav");
exec("/usr/bin/ffmpeg -i Temp.wav -af loudnorm=I=-12:LRA=7:tp=-2:measured_I=-30:measured_LRA=1.1:measured_tp=-11.04:measured_thresh=-40.21:offset=-0.47 output.wav");
exec("/usr/bin/ffmpeg -i output.wav -ab 320k output.mp3");
此解决方案效果很好
答案 2 :(得分:0)
与shell_exe
或exec
配合使用:
$output = shell_exec('/usr/bin/ffmpeg -i Temp.mp3 -af loudnorm=I=-12:LRA=7:tp=-2:measured_I=-30:measured_LRA=1.1:measured_tp=-11 04:measured_thresh=-40.21:offset=-0.47 -y output.mp 2>&1');
2 refers to the second file descriptor of the process, i.e. stderr.
> means redirection.
&1 means the target of the redirection should be the same location as the first file descriptor, i.e. stdout.
您将在$output
中得到答复。如果apache用户www-data
没有足够的权限,请以sudo