使用ffmpeg+nginx将rtmp直播流转为hls直播流
ffmpeg的安裝和nginx的安裝在之前的博客中有詳細的講解。
mac搭建nginx+rtmp直播流
1.配置nginx
(1)配置rtmp直播?
rtmp {server {listen 1935; ?application myapp {live on; ?#record keyframes;#record_path /tmp;#record_max_size 128K;#record_interval 30s;#record_suffix .this.is.flv; ?#on_publish http://localhost:8080/publish;#on_play http://localhost:8080/play;#on_record_done http://localhost:8080/record_done; ?}application live {live on; ? #開啟實時hls on; ? #開啟hlshls_path /usr/local/etc/nginx/html/multimedia/hls; #hls的ts切片存放路徑hls_fragment 2s; ? ? ? ? #本地切片長度hls_playlist_length 6s; #HLS播放列表長度 ?}} ?(2)配置hls拉流
-
這個配置為了客戶端能夠以http協(xié)議獲取HLS的拉流
(3)重啟nginx
sudo nginx -s reload2.推流測試
這里我們找了一個正在直播中的rtmp拉流地址
rtmp://liveplay.dayukeji.xin/live/54260_WBH20190810095219929830
然后用ffmpeg進行推流
ffmpeg? -re -i rtmp://liveplay.dayukeji.xin/live/54260_WBH20190810095219929830?-vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://127.0.0.1:1935/live/room8然后我們可以在nginx中配置的路徑下看到一個個的ts文件和m3u8文件
?
3.測試拉流
通過上面的配置,我們可以hls播放方式來看到推出來的流。注意,如果使用 http 方式,則是監(jiān)聽的 8080 端口。
在Safari瀏覽器或者vlc中打開如下鏈接
http://127.0.0.1:8080/live/room8.m3u8可以看到手機端推送的直播在電腦上顯示出來了
·
?
4.補充知識
Nginx的alias指令和root指令的用法
root與alias主要區(qū)別在于nginx如何解釋location后面的uri,這會使兩者分別以不同的方式將請求映射到服務(wù)器文件上。
oot的處理結(jié)果是:root路徑+location路徑
alias的處理結(jié)果是:使用alias路徑替換location路徑
alias是一個目錄別名的定義,root則是最上層目錄的定義。
還有一個重要的區(qū)別是alias后面必須要用“/”結(jié)束,否則會找不到文件的。。。而root則可有可無~~
root實例:
location /t {root /www/root/html/; }如果一個請求的URI是/t/a.html時,web服務(wù)器將會返回服務(wù)器上的/www/root/html/t/a.html的文件。
alias實例:
location /hls{alias /usr/local/etc/nginx/html/multimedia/hls/; }如果一個請求的URI是/hls/a.html時,web服務(wù)器將會返回服務(wù)器上的/usr/local/etc/nginx/html/multimedia/hls/a.html的文件。alias會把location后面配置的路徑丟棄掉,把當前匹配到的目錄指向到指定的目錄。
總結(jié)
以上是生活随笔為你收集整理的使用ffmpeg+nginx将rtmp直播流转为hls直播流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffmpeg之常用命令的学习
- 下一篇: 内存分析工具MAT介绍