ubuntu搭建nginx服务器实现视频直播点播

标签: 视频直播  推拉流-nginx  nginx

开发环境
Ubuntu 16.04

nginx的服务器的搭建

1.安装nginx的依赖库
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev

2.安装ffmpag(视频点播,直播推流用)

$ add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

$ apt-get update

$ apt-get install ffmpeg

3.安装vlc播放器(视频点播,直播拉流)

sudo apt-get install vlc
安装完成之后在ubuntu系统设置–详细详细–默认应用程序–视频选择VLC为默认视频播放器

4.建立源码编译的目录

$ mkdir nginx-src

$ cd nginx-src

5.下载源码仓库并解压
nginx源码
$ git clone https://github.com/nginx/nginx.git
nginx的rtmp模块源码
$ git clone https://github.com/arut/nginx-rtmp-module.git
(我下载的是nginx-1.8.1nginx-rtmp-module
下载完成后解压到 nginx-src

6.配置并编译nginx
使用nginx的默认配置,添加nginx的rtmp模块。
这里写图片描述
$cd nginx-1.8.1

$ sudo ./configure –add-module=../nginx-rtmp-module-master

$ sudo make

$ sudo make install

7.运行测试nginx

进入安装目录/usr/local/nginx,运行命令./sbin/nginx

$ cd /usr/local/nginx

$ sudo ./sbin/nginx

注意:以后所有的命令都在/usr/local/nginx目录运行,也nginx配置文件的相对目录。
如果对文件有修改需要重新启动一下nginx,在/usr/local/nginx目录

$ sudo  ./sbin/nginx -s reload

打开浏览器在地址栏输入:localhost。如果,如下图显示那样就证明您的nginx服务器搭建成功了
这里写图片描述

8.配置直播,点播
$cd  /usr/local/nginx/conf
可以用gedit或者vim编辑内容如下,ps:主要添加rtmp直播点播模块


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

rtmp {
    server { 
        listen 1935;
    chunk_size 4096;
    publish_time_fix on;

    application vod {
        play /home/pangrui/Videos/;
    }

              # 推流其一
              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/pangrui/hls;
                      hls_fragment 5s;
              }
    }

}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

9.使用ffmpeg向服务器推送一个视频
我们重新启动一下nginx

$ sudo ./sbin/nginx -s reload

$ sudo ffmpeg -re -i /home/pangrui/Videos/mv-gee.mp4 -c copy -f flv rtmp://localhost:1935/live/film

推荐 可用于浏览器播放

$ sudo ffmpeg -re -i /home/pangrui/Videos/mv-gee.mp4 -c copy -f flv rtmp://localhost:1935/hls_alic/film
这里写图片描述

10.vlc拉流播放
打开视频播放软件选用的是VLC media-> open network stream….
如图填写我们要点播的节目地址rtmp://localhost/vod/mv-gee.mp4 如图:
这里写图片描述
同理直播用
rtmp://localhost:1935/live/film
或者rtmp://localhost:1935/hls_alic/film
点击play即可播放!!!
注意,在hls_path的路径添加一个站点来访问即可!
推流还是用ffmpeg的命令来, 推流一段时间后, 你会发现在”/home/pangrui/hls”目录里, 有很多ts文件,
还有一个后缀”.m3u8”文件上面配置中的 server:8081 块, 就是为了能在外部能访问这些ts文件和m3u8文件。
如果是浏览器播放flv可参考如下代码:

<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>

申明:本文参考如下文章,取其可用部分舍弃不靠谱部分,自己动手搭建得到本文,后续会将推拉流移植到android设备,感谢。
http://blog.csdn.net/kingroc/article/details/50839994
http://www.jianshu.com/p/f0bf83ca3ea3#

版权声明:本文为pangrui201原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pangrui201/article/details/71433925

智能推荐

NDK实践(四)视频直播分析及nginx服务器搭建

  上一篇我们已经实现了使用ffmpeg实现视频的播放,接下来再来一波骚操作,我们来探索一下近两年火热的视频直播是如何实现的。 简单来说就是一端推流,多端拉流(流即视频流和音频流),也就是一个主播对应多个观众。视频流的传输是通过rtmp协议而非以往的http协议 在敲代码之前我们需要做一些准备工作,首先我们来搭建一个nginx服务器。那nginx又是什么呢? nginx是一个高性能的HT...

阿里云服务器(ubuntu)搭建nginx-rtmp服务器 实现直播功能(纯命令行操作)

转载请注明出处:https://blog.csdn.net/weixin_40490238/article/details/82260728   作者采用root用户登录,非root用户使用sudo 更新源,安装git 先把nginx和nginx-rtmp-module源码下载下来(最新稳定版nginx-1.14.0) 安装编译依赖 解压nginx压缩包,并编译,安装 安装ffmpeg ...

Nginx之——nginx-rtmp-module搭建流媒体服务器实现直播

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/80022437 一、基础环境搭建 二、Nginx安装 1、安装openssl openssl官网:http://www.openssl.org/ 安装版本:openssl-1.0.1i.tar.gz 安装命令: 【注意】:此处使用的是config命令,而不是平常的configure...

Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务

1. 背景 不知不觉来到流媒体部门已经一年半多了,也算积攒了不少的流媒体知识,平时工作比较忙,到没有对流媒体技术进行系统性的梳理;最近刚完成一个Git实用指南的技术专栏,放松一周之后,觉得还是得让自己充实起来,准备对工作中的流媒体技术进行一个梳理,在梳理的同时也写一套流媒体系列的实践文章,也算是给自己在流媒体方面做一些总结,同时还可以帮助到有需要的开发者; 在这一节中我主要是通过nginx+rtm...

Android 炫酷的横向和环形进度条的实例

一、概述 最近需要用进度条,秉着不重复造轮子的原则,上github上搜索了一番,看了几个觉得比较好看的ProgressBar,比如:daimajia的等。简单看了下代码,基本都是继承自View,彻彻底底的自定义了一个进度条。盯着那绚丽滚动条,忽然觉得,为什么要通过View去写一个滚动条,系统已经提供了ProgressBar以及属于它的特性,我们没必要重新去构建一个,但是系统的又比较丑,不同版本变现...

猜你喜欢

pcap包结构&SNI字段的解析

    pcap文件格式是常用的数据报存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包。     文件格式:     Pcap文件头(24字节)+数据包头(wireshark增加的)+数据包(网络中抓取的)+…… 1.pcap文件头结构 各字段说明: Magic:4B:0×...

MC9S12XEP100的IIC模块(IICV3)

最近在写DS3231时钟芯片的驱动,这个芯片使用IIC进行通讯,以前没有用过IIC模块,照着教材和示例程序写程序后发现各种问题。没办法,还是官方数据手册靠谱,遂把相应部分又翻译了一遍。果然发现示例程序纯粹就是个玩具,一点用都没有。。。 第15章 集成电路总线(IICV3) 译者注:译者博客(http://blog.csdn.net/lin_strong),转载请保留这条。此为 MC9S12XEP1...

Eureka服务注册与发现

文章目录 二、SpringCLoud中遇到的技术 (一)、Eureka 1、功能: 2、什么是服务治理. 3、什么是服务注册与发现 4、Eureka包含两个组件: Eureka Server和Eureka Client 5、单机Eureka构建步骤 5.1 建model:cloud-eureka-server7001 5.2 写pom 5.3 写yml 5.4 主启动类 5.5 测试 5.6 将消...

Hard Problem【HDU-3551】【一般图最大匹配 带花树】

题目链接   题意:有N个点,M条边,给出每个点的度限制,问能不能用M条边中的几条达成这个目的?   很明显的就是一个建图的问题,很明显的,少于等于度为1的,是可以直接连的,不用限制增广,而大于度为1的,需要限制增广,就可以用这样的限流的方法:  ...

idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: null

idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: null 文章目录 idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: ...