首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FFmpeg和NGINX进行流

如何使用FFmpeg和NGINX进行流
EN

Stack Overflow用户
提问于 2020-01-26 21:39:00
回答 1查看 10.8K关注 0票数 0

我试图从我的Windows上的OBS (开放广播软件)流到安装在同一台PC上的NGINX+RTMP。我已经在OBS中设置了20,000 will的比特率,这将是我在NGINX中设置的多个流的基础比特率。

我希望能够流到NGINX,然后在飞行中使用FFmpeg对流进行代码转换,以遵守我打算向其广播的流站点,例如Twitch.tv。

如果使用网络路径rtmp://localhost/live/test,我可以通过VLC查看流。然而,当我在特维奇的巡查员现场看我的溪流是否会流过来时,我什么也没收到。我不知道我的FFmpeg是否正常工作,或者下面的NGINX配置有问题。

如果有人能弄清楚我可能出了什么问题,那将是非常感谢的。

nginx.conf

代码语言:javascript
复制
#user www-data;
worker_processes  1;

events {
    worker_connections  1024;
}

http { 
    server_tokens off;

    include mime.types;
    default_type application/octet-stream;
    sendfile off;
    keepalive_timeout 65;

    server {
        listen 80;
        server_name localhost;

        # make a internal server page and put it in html
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

rtmp {
    server {
        listen 1935;
        chunk_size 8192;

        application live {
            live on;
            #interleave on;
            #wait_video on;
            record off;

            # Twitch
            exec_push "D:\Users\Will\Downloads\ffmpeg\bin"
                -i rtmp://localhost/source/$name 
                -c:v libx264 
                -c:a copy 
                -preset veryfast 
                -profile:v high 
                -level 4.1
                -x264-params "nal-hrd=cbr" "opencl=true"
                -b:v 8000K 
                -minrate 8000K 
                -maxrate 8000K
                -keyint 2
                -s 1920x1080
                push rtmp://live-lhr03.twitch.tv/app/STREAM_KEY;
        }
    }
}

非常感谢

更新1

为了简单起见,我正在同一台物理计算机上测试OBS、NGINX和FFmpeg,这是一台全新的Windows,一旦一切正常运行,我将把NGINX和FFmpeg移植到我的Linux上。

我使用的是预编译版本的NGINX和RTMP模块。我还下载了最新的FFmpeg库,在Windows中设置了path环境变量,这样就可以在CommandPrompt/PowerShell中调用FFmpeg命令。

我想走的路是:-

OBS正在以20000 live的速度编码X 264,它的目的地是NGINX中的一个名为“live”的RTMP应用程序。从这里开始,我想将从OBS派生出来的一个流编码到几个较小的带宽流中,这样我就可以满足流服务的要求,例如Twitch和Mixer。

在FFmpeg参数的末尾,我是直接将输出推到the,还是将FFmpeg的输出发送回NGINX上的第二个RTMP应用程序,然后再推到the?

将FFmpeg的输出推回NGINX,然后再切换到外部流服务的好处之一是,我可以通过RTMP支持的播放器(例如VLC )打开FFmpeg转换流,允许我查看压缩的输出。

我的另一个问题是,FFmpeg参数可以放在单独的行上,还是必须全部放在一行中?

这是一个非常好的网站,我一直在提及。

https://blog.twitch.tv/en/2017/10/10/live-video-transmuxing-transcoding-f-fmpeg-vs-twitch-transcoder-part-i-489c1c125f28/

EN

回答 1

Stack Overflow用户

发布于 2020-01-27 00:58:12

您的ffmpeg命令试图连接到rtmp://localhost/source,但是您将应用程序命名为“live”,而不是“source”。

另外,除非您真正了解级别是如何工作的,以及约束是什么,否则不要手动发送该级别。X264也会自动选择最好的级别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59922977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档