NGINX 和 FFMPEG 生成动态自适应流

Posted

技术标签:

【中文标题】NGINX 和 FFMPEG 生成动态自适应流【英文标题】:NGINX and FFMPEG generate dynamic adaptive streaming 【发布时间】:2020-08-11 05:16:29 【问题描述】:

在这个配置文件中 https://github.com/TareqAlqutami/rtmp-hls-server/blob/master/conf/nginx.conf#L24-L30

对于每个接收到的流,为自适应流转码此单 ffmpeg 命令接受输入并将源转换为 4 具有不同比特率和质量的不同流。 # 这些 设置尊重纵横比。

我们如何动态生成变体?即对于 1080p 输入生成所有变体,但对于 240p 输入不生成任何变体

【问题讨论】:

【参考方案1】:

我的启动没有错误 您需要配置日志并查看它给出的错误。 但另一种解决方案是手动检查 您可能正在使用未安装的编解码器

我会检查你的坦克,也许我可以贡献here

application live 
            live on; # Allows live input
            exec ffmpeg -i rtmp://localhost/live/$name -threads 8
                        -c:v libx264 -profile:v baseline -b:v 768K -s 640x360 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='360': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 96k rtmp://localhost/show/$name_360
                        -c:v libx264 -profile:v baseline -b:v 1024K -s 960x540 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='480': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://localhost/show/$name_480
                        -c:v libx264 -profile:v baseline -b:v 1920K -s 1280x720 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='720': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://localhost/show/$name_720
                        -c:v libx264 -profile:v baseline -b:v 4000K -s 1920x1080 -vf "drawtext= fontcolor=red: fontsize=20: fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: text='720': x=10: y=10:" -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://localhost/show/$name_1080;

        


        application show 
            live        on;     # Allows live input from above
            hls         on;     # Enable HTTP Live Streaming
            # hls_fragment  5s;
            # Pointing this to an SSD is better as this involves lots of IO
            hls_path /dest;
            #hls_variant _240 BANDWIDTH=288000;            
            hls_variant _360 BANDWIDTH=448000;
            hls_variant _480 BANDWIDTH=1152000;
            hls_variant _720  BANDWIDTH=2048000;
            hls_variant _1080 BANDWIDTH=4096000; 
        


【讨论】:

以上是关于NGINX 和 FFMPEG 生成动态自适应流的主要内容,如果未能解决你的问题,请参考以下文章

DIV+CSS,如何让图片自适应大小?

想用jQuery mobile js 做网页的自适应大小宽度的改变,就是当网页宽度变小时页面还是显示的原来所有内容

利用axure进行响应式自适应网站的设计

如何开发一个app,使他自适应各种分辩率?

为啥 DASH 流是基于 HTTP 的“动态”自适应流

css样式自适应分辨率