1. 準(zhǔn)備軟件
nginx下載
ffmpeg下載
解壓ffmpeg軟件后鄙信,打開(kāi)cmd,進(jìn)入ffmpeg的bin文件目錄忿晕,用ffmpeg -version
測(cè)試是否正確安裝装诡。
2. 服務(wù)器搭建
2.1. 使用ffmpeg對(duì)MP4文件進(jìn)行點(diǎn)播切片
ffmpeg -i source.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_time 10 out%03d.ts
上述指令用的ffmpeg的segment模塊來(lái)進(jìn)行對(duì)source.mp4文件進(jìn)行切片,segment_format用來(lái)指定輸出格式為mpegts践盼,segment_list用來(lái)配置輸出的列表文件名鸦采,segment_time則是切片的時(shí)長(zhǎng),更多的參數(shù)請(qǐng)參考ffmpeg的官方使用文檔咕幻,或查看libavformat/segment.c
源文件渔伯。切片完成后,可以看到N個(gè)的outXXX.ts(其中XXX為數(shù)字肄程,根據(jù)視頻的大小锣吼,會(huì)有不同的數(shù)量),ffmpeg會(huì)根據(jù)out%03d蓝厌,自動(dòng)計(jì)算生成的文件名稱(chēng)格式玄叠。
2.2. 使用ffmpeg對(duì)MP4文件進(jìn)行直播切片
ffmpeg -re -i source.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_list_flags +live -segment_list_size 6 -segment_time 10 out%03d.ts
與點(diǎn)播的區(qū)別就是加了-segment_list_flags +live以示直播,并且加上了-re參數(shù)(該參數(shù)表示ffmpeg將會(huì)按照source.mp4的播放速率進(jìn)行轉(zhuǎn)碼)褂始。segment_list_size參數(shù)將列表數(shù)量控制在6個(gè)诸典。ssegment模塊有個(gè)缺點(diǎn),雖然可以通過(guò)以上方式達(dá)到直播崎苗,但是生成的TS文件并不會(huì)循環(huán)狐粱,會(huì)一直被保留(當(dāng)然如果要順帶將內(nèi)容錄制下來(lái),這反倒是一個(gè)優(yōu)點(diǎn)胆数,只能說(shuō)其實(shí)現(xiàn)的還是切片的功能肌蜻,并非純粹的直播)。使用HLS模塊就可以更好的勝任直播功能必尼,HLS模塊實(shí)現(xiàn)于libavformat/hlsenc.c libavformat/hls.c
以及 libavformat/hlsproto.c
蒋搜。使用HLS模塊進(jìn)行視頻文件切片的指令如下:
ffmpeg -re -i source.mp4 -codec:v libx264 -codec:a libfaac -map 0 -f hls -hls_list_size 6 -hls_wrap 10 -hls_time 10 playlist.m3u8
hls_list_size即為HLS播放的列表篡撵,hls_wrap則表示為最大的TS循環(huán)數(shù),也就是每10個(gè)一個(gè)循環(huán)豆挽,比如現(xiàn)在是生成playlist0.ts ~ playlist9.ts三圆,10個(gè)文件音羞,之后又會(huì)從playlist0.ts重新生成霸褒。
2.3. 搭建nginx服務(wù)器
解壓nginx軟件后馅扣,雙擊nginx.exe,注意路徑中不能有中文娘侍,80端口不被占用咖刃。將ffmpeg生成的ts片段和playlist.m3u8文件放在html目錄下。進(jìn)入html目錄點(diǎn)擊index.html文件打開(kāi)nginx服務(wù)憾筏,瀏覽器中顯示如下信息嚎杨,則表示nginx服務(wù)器啟動(dòng)成功。
3. 測(cè)試
搭建好nginx服務(wù)器后氧腰,可以使用VLC進(jìn)行播放驗(yàn)證枫浙。
3.1. 打開(kāi)VLC軟件,選擇 “媒體 - 打開(kāi)網(wǎng)絡(luò)串流” 選項(xiàng)
3.2. 填入串流地址容贝,點(diǎn)擊 “播放” 按鈕
輸入
http://your_ip:your_port/your_playlistname.m3u8
自脯,如下圖所示,ip
地址為192.168.98.61
斤富,端口號(hào)為80
,播放列表為playlist.m3u8
锻狗,則串流地址為http://192.168.98.61:80/playlist.m3u8
满力。參考鏈接
使用FFmpeg生成HLS
Windows系統(tǒng)下ffmpeg+nginx+Vitamio搭建HLS服務(wù)器+Android客戶端方法