windows环境下使用nginx搭建hls推流(m3u8)
环境:
操作系统:windows7旗舰版64位
nginx:1.8.1
ffmpeg:4.1.3
下载nginx
官网地址:http://nginx.org/en/download.html
我使用的版本是nginx-1.8.1
下载解压,修改C:\nginx-1.8.1\conf\nginx.conf配置文件(C:\为安装目录,因为我的是c盘根目录)
其实这一步可以不做任何修改。这一步一般都是修好网站存放视频的目录路径的,用默认的html就可以了
继续修改同目录下的mime.types配置文件
在59行下面添加这两段代码
application/x-mpegURL m3u8;
application/vnd.apple.mpegurl m3u8;
继续在90行代码下添加这一段代码
video/MP2T ts;
到这里nginx配置安装部分完成,接下来就是ffmpeg的切片处理
(1)开启http服务器:双击nginx.exe
(2)使用ffmpeg将mp4格式文件转成TS格式文件:
记得使用该命令时,自己切换到视频文件目录下
进入盘符N C:\Users\Administrator>N: 盘符自己对应自己的电脑盘符
进入铁血战士目录 N:\>cd 铁血战士 铁血战士为目录,自己对应好,自己要进入的目录文件名称
dir 查看当前目录文件
ffmpeg -y -i input.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts
//input.mp4原文件名称,无指定路径,需手动切换到切片视频目录下进行该命令,
//output.ts转换之后出输ts文件名称
(3)使用ffmpeg将TS文件切成ts分片并产生m3u8文件:
ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 output%03d.ts
---------------------
//output.ts 这个看上条命令后面出输的文件名称。我这里是output.ts
//出输的m3u8文件索引文件名称,可以随意修改,我这里是playlist.m3u8
// -segment_time 10 每一段切片的控制时间,我这里是10s,根据你的情况随意修改
如果遇到将MP4转化为ts完整文件,然后将完整ts文件进行切片出现只有一个ts切片,并且不能正常使用nginx推流点播什么解决?
ts切片,正常应该有很多的切片文化才正常,ts切片只生成一个ts切片文件是因为原视频文件或者视频编码有问题,需要使用格式工厂进行一次mp4视频转码!
图1问题截图
ffmpeg转换ts文件出现Codec 'mpeg4' (12) is not supported by the bit stream filter 'h264_mp4toannexb'. Supported codecs are: h264 (27) Error initializing bitstream filter: h264_mp4toannexb 出现这个问题的话ts文件就是有问题了大小是0kb,不能切片
因为原视频文件或者视频编码有问题,需要使用格式工厂进行一次mp4视频转码!
图2问题截图
格式工厂转换mp4格式不需要什么修改,正常转换就行了
格式工厂设置截图
正常切片文件
图4
tip:格式工厂现在转码利用gpu转换的,所以转换的时间根据你显卡质量来决定转换需要的时间,慢慢来