ffmpeg生成hls直播流
ffmpeg生成hls流
1.nginx搭建Http服务器
配置nginx-win-rtmp.conf文件;这个配置可以进行推rtmp流,也可以推hls的流。配置中追加
rtmp {
application hls {
live on;
hls on;
hls_path hls;
hls_fragment 5s;
}
}
}
http {
server {
listen 8888;
server_name localhost;
location /hls {
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias hls;
expires -1;
add_header Access-Control-Allow-Origin *;
}
}
}
启动nginx服务
cd E:\nginx-1.7.11.3-Gryphon
nginx.exe -c conf\nginx-win-rtmp.conf
测试启动是否成功:
2.安装ffmpeg库
解压安装包,添加电脑环境变量,进入环境变量PATH,进行编辑,加入如:D:/ffmpeg/bin
ffmpeg -version
3.ffmpeg拉rtsp流实现文件的分片,并生成m3u8
ffmpeg -i "rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0" -vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/movie
文件分片结果,会根据配置在nginx\hls目录下生成分片数据
其中,M3U8文件格式如下:
- EXTM3U:M3U8文件标签头
- EXT-X-VERSION:M3U8文件版本号
- EXT-X-MEDIA-SEQUENCE:直播切片序列,动态更新,指导播放序列开始位置
- EXT-X-TARGETDURATION:最大分片的duration,浮点数四舍五入后的整数值
- EXTINF:每个分片的duration(秒)代表每个分片视频时间,","分割每个切片,*.ts为视频分片
4.vlc播放m3u8
使用vlc打开网络串流
http://localhost:8888/hls/movie.m3u8
正常情况下,视频播放
5.使用chrome浏览器播放
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>video.js</title>
<link href="https://unpkg.com/[email protected]/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/[email protected]/dist/video.min.js"></script>
<script src="https://unpkg.com/videojs-flash/dist/videojs-flash.js"></script>
<script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
</head>
<body>
<video id="my-player" class="video-js" controls>
<source src="http://localhost:8888/hls/movie.m3u8" type="application/x-mpegURL">
<p class="vjs-no-js">
not support
</p>
</video>
<script type="text/javascript">
var player = videojs('my-player',{
width:400,
heigh:200
});
</script>
</body>
</html>