我在 php 中有一个视频上传脚本,在其中执行以下命令:
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 ".$folder."/".$filenameOut.".flv 2>&1", $output);
结果flv是正确的。
但是当我使用 mp4 输出执行相同的命令时
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 ".$folder."/".$filenameOut.".mp4 2>&1", $output);
输出有 0 字节。
我也尝试过
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameIn.".mp4 -vcodec libx264 -crf 20 ".$folder."/".$filenameOut.".mp4");
但输出视频仍然有 0 字节。
我不知道为什么。有什么帮助吗?
编辑:
如果我从 mp4 转换为 mkv,mkv 就可以了。如果我得到该 mkv 并重新转换为 mp4,则最终的 mp4 为 0 字节。
例如:
exec("/usr/bin/ffmpeg -i ".$folder."/".$filename." ".$folder."/".$filenameOut.".mkv 2>&1", $output);
exec("/usr/bin/ffmpeg -i ".$folder."/".$filenameOut.".mkv ".$folder."/".$filename.".mp4 2>&1", $output);
在这种情况下,第一个 mp4 有 1210409 字节,生成的 mkv 有 816018 字节,最终 mp4 有 0 字节。 mp4 -> flv -> mp4 也是如此。
答案1
当您发现软件出现问题时,您尝试使用 php 启动,请执行命令并直接在控制台/终端中启动它,并且不要忘记用正确的信息替换所有变量。现在观察发生了什么,如果您无法修复错误,只需复制日志即可,有人可以帮助您
因为ffmpeg
我建议删除这部分2>&1", $output
以查看控制台中发生了什么