我想使用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播放器所看到的。
我在这里错过了什么?
转码每个请求是一件可怕的事情。您应该对上传进行转码,并缓存结果。这就是YouTube所做的。 –
我会这样做,但我试图从我的网络电视调谐器转码实况电视流。 – kd0hdf
你为什么试图用PHP来做到这一点?只需使用Adobe Flash Media Encoder(或许可像ManyCam这样的其他软件播放视频文件),然后将其流式传输到流媒体服务器或制作一个。 –