Nginx、HLS、M3U8、TS 搭建手记

本文记录了如何利用Nginx搭配nginx-rtmp-module搭建HLS流媒体服务器。介绍了Nginx作为HTTP和反向代理服务器的角色,HLS协议的工作原理,以及M3U8和TS文件在流媒体中的作用。通过配置Nginx,可以实现对HLS直播和点播的支持,确保视频在不同设备上的流畅播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。
Nginx 添加模块(nginx-rtmp-module)可以搭建hls流媒体服务器。

  • HLS

HTTP Live Streaming(HLS) , 是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。
HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
HLS是通过视频流切片成文件片段来直播的。客户端首先会请求一个m3u8文件,里面会有不同码率的流,或者直接是ts文件列表,通过给出的ts文件地址去依次播放。在直播的时候,客户端会不断请求m3u8文件,检查ts列表是否有新的ts切片。这种方式的实时性较差,不过优势是H5、IOS、Android都原生支持。

  • M3U8

m3u8 文件是HLS协议的部分内容,可以做多码率的适配,根据网络带宽,客户端选择适合自己码率的文件进行播放,保证视频流畅。
m3u8 文件使用文本方式对媒体文件进行描述,由一系列标签组成。
m3u8文件有两种应用场景:多码率适配/单码率适配流:

多码率适配流:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
http://example.com/mid.m3u8
#EXT-X-ST
Nginx是一个高性能的HTTP服务器和反向代理服务器,也可以作为IMAP/POP3/SMTP服务器。要在Nginx搭建m3u8流媒体服务,你需要以下几个步骤: 1. **安装Nginx和RTMP模块**: 首先,你需要安装带有RTMP模块的Nginx。RTMP模块是实现流媒体功能的关键。 ```bash sudo apt-get update sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0 wget https://github.com/arut/nginx-rtmp-module/archive/master.zip unzip master.zip ./configure --add-module=./nginx-rtmp-module-master make sudo make install ``` 2. **配置Nginx**: 编辑Nginx配置文件(通常位于 `/usr/local/nginx/conf/nginx.conf`),添加RTMP配置和HTTP配置。 ```nginx worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; location / { root html; index index.html index.htm; } location /live { flv_live on; chunked_transfer_encoding on; add_header 'Access-Control-Allow-Origin' '*'; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } rtmp { server { listen 1935; application live { live on; record off; } } } ``` 3. **启动Nginx**: 启动Nginx服务。 ```bash sudo /usr/local/nginx/sbin/nginx ``` 4. **推流**: 使用推流软件(如OBS Studio)将流推送到Nginx服务器。例如,推流地址为 `rtmp://your_server_ip/live/stream`。 5. **播放流**: 使用支持HLS的播放器(如VLC)播放m3u8流。播放地址为 `http://your_server_ip:8080/live/stream.m3u8`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值