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 

测试启动是否成功:

http://localhost:8888/

ffmpeg生成hls直播流_第1张图片

2.安装ffmpeg库

解压安装包,添加电脑环境变量,进入环境变量PATH,进行编辑,加入如:D:/ffmpeg/bin

ffmpeg -version

ffmpeg生成hls直播流_第2张图片

3.ffmpeg拉rtsp流实现文件的分片,并生成m3u8

ffmpeg -i "rtsp://admin:123@localhost:554/cam/realmonitor?channel=1&subtype=0" -vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/movie

ffmpeg生成hls直播流_第3张图片

文件分片结果,会根据配置在nginx\hls目录下生成分片数据
ffmpeg生成hls直播流_第4张图片

其中,M3U8文件格式如下:

ffmpeg生成hls直播流_第5张图片

  1. EXTM3U:M3U8文件标签头
  2. EXT-X-VERSION:M3U8文件版本号
  3. EXT-X-MEDIA-SEQUENCE:直播切片序列,动态更新,指导播放序列开始位置
  4. EXT-X-TARGETDURATION:最大分片的duration,浮点数四舍五入后的整数值
  5. EXTINF:每个分片的duration(秒)代表每个分片视频时间,","分割每个切片,*.ts为视频分片

4.vlc播放m3u8

使用vlc打开网络串流

http://localhost:8888/hls/movie.m3u8

ffmpeg生成hls直播流_第6张图片

正常情况下,视频播放

5.使用chrome浏览器播放



  
    
    video.js
    
    
    
    
  
  
    
    
  

ffmpeg生成hls直播流_第7张图片

你可能感兴趣的:(流媒体)