ubuntu搭建推流服务器Nginx+rtmp

****前言**** 最近这两年直播平台及其流行,然而我呢? 也要玩玩推流服务器~~~ 实现服务器推流/PC客户端观看/浏览器客户端查看


****简介**** 对于Nginx的优点呢就不多说了,两句话: 1)并发量高 2)可负载均衡 重点谈谈rtmp吧! RTMP全称是Real Time Messaging Protocol(实时消息传输协议),rmtp是一种通讯协议。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。现在更流行于直播平台服务器的推流处理!


****install搭建****

  • 建立源码编译的目录
$ mkdir nginx-src
$ cd nginx-src
  • 下载源码仓库
#nginx源码
$ git clone https://github.com/nginx/nginx.git
#nginx的rtmp模块源码
$ git clone https://github.com/arut/nginx-rtmp-module.git
#nginx的依赖pcre源码
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
$ tar -xzvf pcre-8.39.tar.gz
$ cd nginx$ git checkout release-1.9.9
  • 准备编译安装
#将configure的命令封装成脚本
$ vim cfg.sh
#  cfg.sh文件的内容
auto/configure --prefix=/usr/local/nginx \
        --with-pcre=../pcre-8.39 \
                --with-http_ssl_module \
                --with-http_v2_module \
                --with-http_flv_module \
                --with-http_mp4_module \
                --add-module=../nginx-rtmp-module/
$ chmod a+x cfg.sh
$ ./cfg.sh
$ make 
$ make install
  • 启动nginx服务器
/usr/local/nginx/sbin/nginx

****配置nginx**** 在nginx的配置文件nginx.conf最后添加如下信息

# RMTP的服务器配置信息
rtmp {
        server {
                listen  2016; #推流的监听端口
                publish_time_fix on;
                # 推流其一
                application live {
                        live on; #stream on live allow
                        allow publish all; # control access privilege
                        allow play all; # control access privilege
                }
               #推流其二
        application hls_alic {
                        live on;
                        hls on;
                        hls_path /home/alic/www/hls;
                        hls_fragment 5s;
                }
        }
}

重新加载nginx的配置

$ /usr/local/nginx/sbin/nginx -s reload

****简单的测试demo**** 安装ffmpag

$ add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
$ apt-get update
$  apt-get install ffmpeg

使用ffmpeg向服务器推送一个视频

ffmpeg -re -i /home/alic/Desktop/demo/film.mp4 -c copy -f flv rtmp://localhost:2016/live/film
or
# 推荐 可用于浏览器播放
ffmpeg -re -i /home/alic/Desktop/demo/film.mp4 -c copy -f flv rtmp://localhost:2016/hls_alic/film

Alic_推流

视频播放器获取视频流

Alic_客户端获取流

对于浏览器呢,html的整理代码如下

<html>
<head>
    <link rel="stylesheet" href="http://vjs.zencdn.net/5.10/video-js.css">
</head>
    <video id=example-video width=960 height=540 class="video-js vjs-default-skin" controls>
        <source
            src="film.m3u8"
            type="application/x-mpegURL">
    </video>
    <script src="http://vjs.zencdn.net/5.10/video.js"></script>
    <script src="https://npmcdn.com/videojs-contrib-hls@^3.0.0/dist/videojs-contrib-hls.js"></script>
    <script>
        var player = videojs('example-video');
        player.play();
    </script>
</html>

注意,在hls_path的路径添加一个站点来访问即可! 推流还是用ffmpeg的命令来, 推流一段时间后, 你会发现在"/home/alic/www/hls"目录里, 有很多ts文件, 还有一个后缀".m3u8"文件上面配置中的 server:8081 块, 就是为了能在外部能访问这些ts文件和m3u8文件。

Alic_浏览器

搭建推流服务器Nginx+rtmp就成功了! 即将总结ffmpeg推流的命令~~~


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏狂码一生

apache环境配置https

1、到云服务器提供商或者其它平台购买或者寻找免费的SSL证书并进行下载。 2、将下载后的SSL证书文件放置到apache目录下 ? 3、在apache配置文件h...

1.1K12
来自专栏数据和云

故障恢复:从未知错误ORA-600 [3712]以猜测推理达成恢复

李真旭 Oracle ACE,云和恩墨技术专家 个人博客:www.killdb.com 在Oracle数据库的日常维护中,我们可能经常会遇到一些从未见过的错误,...

2896
来自专栏lestat's blog

开始在ubuntu下工作

家里的PC机有几个月没用了,昨天刚开机,发现SSD识别不了,经过排查,确定是盘坏了,然后只能重装

1761
来自专栏FreeBuf

DLINK DCS-5020L无线云摄像机远程代码执行漏洞分析

本文主要是向大家演示,如何找到物联网(IOT)设备中的漏洞。查找以下命令注入的过程可以分为3个步骤,有点类似于100 point CTF challenge:下...

1085
来自专栏转载gongluck的CSDN博客

cocos2d怎么设置屏幕朝向?横屏 or 竖屏设置

在Cocos引擎里面找了好久,没找到相关接口,网上也搜索了好久,最后发现,原来需要根据各个平台分别进行设置。 Android 修改项目根目录 proj.andr...

3017
来自专栏iOS 开发杂谈

iOS直播app之Mac搭建nginx+rtmp服务器

前言 今年移动直播行业的兴起,很多公司都在做直播,转眼间过了大半年了,直播的各种技术相对成熟了起来。今天我们公司也追赶潮流,索性我也转战直播,下面从第一步开始...

3934
来自专栏深度学习那些事儿

深度学习-在ubuntu16.04安装CUDA9.1-总结(问题完全解决方案)

深度学习大火,为了赶上AI的班车,许多研究生本科生们都在搞深度学习。然而深度学习环境搭建必不可少,这篇文章是我多次为实验室搭建环境所积累起来的经验总结,希望所有...

5595
来自专栏皮振伟的专栏

[linux][intel]linux对intel c-state和p-state的支持分析

前言: 前文《[qemu][acpi]从虚拟化看ACPI》中,介绍了ACPI的大概逻辑,以及ACPI sleep的S1,S2,S3(STR),S4(STD),S...

2462
来自专栏码神联盟

碎片化 | 第四阶段-55-OpenSessionInViewFilter组件配置解决session问题-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/s05686to2z4.html OpenSessionInViewFi...

33211
来自专栏腾讯Bugly的专栏

Android 进程保活招式大全

目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对 Android 进程拉活进行一个总结。 Android 进程拉活包括两个...

6057

扫码关注云+社区