当前位置:首页 > 电脑技术 > 正文内容

Linux搭建rtmp推流服务器

3年前 (2022-07-14)电脑技术2452

Linux安装nginx

一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。

1.选定源码目录

cd /usr/local/src

2.安装PCRE库

下载

wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz

解压安装包

tar -zxvf pcre-8.40.tar.gz

进入安装目录

cd pcre-8.40

编译安装

./configure 
make && make install

查看pcre版本

pcre-config --version

3.安装zlib库

wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install

4.安装Nginx

cd /usr/local/
wget http://nginx.org/download/nginx-1.15.3.tar.gz
tar -zxvf nginx-1.15.3.tar.gz
rm nginx-1.15.3.tar.gz
mv nginx-1.15.3 nginx
cd nginx/
./configure --prefix=/usr/local/nginx 
make & make install

遇到错误,先不管继续以下步骤

添加Nginx环境变量,可以在命令行直接输入Nginx命令

vim /etc/profile

在最后添加Nginx的路径

export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

重新编译环境变量

source /etc/profile

启动nginx

mkdir /usr/local/nginx/logs
cd sbin
./nginx

浏览器输入IP,就会有nginx欢迎界面

重启nginx命令为

nginx -s reload

关闭nginx服务:

killall -9 nginx

遇到的问题

nginx:[emerg] listen()to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
.
.
.
nginx:[emerg] sill could not blind()

提示端口已被占用

查看端口占用情况

sudo netstat -ntpl

我的是

tcp6 0 0 :::80 :::* LISTEN 1128/apache2

然后杀死1128的任务

sudo kill 1128

重启Nginx便可

也又可能是防火墙没有打开80端口
打开80端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

5.安装Nginx的rtmp拓展

cd /usr/local/nginx

还缺少openssl环境,需要手动安装

sudo apt-get install libssl-dev

如果报错

ERR:1 http://... 404 Not Found

更新一下

apt-get update

再进行安装

sudo apt-get install libssl-dev

git clone https://github.com/arut/nginx-rtmp-module.git
./configure --add-module=/usr/local/nginx/nginx-rtmp-module
make & make install

6.配置Nginx的rtmp服务站点

vim /usr/local/nginx/conf/nginx.conf

在文件底部添加下面内容

rtmp{
    server{
        #监听的端口
        listen 1935;
        chunk_size 4000;
        application tv_file{
            #开启实时
            live on;
            #开启hls
            hls on;
            #rtmp推流请求路径,文件存放路径
            hls_path /usr/local/nginx/html/tv_file;
            #每个TS文件包含5秒的视频内容
            hls_fragment 5s;
        }
    }
}

在文件中部,修改http的server模块

location/{
    root /usr/local/nginx/html;
    index index.html index.htm
}

打开1935端口,建议阿里云

启动nginx

cd /usr/local/nginx/sbin
./nginx

测试:

windows 终端

telnet 服务器地址 1935

遇到的问题:
telnet不可用,
控制面板->程序和功能->启用和关闭Windows功能->勾选Telnet Client

7.推流测试

下载 OBS Studio
下载地址:https://pc.qq.com/detail/4/detail_23604.html
安装完成后,打开软件
在 来源 模块,点击+,媒体源,新建一个,
在本地文件添加一个视频文件上去,
勾选:循环、当源变为活跃状态时重新启动播放、在可用时使用硬件解码
在右下角 控件 模块,点击设置,点击推流
服务:自定义
服务器:rtmp://服务器地址:1935/tv_file
串流密钥:test(这处随便,也就是保存到服务器端的文件名)

开始推流:
然后在服务器段就可以看到 .ts .m3u8文件

cd /usr/local/nginx/html/tv_file
ls
test-0.ts test-1.ts test-2.ts test.m3u8

8.拉流测试

下载安装 VLC
下载地址 https://www.videolan.org/
点击媒体->打开网络串流
选择网络,在URL里输入 流媒体服务器IP和串流密钥

rtmp://服务器地址:1935/tv_file/test

点击播放

---------------------------------------

没有apt-get命令报错:sudo apt-get:command not found

 

解决:

wget http://security.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.6.1_amd64.deb

sudo dpkg -i apt_1.6.1_amd64.deb

---------------------------------------------

https://cloud.tencent.com/developer/article/1915375

扫描二维码推送至手机访问。

版权声明:本文由大力知识库发布,如需转载请注明出处。

本文链接:https://www.dali555.com/post/27.html

标签: rtmp推流
分享给朋友:

相关文章

PR怎么对视频进行补帧?

PR怎么对视频进行补帧?

在我们日常工作生活中,当手头有一些视频素材时,经常需要用到剪辑软件来进行剪辑。而有些视频素材适合慢放,才能更好的表现视觉效果。但是为了防止慢放时视频帧缺失,需要对视频进行补帧,这样才能流畅播放。下面就跟大家介绍一下PR中怎么对视频进行补帧吧...

模糊变清晰,在PS中放大照片不模糊

模糊变清晰,在PS中放大照片不模糊

很多情况下,我们都需要把照片放大,想看得更清楚一些,但是情况往往相反,通常我们用PS放大照片的时候,都会出现照片模糊的现象。那么这个时候我们怎么办呢?这时我们就可以在PS中进行一个简单的小操作,照片就可以变的清晰,具体是如何做的,快来通过教...

简单3步,教你取消电脑开机密码

简单3步,教你取消电脑开机密码

各位盆友!你们也很苦恼电脑密码经常会忘这件事吧????那把电脑密码设成信用卡密码(想想不太合适)要不把电脑密码跟家门密码同号(感觉更不妥)算了...还是不要设电脑密码了可是我这电脑密码咋取消呢?别急!小编手把手教你取消电脑密码01打开设置窗...

Photoshop保存ICO格式插件 ICOFormat.8bi

Photoshop保存ICO格式插件 ICOFormat.8bi

Photoshop 一直不支持导入导出ico格式图标文件,不过还好有一款插件可以让photoshop支持打开和保存 ico 图标格式,这款插件就是 ICOFormat.8bi ,有了它就可以直接从ps里打开、保存ico格式的文件了。下面介绍...

debian如何修改SSH登录端口?

一般来说debian系统的VPS或者独立服务器默认都是用的22作为登录SSH的端口,由于弱密码等让一些喜欢扫描端口的怪胎可能有机可乘,就算登录不上也会消耗资源,那如何避免这样的情况呢?我们直接修改SSH默认登录端口22,改为其他的即可。&n...