【问题标题】:Issue in converting .mov to .mp4 php将 .mov 转换为 .mp4 php 的问题
【发布时间】:2015-01-16 11:58:26
【问题描述】:

我正在尝试将扩展名为 .mov 的视频转换为 .mp4 格式。以下是我尝试使用的命令

$file_name = "abc.mov";

$mp4_file  = "abc.mp4";

$cmd = 'sudo /usr/bin/ffmpeg -i /path_to_file' . $file_name . ' -strict experimental -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -preset slower -crf 18 -vf "scale=trunc(in_w/2)*2:trunc(in_h/2)*2" /destination_path/' . $mp4_file;
exec($cmd, $out, $res);

但是没有创建所需的文件(带有 .mp4 )。当我复制命令并将其粘贴到终端中时,将创建具有所需格式的文件。但是,在我的 php 代码中,同样不适用于 exec 命令。

我无法找出问题的实际原因,因为它看起来很奇怪。任何帮助将不胜感激。提前致谢

【问题讨论】:

  • 您检查过exec()s 的返回值是否有错误消息?
  • user 尝试exec 命令可能没有使用sudo 命令的权限。
  • 即使我在没有 sudo 命令的情况下这样做,它仍然不起作用。 exec 命令也没有返回任何内容。
  • 另请注意,它只发生在 .mov 而不是其他文件类型
  • /path_to_file' . $file_name 你确定你没有在这里错过/ 吗?我知道这只是一个例子,但是在这里,如果$file_name 只包含没有路径的文件名,则串联将无效。

标签: php video ffmpeg exec


【解决方案1】:

尝试在 exec 的末尾添加一个 '2&>1' 吗?

【讨论】:

    【解决方案2】:

    使用此代码对我有用 :)

    ffmpeg -i input.mov -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -preset slow -crf 22 -movflags +faststart output.mp4
    

    希望对你有所帮助。

    【讨论】:

    • 那里没有代码,这只是 ffmpeg 的命令行调用,正如 OP 所说,它适用于他。是从 PHP 调用 exec 并没有产生预期的结果。
    • 您可以尝试使用 system() 而不是 exec()。
    • 系统执行外部程序并显示输出...这并不等同于 exec。向用户显示 ffmpeg 的输出通常是不可取的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2017-09-26
    • 2014-06-15
    • 2016-05-19
    • 1970-01-01
    • 2013-09-29
    • 2012-01-18
    相关资源
    最近更新 更多