FFMPEG拉监控视频流输出HLS进行实时预览
海康RTSP流格式:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
说明:
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。
例如,请求海康摄像机通道1的主码流,Url如下
主码流:
rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream
子码流:
rtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream
大华RTSP视频流:
rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0
说明:
username: 用户名。例如admin。
password: 密码。例如admin。
ip: 为设备IP。例如 10.7.8.122。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。
例如,请求某设备的通道1的主码流,Url如下
rtsp://admin:admin@10.12.4.84:554/cam/realmonitor?channel=1&subtype=1
ffmpeg拉流命令说明
ffmpeg -i {rtsp} -fflags flush_packets -max_delay 1 -an -flags -global_header -hls_time 1 -hls_list_size 5 -hls_wrap 5 -vcodec copy -y {m3u8}
说明:
rtsp是监控视频充
m3u8是输出的hls索引文件,需要全路径
如果摄像头是h265等其它编码格式,就需要进行编码转换
ffmpeg -i {rtsp} -fflags flush_packets -max_delay 1 -an -flags -global_header -hls_time 1 -hls_list_size 5 -hls_wrap 5 - -c:v libx264 -c:a aac -y {m3u8}
使用VideoJS进行播放
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <video id="video" width="640" height="360"></video> <script> if(Hls.isSupported()) { var video = document.getElementById('video'); var hls = new Hls(); hls.loadSource('65.m3u8');//m3u8访问文件路径,需要apache或nginx等web服务器配合 hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED,function() { video.play(); }); } </script>