【发布时间】:2019-04-05 01:37:12
【问题描述】:
我正在尝试将我服务器上的视频从 .webm 转换为 .mp4。
shell_exec('ffmpeg -i file.webm output.mp4');
但是,这会导致 mp4 为空(0 字节 - 或者,有时非常奇怪的是 28 字节。)输入文件存在,并且为 45MB。
This answer 建议显式复制输入编解码器,但结果相同。
shell_exec('ffmpeg -i file.webm -vcodec copy -acodec-copy output.mp4');
我做错了什么?
[ ===== 编辑 ===== ]
在尝试了更多的东西之后,受到 cmets 的启发,我仍然不喜欢转换为 MP4。
看来我正在运行 FFMPEG v.2.8.15。这似乎比当前版本的 4~ 低了很多,但是我大约一周前才安装了这个,所以我不确定为什么会这样,我不知道如何更新它(我在WHM 面板。)
无论如何,我的问题与路径无关,因为如果我将 .mp4 更改为 .webm,相同的命令可以正常工作 - 我得到一个成功转换的 .webm 文件。
但是当我跑步时:
$foo = shell_exec('ffmpeg -i file.webm -vcodec copy -acodec copy output3.mp4 -report');
...我得到this FFMPEG log output。
我也试过了:
shell_exec('ffmpeg -fflags +genpts -i file.webm -r 24 KKK.mp4 -report');
...来自this answer,和
shell_exec('ffmpeg -i file.webm -c:v copy III.mp4');
...来自this article。
两者都会导致相同的问题,即 0 字节的 .mp4 文件。
【问题讨论】:
-
您需要显示来自
ffmpeg命令的完整日志。两者都行。 -
在没有 shell_exec 的终端上运行时的输出是什么?
-
-acodec -copy不是-acodec-copy。最好确保您还拥有最新的 ffmpeg 并使用更新的语法:-c:v copy-c:a copy -
对不起,上面的错字:我会再试一次:
-acodec copy而不是-acodec-copy。最好确保您还拥有最新的 ffmpeg 并使用更新的语法:-c:v copy-c:a copy -
您可能需要指定文件的完整路径,可能还需要指定可执行文件。