四季尘封之时

好久没发过技术类文章了啊(((

嘛,最近会多发的

 

使用的方案是ffmpeg(解编码)hls(协议)[+livego(转换)flv(流)]+nginx(前端)

搭建时遇到了一些问题

在开始搭建的时候,对于ffmpeg的使用咱只会合并音视频(((虽然以前也有使用ffmpeg推流过

因为不清楚参数有什么用,导致中途出现了很多错误的用法。。。

一开始先是使用rtmp,然而rtmp没有合适的网页播放器(其实是咱不喜欢那个播放器),所以就改成使用nginx-rtmp-module的hls功能

然而很是奇怪的是按照官方教的方法写好参数之后,根本无法生成需求的文件。。。

后发现ffmpeg自己就可以使用hls,所以直接使用ffmpeg进行解编码,nginx只用来承载网站

 

使用ffmpeg串流时,发现多个不同的视频(包括音频)如果不进行量化,将会在两个视频之间出现PTS和DTS不适配问题,所以需要进行批处理(还是手动。。。)

一开始出现这个问题的时候,咱是将所有视频合并成同一个视频使用,但是非常臃肿并且在增加视频的时候会非常痛苦,故弃用

 

进行多个视频播放的时候,需要ffmpeg使用concat输入播放列表,咱使用了无限循环的方法进行重播,演示如下

(假设该文件名为list.txt)

ffconcat version 1.0

file 1.mp4

file 2.mp4

file list.txt

 

最后是输出多个画质,然后就是播放器部分了

以下是本次使用的ffmpeg命令

ffmpeg -threads 16 -re -f concat -i "/path/to/file/list.txt" \
-r 30 -s 1920x1080 -b:a 320k -ar 44100 -crf 23 -f hls -hls_time 4 -hls_list_size 4 -hls_wrap 8 /path/to/file/1080p.m3u8 \
-r 30 -s 1280x720 -b:a 320k -ar 44100 -crf 26 -f hls -hls_time 4 -hls_list_size 4 -hls_wrap 8 /path/to/file/720p.m3u8 \
-r 30 -s 854x480 -b:a 320k -ar 44100 -crf 28 -f hls -hls_time 4 -hls_list_size 4 -hls_wrap 8 /path/to/file/480p.m3u8

 

2019.19.19

修正一下,之前的命令已经被魔改

ffmpeg -threads 8 -max_interleave_delta 0 -re -f concat -i "/path/to/file/list.txt" \
-c:v libx264 -crf 25 -r 30 -s 1280x720 -b:a 320k -ar 44100 -f hls -hls_time 2 -hls_list_size 12 -hls_wrap 50 /path/to/file/720p.m3u8 \
-c:v libx264 -crf 30 -r 1 -s 2x2 -b:a 320k -ar 44100 -f hls -hls_time 2 -hls_list_size 12 -hls_wrap 50 /path/to/file/music.m3u8 \
-c copy -f hls -hls_time 2 -hls_list_size 12 -hls_wrap 50 /path/to/file/main.m3u8 \
-c copy -f flv "rtmp://127.0.0.1/live/full"

关于新版命令的说明:

第一行是导入视频和初始设定

第二行是转成720p

第三行是只播放音频,但是实际因为无法只输出音频所以加上了被处理后的视频(2x2

第四行是拷贝原视频的音视频流之后直接切片

第五行是输出到livego

 

播放器使用DPlayer,手机端其实可以直接输入m3u8地址进行收听

关于DPlayer的部署及使用,在其官网都有说明

不过咱是直接去公用cdn里找的相关文件,因为官网说的那两种安装方法咱都无法使用。。。

毕竟咱很菜,要是有谁能告诉咱到底该如何安装就好了。。。

 

剩下的就是映射到公网,收听即可

不过并没有用80和443端口,毕竟不想被查水表。。。

 

 

 

2019.8.31更新:行了,白研究了,可以说一个livego搞定一切,使用flv延迟还比hls低。。。。。。。。。。。。。。

2019.9.7更新:实际使用时发现flv并没有hls稳定,同时发现实时转换多分辨率对服务器负担也是比较大的,故改回hls并减少了可选分辨率

2019.10.19更新:更新了后续使用时的参数修改

这篇文章还没有人发言,快抢第一!

发表评论