You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否向FFmpeg传入PHP文件以处理并输出视频?

解决方法

方法1:通过PHP CLI管道输出给FFmpeg

直接让PHP执行脚本并把输出通过管道传给FFmpeg,这是本地处理效率最高的方式:

php /path/to/your-video-script.php | ffmpeg -i pipe:0 -c copy output.mp4

关键注意事项:

  • 你的PHP脚本必须输出纯视频二进制数据,不能包含任何额外内容(比如调试echo、PHP错误信息)。可以在脚本开头加上:
    <?php
    error_reporting(0); // 关闭错误输出
    ob_clean(); // 清空输出缓冲区
    flush(); // 刷新缓冲区
    // 这里写你的视频输出逻辑,比如读取视频文件后echo,或者生成视频流
    readfile('/path/to/source-video.mp4');
    ?>
    
  • pipe:0告诉FFmpeg从标准输入读取视频流,后面的参数可以根据你的需求调整(比如转码、剪辑等)。

方法2:通过HTTP请求让FFmpeg获取PHP处理后的流

如果你的PHP脚本已经部署在Web服务器上(能通过URL访问并输出视频),可以直接让FFmpeg请求这个URL:

ffmpeg -i http://your-domain.com/your-video-script.php -c copy output.mp4

这种方式和你在浏览器访问PHP脚本获取视频的逻辑一致,Web服务器会先执行PHP脚本,再把输出的视频流返回给FFmpeg。

修复你的Bash脚本方案

如果你之前尝试的Bash脚本没成功,可能是写法或权限问题,正确的Bash脚本示例:

  1. 创建脚本run-php-video.sh:
#!/bin/bash
# 直接执行PHP脚本,确保路径正确
php /path/to/your-video-script.php
  1. 给脚本添加执行权限:
chmod +x run-php-video.sh
  1. 用管道或进程替换传给FFmpeg:
# 管道方式
./run-php-video.sh | ffmpeg -i pipe:0 -c copy output.mp4

# 进程替换方式(部分Shell支持,比如Bash)
ffmpeg -i <(./run-php-video.sh) -c copy output.mp4

排查要点

如果还是失败,检查:

  • 单独执行php /path/to/your-video-script.php > test.mp4,看生成的test.mp4是否能正常播放,排除PHP脚本输出问题。
  • 确保FFmpeg支持你输出的视频格式,比如如果是自定义编码,可能需要指定解码器。

内容的提问来源于stack exchange,提问作者cantsay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:25:09