海康威视监控使用html播放

news/2024/11/17 17:41:30/

欢迎访问我的个人博客
https://ximikang.icu

存在的问题

  • rtsp
    无法直接在网页端播放,需要插件的支持。不考虑。
  • rtmp
    可以在网页播放,但是播放器需要flash的支持,chrome在2020年后对flash的支持十分不友好,但是延迟比较底。
  • hls
    可以在网页播放,也不需要插件和flash的支持,但是缺点在于hls将网页进行切片传输,每次切片都会造成时间的延迟,而且在网络不好的地方,视频会有克顿和无法播放的现象。

本文使用ffmpeg对网络镜头的视频流进行转码为hls,通过nginx进行代理,网页端通过hls.js显示网络镜头的画面。

ffmpeg转码为hls

通过ffmpeg将rtsp转码为hls,转码的输入为网络摄像机的子码流,视频和音频的解码直接使用镜头的解码编码器h264和acc。-hls_time 为 hls切片的时间间隔,时间越短则延迟越低,但是传输的带宽越大对服务器要求更高,-hls_list_size为.m3u8文件的长度,-hls_wrap为本地交换文件的大小。

start ffmpeg ^
-i rtsp://username:password@192.168.1.123/Streaming/Channels/102?transportmode=unicast  ^
-c copy ^
-f   hls  ^
-hls_time 1.0 ^
-hls_list_size 2 ^
-hls_wrap   2  ^C:/nginx-1.19.2/html/hls/test.m3u8

搭建nginx并配置

nginx.conf配置文件


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;# 跨域访问add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,OPTIONS;#access_log  logs/access.log  main;sendfile        on;keepalive_timeout  65;server {listen       80;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}
}

前端视频显示

前端为了能够播放hls, 使用hls.js播放直播视频,hls.js不需要任何的播放器,可以直接在video元素上运行

https://www.npmjs.com/package/hls.js/v/canary

  • html
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>hls test</title>
</head><body><h1>hls test</h1><script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script><video id="video"></video><script>var video = document.getElementById('video');// 视频的路径var videoSrc = 'http://localhost/hls/test.m3u8';if (Hls.isSupported()) {var hls = new Hls();hls.loadSource(videoSrc);hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED, function () {video.play();});}else if (video.canPlayType('application/vnd.apple.mpegurl')) {video.src = videoSrc;video.addEventListener('loadedmetadata', function () {video.play();});}</script>
</body></html>
  • vue
<template><div><video ref="videoRef" height="500px" autoplay /></div>
</template><script>
import Hls from 'hls.js'
export default {data() {return {hls:''}},mounted: function() {const videoRef = this.$refs.videoRefconst url = 'http://localhost/hls/test.m3u8'this.hls = new Hls();this.hls.loadSource(url)this.hls.attachMedia(this.$refs.videoRef)this.hls.on(Hls.Events.MANIFEST_PARSED, () => {console.log('加载成功');this.$refs.video.play();});this.hls.on(Hls.Events.ERROR, (event, data) => {console.log('加载失败');});}
}
</script>

最终显示效果

ents.ERROR, (event, data) => {
console.log(‘加载失败’);
});
}
}


## 最终显示效果
[外链图片转存中...(img-rJgF5M8K-1600331960000)]视频的延迟大概有3-4秒,对于实时性较高的应用还是达不到要求。

http://www.ppmy.cn/news/508472.html

相关文章

CPU与内存控制器相关知识点科普

QPI、CPU、MC这些名词太专业&#xff0c;还是举例来说吧。 有一个科学家&#xff08;CPU核心&#xff09;在实验室&#xff08;CPU&#xff09;做研究&#xff0c;要看很多很多资料。 图书馆有一个管理员&#xff08;MC&#xff0c;内存控制器&#xff09;帮科学家从图书馆&a…

『GoLang』协程与通道

作为一门 21 世纪的语言&#xff0c;Go 原生支持应用之间的通信&#xff08;网络&#xff0c;客户端和服务端&#xff0c;分布式计算&#xff09;和程序的并发。程序可以在不同的处理器和计算机上同时执行不同的代码段。Go 语言为构建并发程序的基本代码块是 协程 (goroutine) …

Java总结(一、JVM内存结构)

参考&#xff1a;http://www.hollischuang.com/archives/80 https://iamjohnnyzhuang.github.io/java/2016/07/12/Java%E5%A0%86%E5%92%8C%E6%A0%88%E7%9C%8B%E8%BF%99%E7%AF%87%E5%B0%B1%E5%A4%9F.html https://mritd.me/2016/03/22/Java-%E5%86%85%E5%AD%98%E4%B9%8B%E6%96…

STM32CUBEIDE(10)----ADC在DMA模式下扫描多个通道

STM32CUBEIDE.10----ADC在DMA模式下扫描多个通道 概述样品申请视频教学csdn课程代码下载生成例程STM32CUBEIDE配置串口重定向代码测试结果 概述 本章STM32CUBEMX配置STM32F103的ADC在DMA模式扫描多个通道&#xff0c;通过串口进行打印。 最近在弄ST和GD的课程&#xff0c;需要…

内存和CPU匹配方法详解

目录 1.内存和CPU的有关数据 2.内存跟CPU搭配的基本原则 3.在Intel平台实现频率同步的方法 4.在Intel平台实现带宽相等的计算方法 5.在Intel平台用主板调控内存运行参数的方法 6.在Intel 平台没有FSB了&#xff0c;怎么配内存 7.内存的双通道的设置问题 8.在AMD K8以前…

单内存16g和双8g差别大吗_内存单根16G和两根8G有多大差别?原来里面的讲究这么多,绝了!...

内存有多重要&#xff1f; 在玩游戏的时候&#xff0c;你们就被安排的明明白白了&#xff01;比如说你的内存只有4GB&#xff0c;但是游戏有将近6G的数据&#xff0c;结果就是处理器和内存条无法顺利交换数据&#xff0c;拖慢整个系统运行速度&#xff0c;游戏卡成定格动画&…

一步成高手:终极图解内存(下篇)

http://www.qqread.com/pcbase/2007/04/c306543.html 希望对大家有帮助&#xff0c;相信你看完就能成为高手了。 点击查看大图 DDR内存芯片的内部结构图&#xff0c;注意比较上文中SDRAM的结构图 这也是一颗128Mbit的内存芯片&#xff0c;标称规格也与前文的SDRAM一样为324bit。…

内存系列二:深入理解硬件原理

本篇文章承接上文继续介绍DDR内存的硬件原理&#xff0c;包括如何寻址&#xff0c;时序和时延以及可以为提高内存的效能可以有哪些方法。 上次虽然解决了小张的问题&#xff0c;却引发了他对内存原理的兴趣。这不他又来找我了&#xff0c;说我还欠他一个解释。这次我们约在一个…