PHP无法直接转MP4,因其是文本脚本而非视频数据;所谓“转换”实为调用ffmpeg等工具生成视频,PHP仅作调度,需服务器支持及正确配置HTTP头。
PHP 是服务器端脚本语言,不能“转成 MP4”—
—MP4 是视频容器格式,而 PHP 文件是纯文本代码。所谓“PHP 转 MP4”,实际是用户混淆了概念:可能是想把 php 后缀的文件当视频打开、误传了文件、或想用 PHP 生成/处理视频(比如调用 ffmpeg 输出 MP4)。
PHP 文件本质是可执行文本,不含音视频帧数据;浏览器或播放器根本无法解析它为视频。强行改后缀(如把 script.php 改成 script.mp4)只会导致打不开,或报错 Invalid data found when processing input(ffmpeg 常见错误)。
exec('ffmpeg -i ...'),那真正生成 MP4 的是 ffmpeg,不是 PHP典型场景:PHP 接收参数,用 ffmpeg 合成视频并返回。这需要服务端环境支持,且不能靠“在线工具”完成。
关键前提:
ffmpeg,且 PHP 允许执行系统命令(exec / shell_exec 未被禁用)header('Content-Type: video/mp4');
header('Content-Disposition: attachment; filename="output.mp4"');
readfile('/tmp/output.mp4');
检查该 URL 实际返回什么:
ftypmp4(MP4 文件签名),说明后端确实在输出视频,但可能被 PHP 解析错误(例如 Apache 未配置好 .mp4 MIME 类型,或 PHP 输出了额外空格)output_buffering,或改用 fpassthru() 直接输出文件流真正的视频生成逻辑永远在 FFmpeg、MoviePy 或硬件编码器里,PHP 只是调度员。别找“PHP 转 MP4 工具”,去找怎么让 ffmpeg 在你的环境下安静跑完命令——那才是问题核心。