【问题标题】:PHP ffmpeg flv stream PassthruPHP ffmpeg flv 流 Passthru
【发布时间】:2013-12-21 14:39:28
【问题描述】:

我正在尝试使用 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 播放器所看到的。

我在这里错过了什么?

【问题讨论】:

  • 对每个请求进行转码是一件可怕的事情。您应该在上传时转码,并缓存结果。这就是 YouTube 所做的。
  • 我会这样做,但我正在尝试从我的网络电视调谐器转码直播电视流。
  • 您为什么要尝试使用 PHP 来执行此操作?只需使用 Adob​​e Flash Media Encoder(或者可能是 ManyCam 等其他软件来播放视频文件),然后将其流式传输到流媒体服务器,或制作一个。

标签: php ffmpeg


【解决方案1】:

好的,所以我终于发现这里出了什么问题,ffmpeg 不在 www-data 用户的路径中,所以我在命令中包含了 ffmpeg 的路径,现在它可以工作了!我也喜欢使用 ffserver 的建议,而不是使用 php 来执行此操作,我现在正在努力实现它。

【讨论】:

    【解决方案2】:

    由于您尝试直接提供项目,因此最好使用 ffmpeg 服务器。这是一个关于如何做到这一点的精彩描述的链接: http://www.area536.com/projects/streaming-video/ 希望有效, 〜技术老兄

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2010-12-16
      相关资源
      最近更新 更多