2013-12-14 62 views
1

我想使用ffmpeg将mpeg2流转码成x264 flv流,并通过php传递给flash播放器。我的ffmpeg命令在命令行下工作正常,但是当我将它包装在php的passthru()函数中时,php不会输出任何内容(来自浏览器或我正在使用的Flash Player)。PHP ffmpeg flv流Passthru

我的代码是:

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

转码每个请求是一件可怕的事情。您应该对上传进行转码,并缓存结果。这就是YouTube所做的。 –

+0

我会这样做,但我试图从我的网络电视调谐器转码实况电视流。 – kd0hdf

+0

你为什么试图用PHP来做到这一点?只需使用Adobe Flash Media Encoder(或许可像ManyCam这样的其他软件播放视频文件),然后将其流式传输到流媒体服务器或制作一个。 –

回答

1

好了,我终于找到了什么事情错在这里,ffmpeg的是不是在WWW的路径-data用户,所以我在我的命令中包含了ffmpeg的路径,现在它可以工作了!我也喜欢使用ffserver的建议,而不是使用php来做到这一点,我现在正在努力实现这一点。