使用ffmpeg和nginx-rtmp模块将H264流转码为mpeg2

时间:2014-07-09 14:32:49

标签: nginx air ffmpeg video-streaming rtmp

我正在使用nginix web服务器和nginx-rtmp模块来管理我在h264中编码的视频流。这是我的nginx conf:

rtmp {
server {
    listen 1935;

    application big {
        live on;

    exec ffmpeg -re -i rtmp://localhost:1935/$app/$name -vcodec 
         libx264 -vprofile baseline -acodec libvo_aacenc -ac 1 -ar 441000 
         -f flv rtmp://localhost:1935/hls/${name};
      }
   }

   application hls
   {
      live on;
      hls_path /usr/local/nginx/html/video;
   }
}

它在浏览器中运行良好,但是因为我的移动客户端是Adobe Air,它只适用于Android而不适用于Apple,因为Apple不支持通过AIR应用程序进行H264编码,因此我尝试将流转码为支持的内容例如mpeg。这就是我改变我的ffmpeg的方式:

    exec ffmpeg -re -i rtmp://localhost:1935/$app/$name -vcodec 
         mpeg2video -acodec copy -b:v 10M -b:a 128k 
         -f mpegts rtmp://localhost:1935/hls/${name};

然而,它不会在浏览器或设备上显示视频,我的假设是它可能无法转码。

也许我错过了什么?任何想法都受到高度赞赏。 谢谢。

1 个答案:

答案 0 :(得分:0)

你可能已经得到了答案,但以防万一:

您没有正确使用该模块, 1)在iOS上,您需要将浏览器指向http://localhost:80/hls/ $ {name}以获取HLS流。 2)您在配置中缺少http部分以生成HLS流

详情请见此处:How can we transcode live rtmp stream to live hls stream using ffmpeg?