基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

这篇具有很好参考价值的文章主要介绍了基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现。可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施,尤其是点播功能,所以我把我工作中验证成功的方案发出来,包括相应的资源包。

本文仅介绍基于HLS流的点播功能,直播功能可参考如下链接操作。

https://blog.csdn.net/caodongfang126/article/details/100984841

1.方案介绍

通过nginx-rtmp + ffmpeg实现rtsp流转hls流,可支持PC端/移动端的点播/直播,通过Native HLS Playback扩展插件或者VLC播放器实现视频播放功能。

2、部署环境

操作系统:windows/Linux

工具:nginx、nginx-rtmp-module、ffmpeg

百度云全套工具下载(包括配置):

windows:

链接:https://pan.baidu.com/s/1Dq5ZqwRpMZ9I5Y4aZHgQQA?pwd=8tkd

linux:

链接:https://pan.baidu.com/s/1TtY3OOlQwespHhFlZTtH_w?pwd=lghd

3、ffmpeg下载及安装

windows下安装:

https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2021-08-31-14-55/ffmpeg-n4.4-80-gbf87bdd3f6-win64-gpl-4.4.zip,下载并解压FFmpeg文件夹,配置环境变量:在“Path”变量原有变量值内容上加上d:\ffmpeg\bin,验证:ffmpeg -version 出现版本号则成功。

Linux下安装:

(1)下载最新源码包并解压

wget http://ffmpeg.org/releases/ffmpeg-4.1.tar.gz
tar zxvf ffmpeg-4.1.tar.gz

(2)安装ffmpeg

cd ffmpeg-4.1/
./configure

如出现报错:

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档

(3)安装yasm

yum install yasm

(4)继续安装ffmpeg

./configure
make
make install

(5)测试

ffmpeg -version

4、nginx及nginx-rtmp-module下载及安装

windows下安装:

到github上下载相应的安装包,https://github.com/illuspas/nginx-rtmp-win32,下载并解压nginx文件夹

Linux下安装:

(1) 到nginx官网上下载相应的安装包,https://nginx.org/en/download.html,上传至/usr/local/src,

或者使用命令下载

wget http://nginx.org/download/nginx-1.21.6.tar.gz

(2) 安装依赖库

yum install -y gcc-c++ zlib pcre openssl openssl-devel

(3) 下载 nginx-rtmp-module

到github上下载相应的安装包,https://github.com/arut/nginx-rtmp-module/archive/master.zip,上传至/usr/local/src,

或者使用命令下载

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

(4) 解压

tar -zxvf nginx-1.12.2.tar.gz
unzip nginx-rtmp-module-master.zip

(5) 配置编译

mkdir /uar/local/nginx
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/nginx-rtmp-module-master/
make
make install

(6) 测试

cd /usr/local/nginx
nginx -v

5、nginx服务配置

hls协议点播功能配置:

要nginx服务支持hls协议点播功能,需要确认conf/mime.types和conf/nginx.conf两个配置文件。

conf/mime.type配置文件中需增加如下两行配置项(如果没有的话)

video/mp2t                            ts;
application/vnd.apple.mpegurl         m3u8; 

conf/nginx.conf配置文件中需要配置信息如下:

注意location /hls{}的配置项需要放到server {}里头,其中8090就是后续使用hls访问视频的http端口号。

    #配置hls点播
    location /hls{
        types{
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        
        autoindex on;
        root html/vod;  #点播视频文件(.ts;.m3u8)存放位置
        add_header Cache-Control no-cache;
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
        add_header 'Access-Control-Allow-Headers' 'Range';
        
        #add_header Cache-Control no-cache;
        #add_header 'Access-Control-Allow-Origin' '*';
        #add_header 'Access-Control-Allow-Credentials' '*';
        #add_header 'Access-Control-Allow-Methods' 'GET, HEAD, OPTIONS';
        #add_header 'Access-Control-Expose-Headers' 'Server,range,Content-Length,Content-Range';
    }

6、重启nginx

Windows

重启nginx: 先执行stop.bat(如果已启动), 再执行nginx.exe

打开logs文件夹中的error.log文件, 如果最后只显示signal process started, 则启动成功

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档
Linux

重启nginx:

如已配置环境变量,直接执行

nginx -s reload

未配置则

cd /usr/local/nginx/sbin
./nginx -s reload

7、ffmpeg切片推流测试

Windows

在nginx-rtmp-win32-dev\html文件夹中创建vod\1文件夹

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档

在.\ffmpeg\bin目录地址栏输入cmd回车打开dos窗口(已配置环境变量则直接打开cmd)

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档

复制以下内容, 在dos窗口中右击粘贴

如果是avi//mkv/wmv格式的视频文件,需要先转换成mp4

ffmpeg -y -i #需要转换的视频文件路径# -c:v libx264 -strict 2 #nginx安装路径#/html/vod/1/output.mp4

将视频转码成ts文件(支持mp4,mov,flv)

ffmpeg -y -i #需要转换的视频文件路径# -vcodec copy -acodec copy -vbsf h264_mp4toannexb #nginx安装路径#/nginx-rtmp-win32-dev/html/vod/1/output.ts

视频切片

ffmpeg -i #nginx安装路径#/html/vod/1/output.ts -c copy -map 0 -f segment -segment_list #nginx安装路径#/html/vod/1/index.m3u8 -segment_time 5 #nginx安装路径#/html/vod/1/index-%03d.ts

输入如下:

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档

生成文件如下:

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档

使用谷歌浏览器+Native HLS Playback插件或者使用相应播放器, 如VLC, 输入http://127.0.0.1:8090/vod/1/index.m3u8即可播放

(插件地址:https://chrome.google.com/webstore/detail/native-hls-playback/emnphkkblegpebimobpbekeedfgemhof?hl=zh-CN)

windows视频点播服务器,流媒体点播,java,音视频,视频编解码,实时音视频,h.264,Powered by 金山文档

Linux:由于是在我的私人服务器进行验证,且测试视频包含本人信息,就不贴出来了

java代码比较简单,使用Runtime.getRuntime().exec(command)即可

如果有其他疑问,可以留下评论,我会回复文章来源地址https://www.toymoban.com/news/detail-787692.html

到了这里,关于基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows搭建Nginx实现RTMP转为HLS流

    所需软件 nginx-1.7.11.3-Gryphon(这个包含必须的RTMP模块,普通的Ngxin没有这个) ffmpeg VLC 配置Nginx 1·为Nginx配置RTMP和HLS 这里定义了一个叫live的RTMP路径。同时设置其开启HLS功能,那么所有推送到这个地址的RTMP流都会自动生成一条对应HLS流。 接着需要在http中的指定服务中添加H

    2024年02月15日
    浏览(30)
  • 深入浅出基于HLS流媒体协议视频加密的解决方案

    一套简单的基于HLS流媒体协议,使用video.js + NodeJS + FFmpeg等相关技术实现的m3u8+ts+aes128视频加密及播放的解决方案示例。 项目简介 起初是为了将工作中已有的基于Flash的视频播放器替换为不依赖Flash的HTML5视频播放器,主要使用了现有的video.js开源播放器做的定制化开发。当完

    2023年04月09日
    浏览(43)
  • nginx 搭建http-flv(rtmp)流媒体的一次尝试

    项目需要通过调用海康摄像头实现远程监控,但是由于网络限制,只能通过代理来调用,因此只能放弃海康官网提供的视频插件,经过一番搜索,决定采用此种方式: nginx 搭建http-flv(rtmp)流媒体 基本的配置什么的,我就不在赘述,可参考网上的方法,经验证后的连接如下:

    2024年02月13日
    浏览(58)
  • Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流

    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_霸道流氓气质的博客-CSDN博客 上面讲了Nginx-http-flv-module+flv.js进行流媒体服务器搭建和前端播放视频流的过

    2024年02月01日
    浏览(59)
  • Docker RTMP服务器搭建与视频流推送示例(流媒体服务器tiangolo/nginx-rtmp,推流客户端ffmpeg)

    在这篇文章中,我将详述如何搭建一个RTMP(Real-Time Messaging Protocol)服务器,并使用ffmpeg技术进行本地视频的推流。最后,我们将使用VLC播放器来播放这个RTMP流。 首先,我们需要搭建一个RTMP服务器。为了方便起见,我们将选择Docker作为服务器的环境。Docker的轻量化和可移植

    2024年01月17日
    浏览(56)
  • 使用nginx和ffmpeg搭建HTTP FLV流媒体服务器(摄像头RTSP视频流->RTMP->http-flv)

    名词解释   RTSP (Real-Time Streaming Protocol) 是一种网络协议,用于控制实时流媒体的传输。它是一种应用层协议,通常用于在客户端和流媒体服务器之间建立和控制媒体流的传输。RTSP允许客户端向服务器发送请求,如播放、暂停、停止、前进、后退等,以控制媒体流的播放和

    2024年02月16日
    浏览(57)
  • Qt推流程序(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)可在网页和播放器远程观看

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

    2024年02月04日
    浏览(73)
  • Qt推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)

    推流程序将视频流推送到流媒体服务器后,此时就等待验证拉流播放,一般可以选择ffplay命令行播放或者vlc等播放器打开播放,也可以选择网页直接打开拉流地址播放,一般主流的浏览器都支持网页直接播放hls/m3u8/webrtc类型的视频流,而且推流的主要目的可能就是为了能够在

    2024年02月05日
    浏览(80)
  • Windows上搭建Nginx-http-flv实现rtsp视频流推流到rtmp流媒体服务器并转换和前端拉取http-flv视频流

    Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_霸道流氓气质的博客-CSDN博客 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流: Vue中使用vue-vi

    2024年02月15日
    浏览(74)
  • 使用nginx部署rtmp流媒体服务器完成直播推流

    笔者为了开发方便使用windows系统的Nginx进行配置。 下载Nginx http://nginx-win.ecsds.eu/download/ 在windows版本下只有个别的几个版本才支持rtmp服务,本文选择版本 nginx 1.7.11.3 Gryphon.zip 解压下载zip文件 在conf文件夹中找到 nginx-win.conf 配置我们所需要的内容 rtmp是adobe基于flash开发的音视频

    2024年02月15日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包