网络直播/点播服务器搭建

网络直播好火,自己来搭建个服务器玩一玩儿
我用虚拟机搭建的服务器,装的最新的Ubuntu18.04,由于要在局域网内访问,需要设置虚拟机的网络为桥接适配器(相当于直接通过路由器支配,跟主机没关系)
ps:附赠Ubuntu18.04开机启动选项
在“Ubuntu软件”中搜索并安装GNOME Tweaks,在其中找“Startup Application”


虚拟机网络设置

1、下载插件

下载nginx-rtmp-module

git clone https://github.com/arut/nginx-rtmp-module.git

下载nginx_mod_h264_streaming

wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz

解压后拷贝文件到/usr/local/src/

sudo cp -r nginx-rtmp-module /usr/local/src/
sudo cp -r nginx_mod_h264_streaming-2.2.7 /usr/local/src/

2、下载nginx

nginx的官方网站为:http://nginx.org/en/download.html
选择你要下载的版本,最新的稳定版本nginx-1.14.2

wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -xzvf nginx-1.14.2.tar.gz

3、进入nginx项目执行编译前的配置

#yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc
#apt install libpcre3 libpcre3-de openssl libssl-dev ruby zlib1g zlib1g-dev
./configure --with-http_flv_module --with-http_mp4_module --add-module=/usr/local/src/nginx-rtmp-module --add-module=/usr/local/src/nginx_mod_h264_streaming-2.2.7

提示错误:
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
需要安装

sudo apt install libpcre3 libpcre3-dev
sudo apt install openssl libssl-dev

提示错误
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
需要安装

sudo apt install ruby
sudo apt install zlib1g
sudo apt install zlib1g-dev

提示错误
/usr/local/src/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c:158:10: error: ‘ngx_http_request_t {aka struct ngx_http_request_s}’ has no member named ‘zero_in_uri’; did you mean ‘plus_in_uri’?
if (r->zero_in_uri)
^~~~~~~~~~~
plus_in_uri
屏蔽出错的if判断即可

4、配置通过之后把Makefile拷贝出来,然后编译

// 可能会遇到变量未使用的错误,去掉Makefile文件中-Werror
cp objs/Makefile ./
make
sudo make install

5 CentOs安装ngnix

rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm
yum install nginx

启动

sudo systemctl start nginx.service

开机启动

sudo systemctl enable nginx.service

配置目录/etc/nginx

6、配置nginx.conf

sudo gedit /usr/local/nginx/conf/nginx.conf

在最后加入:

rtmp {
    server {
        listen 10081;  #直播端口号
        chunk_size 4000;
        application hls {  #rtmp推流请求路径  
            live on;
            hls on;
            hls_path /usr/local/nginx/html/hls;
            hls_fragment 5s;
        }    
    }
}

在原来的http中加入下面配置的server部分

http {
    server {
        listen  10080; #点播端口号

        location /stat {    
            rtmp_stat all;    
            rtmp_stat_stylesheet stat.xsl;    
        }    

        location /stat.xsl {    
            root /usr/local/src/nginx-rtmp-module/;    
        }    

        location /control {    
            rtmp_control all;    
        }    

        location /hls {  
            # Serve HLS fragments  
            types {  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            root html;   #m3u8源文件放到/usr/local/nginx/html下,其他位置有问题
            expires -1;  
        }  

        location ~\.flv {
            root  /home/xxxx; #点播源文件的目录
            flv;
        }
        location ~\.mp4$ {
            root  /home/xxxx; #点播源文件的目录
            mp4;
        }
    }
}

7、设置权限

需要先启动nginx,并重启电脑之后执行权限设置(也可以指定为其他路径,需要在nginx.conf的hls_path处配置-步骤5)

sudo chmod 755 /usr/local/nginx/html/hls

8、启动

sudo /usr/local/nginx/sbin/nginx

重启

$ps -ef | grep nginx
root     18764     1  0 09:30 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   18765 18764  0 09:30 ?        00:00:01 nginx: worker process
nobody   18766 18764  0 09:30 ?        00:00:00 nginx: cache manager process
$sudo kill -QUIT 18764 18765 18766

9、OBS推流

我用的是OBS

sudo apt install obs-studio

具体使用方法自己网上搜,一大片
给出几个图片自己悟吧


步骤一

步骤二

步骤三

步骤四

9、ffmpeg推流

sudo apt install ffmpeg

推流命令

ffmpeg -re -i ~/Video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac  -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:11181/hls/ 
ffmpeg -re -i test_2.mp4 -c:a mp3 -ar 44100 -ab 48k -c:v libx264 -s:v 3840x2160 -f flv rtmp://localhost:10081/hls/
ffmpeg -re -i test_1/轻松.m3u8 -c:v libx264 -c:a aac -s:v 1920x1080 -strict -2 -f fls rtmp://localhost:10081/hls/

-re 以本地帧频读数据,主要用于模拟捕获设备
-i path 输入视频地址

-vcodec视频流编码方式
-b 视频流帧码率(默认只有200k,一般都需要手动设置,具体的数值视codec选择而定)
-r 视频流帧率(一般说来PAL制式通常用25,NTSC制式通常用29)
-s 视频解析度(分辨率,也要视codec和你的需要而定。另:具体写法使用“数字x数字”的形式)
-t 处理持续时间

-acodec 音频流编码方式
-ab 音频流码率(默认是同源文件码率,也需要视codec而定)
-ar 音频流采样率(大多数情况下使用44100和48000,分别对应PAL制式和NTSC制式,根据需要选择)
-ac channels 设置通道,缺省为1

-f 强制使用某种格式

-vn 屏蔽视频流
-an 屏蔽音频流

-b 设置比特率,缺省200kb/s
-r 设置帧频,缺省25
-s 设置帧大小,格式为WxH,缺省160x128.
-aspect 设置横纵比4:3\16:9;1.3333\1.7777
-croptop/botton/left/right 设置顶部切除带大小,像素单位
-padtop/botton/left/right size 设置顶部补齐的大小,像素单位
-padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:蓝排列,比如000000代表黑色

-vprofile baseline, extended, main, high(https://www.cnblogs.com/tinywan/p/6404411.html)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容