segment方式
與點(diǎn)播的區(qū)別就是在加了-segment_list_flags +live以示直播栈雳,并且加上了-re參數(shù)(不加這個參數(shù)忘苛,一下子就切片過去蝉娜,客戶端還來不及播放,列表已經(jīng)被更新了扎唾,該參數(shù)表示ffmpeg將會按照source.mp4的播放速率進(jìn)行轉(zhuǎn)碼)召川。
帶上segment_list_size參數(shù)對列表數(shù)量進(jìn)行控制在6個。但是目前的話胸遇,ssegment模塊有個缺點(diǎn)荧呐,雖然可以通過以上方式達(dá)到直播,但是生成的TS文件并不會循環(huán)纸镊,會一直被保留(當(dāng)然如果要順帶將內(nèi)容錄制下來倍阐,這反倒是一個優(yōu)點(diǎn),只能說其實(shí)現(xiàn)的還是切片的功能逗威,并非純粹的直播)峰搪。
這時候,HLS模塊就可以更好的勝任直播功能了(能獨(dú)立成模塊庵楷,相對術(shù)業(yè)有專攻吧0瞻)。HLS模塊實(shí)現(xiàn)于libavformat/hlsenc.c libavformat/hls.c 以及 libavformat/hlsproto.c
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
hls方式
hls_list_size即為HLS播放的列表尽纽,hls_wrap則表示為最大的TS循環(huán)數(shù)咐蚯,也就是每10個一個循環(huán),比如現(xiàn)在是生成playlist0.ts~playlist9.ts弄贿,10個文件春锋,之后又會從playlist0.ts重新生成。
目前新版本的ffmpeg的HLS模塊加了很多參數(shù)差凹,具體可以看libavformat/hlsenc.c中的static const AVOption options[]的內(nèi)容期奔,其中HLS還支持加密的操作,加密操作目前沒做探究危尿,下次有空再研究下吧呐萌。
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
我來測試一下
發(fā)現(xiàn)有個坑,我用這個轉(zhuǎn)rtsp的流谊娇,發(fā)現(xiàn)即使本地播ts都是一卡一卡的肺孤?這個比較奇怪
我試一下用一個MP4,不卡頓
我試著加個參數(shù) :-vbsf h264_mp4toannexb
參考我之前的一個文檔:
./ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
我試著 轉(zhuǎn)了下,不卡頓
./ffmpeg-i rtsp://admin:FY201705@172.17.11.155/h264/ch1/main/av_stream-vcodec copy-acodec copy-vbsf h264_mp4toannexb1.ts
這個不卡赠堵,于是我試著轉(zhuǎn)換一下
ffmpeg-re-i rtsp://admin:FY201705@172.17.11.155/h264/ch1/main/av_stream-vcodec copy-acodec copy-map0-f ssegment-segment_format mpegts-segment_list playlist.m3u8-segment_time10-vbsf h264_mp4toannex out%d.ts
上面這個還是卡
ffmpeg-i rtsp://admin:FY201705@172.17.11.155/h264/ch1/main/av_stream-vcodec copy-acodec copy-vbsf h264_mp4toannexb-f hls playlist.m3u8
這個就不卡小渊,于是我再添加一個參數(shù)
ffmpeg-i rtsp://admin:FY201705@172.17.11.155/h264/ch1/main/av_stream-vcodec copy-acodec copy-vbsf h264_mp4toannexb-f hls-hls_time30playlist.m3u8
也不卡,ok茫叭,但是我發(fā)現(xiàn)加上-re就卡酬屉,這個問題以后再查
再加上shell腳本:gongjia.sh