我正在尝试使用ffmpeg将mpeg2流转码为x264 flv流,并将其通过php传递给flash播放器。我的ffmpeg命令在命令行中工作正常,但当我将它包装在php的passthru()
函数中时,php不会输出任何内容(来自浏览器或我正在使用的flash播放器)。
我的代码是:
header('Content-type: video/x-flv');
passthru('ffmpeg -y -i http://192.168.0.199:5004/auto/v10 -threads 0 -f flv -vf yadif,scale="iw/2*sar:ih/2" -pix_fmt yuv420p -c:v libx264 -preset:v ultrafast -b:v 1000k -c:a libmp3lame -ac 2 -b:a 32k -ar 11025 -strict -2 /dev/stdout 2>/dev/null');`
当我使用php -f test.php
从命令行运行php文件或从命令行运行ffmpeg
命令时,这是有效的。在浏览器中,标题被发送,但没有别的,我假设这也是Flash播放器也看到的。
我在这里缺少什么?
答案 0 :(得分:1)
好的,所以我终于发现这里出了什么问题,ffmpeg不在www-data用户的路径中,所以我在命令中包含了ffmpeg的路径,现在它可以了!我也喜欢使用ffserver的建议,而不是使用php来做这个,我现在正在努力实现它。
答案 1 :(得分:0)
由于您尝试直接提供项目,因此最好使用ffmpeg服务器。以下是有关如何执行此操作的详细说明的链接: http://www.area536.com/projects/streaming-video/ 希望有效, 〜techdude