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>

  

 

posted @ 2021-06-20 21:32  教育软件工作室  阅读(931)  评论(0编辑  收藏  举报