1. 准备环境

  1. 安装操作系统Cenos
  2. 配置yum源

    yum:https://developer.aliyun.com/mirror/
  3. Nginx依赖

    gcc-c++ zlib pcre openssl openssl-devel
  4. Nginx和扩展模块

    Nginx本身只是一个服务器,对流媒体并没有支持,所以我们要下载对应的模块来扩展其功能

    MP4模块:http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz

    FLV模块:http://sourceforge.net/projects/yamdi/files/yamdi/yamdi-1.9.tar.gz

    直播流模块:https://github.com/adwpc/nginx-rtmp-module

    FastDFS模块:https://github.com/happyfish100/fastdfs-nginx-module
  5. FFMPEG

    ffmpeg :https://ffmpeg.zeranoe.com/builds/
  6. OBS推流
  7. EV拉流

2. 安装环境

2.1 上传所有模块到系统中

mkdir /opt/nginx

cd /opt/nginx

rz nginx-1.8.1.tar.gz

rz nginx_mod_h264_streaming-2.2.7.tar.gz

rz yamdi-1.9.tar.gz

rz nginx-rtmp-module-master.zip

2.2 安装FLV模块

tar -zxvf yamdi-1.9.tar.gz

cd yamdi

./configure

mark && make install

2.3 解压MP4模块

tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz

处理一个bug

cd /opt/nginx/nginx_mod_h264_streaming/src

注释157行-161行

     /* TODO: Win32 */
// if (r->zero_in_uri)
// {
// return NGX_DECLINED;
// }

2.4 解压nginx

tar -zxvf nginx-1.8.1.tar.gz

tar -zxvf nginx_mod_h264_streaming.tar.gz

unzip nginx-rtmp-module-master.zip

2.5 安装nginx并添加模块

./configure --add-module=../nginx_mod_h264_streaming --add-module=../nginx-rtmp-module-master --with-http_ssl_module --prefix=/opt/software/nginx --with-http_flv_module --with-http_stub_status_module

注:如果编译报错, vim objs/Makefile (修改objs/Makefile文件, 去掉其中的"-Werror"), 然后就能够正常编译了.

2.6 播放配置

cd /opt/software/nginx/conf

vim nginx.conf

添加对FLV和MP4的支持

location ~ \.flv {
flv;
}
location ~ \.mp4$ {
mp4;
}

2.7 FFmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序

上传

rz ffmpeg-4.2.2.tar.bz2

安装

yum install bzip2 #因为后缀是bz2的 要安装 bzip2

tar -jxvf ffmpeg-4.2.2.tar.bz2 #使用 -jxvf 解压bz2文件

cd ffmpeg-4.2.2 #进入目录

./configure --prefix=/opt/software/ffmpeg #配置 设置安装路径

make && make install #安装

3. 点播

上传测试MP4

cd /opt/software/nginx/html

rz test.mp4

查看 http://192.168.3.9/test.mp4

4. 直播

4.1 配置服务

cd /opt/software/nginx/conf

vim nginx.conf

rtmp {
server {
listen 1935; #监听的端口
chunk_size 4096;
application hls { #rtmp推流请求路径
live on;
hls on;
hls_path /opt/software/nginx/html/hls;
hls_fragment 5s;
}
}
}

mkdir /opt/software/nginx/html/hls

4.2 直播推流

推流指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程

设置场景

场景增加视频捕获设备,显示器捕获或窗口捕获

注:窗口黑屏解决方案

设备管理器中-->显示适配器-->独立显卡-禁用

设置推流地址

rtmp服务器:rtmp://192.168.3.9:1935/hls/

密钥:12345

4.3 直播拉流

拉流是指服务器已有直播内容,用指定地址进行拉取的过程

借用EV播放



输入拉流地址

rtmp地址:rtmp://192.168.3.9:1935/hls/12345

点击开始观看直播

Nginx 推流 拉流 --- 点播直播的更多相关文章

  1. 直播知识-推流&拉流

    推流,指的是把采集阶段封包好的内容传输到服务器的过程.其实就是将现场的视频信号传到网络的过程.“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是 ...

  2. iOS开发之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流

    最近项目中想实现直播的功能,所以研究了一段时间的直播功能,当然也是在别人的基础上不断的学习实现的,所以记录一下,希望对大家有所帮助. 直播拉流功能: 这里使用了开源的IJKPlayer第三框架,ijk ...

  3. Mac上搭建直播服务器Nginx+rtmp,实现手机推流、拉流

    转载自http://www.cnblogs.com/jys509/p/5649066.html 简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网 ...

  4. 基于rtmp+nginx 、vlc实现FFmpeg推流与wpf端拉流

    这周在研究基于rtmp+nginx直播流的实现,现总结如下: 0.所需文件: 链接:https://pan.baidu.com/s/1U5gsNI8Rcl684l5gVL6swg 提取码:dli9 1 ...

  5. 基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_146 由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津 ...

  6. iOS - 直播流程,视频推流,视频拉流,简介,SMTP、RTMP、HLS、 PLPlayerKit

    收藏笔记 1 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示1.数据采集:摄像机及拾音器收集视频及音频数据,此时得到的为原始数据涉及技术或协议:摄像机: ...

  7. 【转】直播流程,视频推流,视频拉流,简介,SMTP、RTMP、HLS、 PLPlayerKit

    原:https://www.cnblogs.com/baitongtong/p/11248966.html 1 .音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放 ...

  8. 直播推流之blibli和拉流LFLiveKit

    执行上面操作后,导入合成的拉流blibli包到工程中,然后新建个播放控制器来设置播放 1.  播放的一些操作. 2. 高斯模糊. 3. 新建聊天控制器. - (void)viewDidLoad { [ ...

  9. Ubuntu18.04下配置Nginx+RTMP服务器,实现点播/直播/录制功能

    2019.3.22更新 最新的nginx-1.15.9可与openssl1.1.1兼容了 以下原文: 这个东西我眼馋挺久了,最近终于试玩了一下,感觉很好玩,在搭建的过程在也遇到一些坑,这里总结一下 安 ...

随机推荐

  1. php函数 之 iconv 不是php的默认函数,也是默认安装的模块。需要安装才能用的。

    windows下最近在做一个小偷程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些.  让我郁闷了好 ...

  2. derby数据库

    derby数据库 https://www.cnblogs.com/zuzZ/p/8107915.html Derby数据库的使用 https://www.cnblogs.com/wkfvawl/p/1 ...

  3. SQLserver安装了多个实例,实例端口号也被修改后的代码连接方式

    事例说明 IP地址为192.168.1.100的服务器上安装了SQLServer2000,它有两个实例,分别为:默认实例——JLW和另外新建的实例——JLW\TEST SQLServer网络实用工具中 ...

  4. python学习笔记(6)数据类型-集合

    集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典. 创建格 ...

  5. cs231n spring 2017 lecture2 Image Classification

    1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...

  6. 7)加了基础控制器Controller.php

    文件目录展示: 改动代码展示: Controller.php <?php /** * Created by PhpStorm. * User: Interact * Date: 2017/8/2 ...

  7. unittest(23)- python发邮件

    import smtplib import time from email.mime.multipart import MIMEMultipart from email.mime.text impor ...

  8. JS做深度学习2——导入训练模型

    JS做深度学习2--导入训练模型 改进项目 前段时间,我做了个RNN预测金融数据的毕业设计(华尔街),当时TensorFlow.js还没有发布,我不得已使用了keras对数据进行了训练,并且拟合好了不 ...

  9. JS计算日期加天数后的日期(起始日期+有效天数=截至日期)

    /** * 优惠券有效期 * startDate:起始日期 * valueTime:有效天数 */ function transferCouponValueTime(startDate,valueTi ...

  10. java.lang.ClassNotFoundException :xxxxxxx

    码的!java.lang.ClassNotFoundException: org.springframework.jdbc.core.RowMapper这个错误搞了半天 因为写的项目是手动建的WEB- ...