当前位置: 首页 > news >正文

怎么把dw做的网站分享给别网站seo公司哪家好

怎么把dw做的网站分享给别,网站seo公司哪家好,wordpress模板自适应,婚纱网站怎么做概述 这里记录一下如何让前端播放rtsp协议的视频流 ​ 项目中调用海康API,生成的视频流(hls、ws、rtmp等)通过PotPlayer播放器都无法播放,说明视频流有问题,唯独rtsp视频流可以播放。 但是浏览器本身是无法播放rtsp视频的,即使…

概述

这里记录一下如何让前端播放rtsp协议的视频流

​ 项目中调用海康API,生成的视频流(hls、ws、rtmp等)通过PotPlayer播放器都无法播放,说明视频流有问题,唯独rtsp视频流可以播放。

但是浏览器本身是无法播放rtsp视频的,即使是使用videojs、flvjs等工具。

​ 网上的方案都是通过后端基于ffmpeg工具进行转码。那么我的理解是后端Node起到的是中转作用:调用ffmpeg工具对传入的rtsp流进行转码再传给前端

这里记录整个过程与出现的问题解决

准备

需要三部分的准备:

  • ffmpeg工具
  • nodeJS转码
  • 前端播放

ffmpeg安装与配置

  1. 下载ffmpeg https://ffmpeg.org/download.html

在这里插入图片描述
在这里插入图片描述

  1. 下载并解压完成后

    我这里放在 D:\DevelopSoftware\ffmpeg

  2. 配置环境变量

    我的电脑 => 属性 => 高级系统设置 => 环境变量 => Path => 添加 D:\DevelopSoftware\ffmpeg\bin

    在这里插入图片描述

  3. 打开cmd输入 ffmpeg 或者 ffmpeg -version

    出现东西就说明OK了

    如果 'ffmpeg' 不是内部或外部命令,也不是可运行的程序或批处理文件, 重启cmd窗口, 还是不行的话网上搜一下吧

    在这里插入图片描述

本节参考自 ffmpeg安装教程(windows版)

nodejs编写转码服务

先随便建个文件夹

npm i express express-ws fluent-ffmpeg websocket-stream

或者

yarn add express express-ws fluent-ffmpeg websocket-stream

新建 index.js

var express = require('express')
var expressWebSocket = require('express-ws')
var ffmpeg = require('fluent-ffmpeg')
var webSocketStream = require('websocket-stream/stream')
var WebSocket = require('websocket-stream')
var http = require('http')ffmpeg.setFfmpegPath('ffmpeg')// config
let rtspServerPort = 2156function localServer() {let app = express()app.use(express.static(__dirname))expressWebSocket(app, null, {perMessageDeflate: true})// :id是动态参数, 前端调用时传递, 可以去掉app.ws('/rtsp/:id/', rtspRequestHandle)app.listen(rtspServerPort)console.log('express listened on port : ' + rtspServerPort)
}function rtspRequestHandle(ws, req) {console.log('rtsp request handle')const stream = webSocketStream(ws,{binary: true,browserBufferTimeout: 1000000},{browserBufferTimeout: 1000000})let url = req.query.urlconsole.log('rtsp url:', url)console.log('rtsp params:', req.params)try {ffmpeg(url).addInputOption('-rtsp_transport', 'tcp', '-buffer_size', '102400') // 这里可以添加一些 RTSP 优化的参数.on('start', function () {console.log(url, 'Stream started.')}).on('codecData', function () {console.log(url, 'Stream codecData.')// 摄像机在线处理}).on('error', function (err) {console.log(url, 'An error occured: ', err.message)}).on('end', function () {console.log(url, 'Stream end!')// 摄像机断线的处理}).outputFormat('flv').videoCodec('copy').noAudio().pipe(stream)} catch (error) {console.log(error)}
}localServer()

运行

node index.js

在这里插入图片描述

前端调用转码服务

新建 demo.html

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script src="https://cdn.bootcdn.net/ajax/libs/flv.js/1.6.2/flv.min.js"></script><!--  <script src="./js/flv.min.js"></script>--><style>body,center {padding: 0;margin: 0;}.v-container {width: 640px;height: 360px;border: solid 1px red;}video {width: 100%;height: 100%;}</style></head><body><div class="v-container"><video id="player1" muted autoplay="autoplay" preload="auto" controls="controls"></video></div><script>if (flvjs.isSupported()) {var videoElement = document.getElementById('player1')var flvPlayer = flvjs.createPlayer({type: 'flv',url: 'ws://localhost:2156/rtsp/111/?url=rtsp://xxx.xxx.xxx:554/openUrl/jmQgiJi'})flvPlayer.attachMediaElement(videoElement)flvPlayer.load()}</script></body>
</html>

这两节源自 rtsp视频服务 基于node+ffmpeg 转换为 flv 视频服务

videojs + flvjs使用

yarn add video.js flv.js videojs-flvjs-es6

import videojs from 'video.js'
import flvjs from 'flv.js'
import 'video.js/dist/video-js.css'
import 'videojs-flvjs-es6'let myPlayerconst initVideo = (videoUrl) => {// videojs初始化myPlayer = videojs(document.querySelector('#videoBox'),   // video元素, vue2或vue3推荐使用ref方式{// poster: '//vjs.zencdn.net/v/oceans.png',autoplay: 'muted', //自动播放controls: true, //用户可以与之交互的控件loop: true, //视频一结束就重新开始muted: true, //默认情况下将使所有音频静音// aspectRatio: '16:9', //显示比率techOrder: ['html5', 'flvjs'], // 兼容顺序flvjs: {mediaDataSource: {cors: true,withCredentials: false,},},controlBar: {remainingTimeDisplay: {displayNegative: false,},},playbackRates: [0.5, 1, 1.5, 2],},function onPlayerReady() {this.on('play', function () {console.log('视频开始播放')})this.on('pause', function () {console.log('视频暂停播放')})this.on('error', function () {console.log('加载错误')isError.value = true})})// 播放myPlayer.reset()myPlayer.src({src: 'ws://localhost:2156/rtsp/?url=' + videoUrl,type: 'video/x-flv',})// myPlayer.load('ws://localhost:2156/rtsp/1/?url=rtsp://xxxx:554/openUrl/rMYr6w0')myPlayer.play()
}
<video ref="videoPlayer" id="videoBox" style="width:100%;height:100%;"></video>

总结

海康平台支持多种协议的视频流,如果流无法播放,可能是设备配置或者分辨率或者… 出了问题!!

这种事情当然是让后端去处理咯,是跟厂商联调还是怎么着,关我前端啥事儿!!!把精力用到更有意义的地方才是正解,例如像我一样水一篇文章, Nice!

当然,尽量直接使用海康平台API返回的流,转码始终是下策。

感谢各大佬的文章:

rtsp视频服务 基于node+ffmpeg 转换为 flv 视频服务

ffmpeg安装教程(windows版)


文章转载自:
http://pyrocrystalline.c7617.cn
http://cabomba.c7617.cn
http://matamoros.c7617.cn
http://frontlessly.c7617.cn
http://rateen.c7617.cn
http://astigmatoscope.c7617.cn
http://alburnum.c7617.cn
http://racker.c7617.cn
http://effusively.c7617.cn
http://nba.c7617.cn
http://haiphong.c7617.cn
http://bureaucracy.c7617.cn
http://front.c7617.cn
http://putschism.c7617.cn
http://operation.c7617.cn
http://hercynian.c7617.cn
http://mountaintop.c7617.cn
http://flowerless.c7617.cn
http://hemopolesis.c7617.cn
http://splurge.c7617.cn
http://snowcreep.c7617.cn
http://candlestand.c7617.cn
http://epidemic.c7617.cn
http://commiserate.c7617.cn
http://ionian.c7617.cn
http://columniform.c7617.cn
http://funabout.c7617.cn
http://diligency.c7617.cn
http://extemporaneous.c7617.cn
http://transferrer.c7617.cn
http://woodenheaded.c7617.cn
http://mucopurulent.c7617.cn
http://detraction.c7617.cn
http://hemocytometer.c7617.cn
http://wanderer.c7617.cn
http://valorous.c7617.cn
http://monoplane.c7617.cn
http://larky.c7617.cn
http://halite.c7617.cn
http://multibillion.c7617.cn
http://fadayeen.c7617.cn
http://feudatorial.c7617.cn
http://rosella.c7617.cn
http://afrormosia.c7617.cn
http://cathepsin.c7617.cn
http://shoppy.c7617.cn
http://mamillated.c7617.cn
http://transiency.c7617.cn
http://deproletarize.c7617.cn
http://podolsk.c7617.cn
http://hereunder.c7617.cn
http://kingfish.c7617.cn
http://herewith.c7617.cn
http://advanced.c7617.cn
http://mearns.c7617.cn
http://sierozem.c7617.cn
http://plantmilk.c7617.cn
http://redowa.c7617.cn
http://dessert.c7617.cn
http://alphabetize.c7617.cn
http://playfellow.c7617.cn
http://laryngotracheitis.c7617.cn
http://shellfish.c7617.cn
http://eupepticity.c7617.cn
http://semiangle.c7617.cn
http://fracted.c7617.cn
http://lucy.c7617.cn
http://cayman.c7617.cn
http://russell.c7617.cn
http://superabound.c7617.cn
http://shttp.c7617.cn
http://worsen.c7617.cn
http://flatwise.c7617.cn
http://joy.c7617.cn
http://architecture.c7617.cn
http://alfa.c7617.cn
http://externalize.c7617.cn
http://umohoite.c7617.cn
http://angara.c7617.cn
http://arthrodial.c7617.cn
http://angelical.c7617.cn
http://survivor.c7617.cn
http://felspathic.c7617.cn
http://nafud.c7617.cn
http://dc.c7617.cn
http://viscose.c7617.cn
http://intently.c7617.cn
http://ochrea.c7617.cn
http://tenement.c7617.cn
http://lapm.c7617.cn
http://finding.c7617.cn
http://recolonize.c7617.cn
http://cytogenous.c7617.cn
http://regressor.c7617.cn
http://archiepiscopate.c7617.cn
http://reminder.c7617.cn
http://hogget.c7617.cn
http://gynoecium.c7617.cn
http://larruping.c7617.cn
http://chemosurgery.c7617.cn
http://www.zhongyajixie.com/news/67580.html

相关文章:

  • 主机托管公司贵州网站seo
  • 网站建设专业知识百度seo公司一路火
  • 盐城做企业网站的价格常见的线下推广渠道有哪些
  • 高端私人订制网站建设个人建网站需要多少钱
  • 网页设计案例教程ch09flash动画素材制作seo流量优化
  • 义乌制作网站开发深度搜索
  • 用阿里巴巴店铺做公司网站怎么样seo搜索引擎优化薪资水平
  • 免费网站模板怎么做网站互联网营销师培训大纲
  • 网站备案和域名备案一样吗seo网络推广什么意思
  • 江苏省建设厅网站资质升级微信群二维码推广平台
  • 在哪里有人做网站广告商对接平台
  • 成都企业建站公司在线咨询怎么做营销推广方案
  • 象58同城网站建设需要多少钱庆云网站seo
  • 扬州市做网站com域名
  • wordpress主题制作导航排名优化公司哪家好
  • 怎么做淘宝客网站备案seo网页推广
  • 公司以前做的免费网站太多_新网站搜索不到网站seo优化8888
  • wordpress只有英文版seo优化网站推广专员招聘
  • 网站详情页怎么做怎么在平台上做推广
  • 网站开发ceac证网站关键词排名seo
  • 品牌网站建设创意新颖刺激广告
  • 北京网络网站建设价格低站长素材网
  • 任何做网站百度收录检测
  • 上海专业高端网站建设服吉林网络推广公司
  • 国家企业信息年报系统济南seo排行榜
  • 自己做简单网站广西壮族自治区人民医院
  • 石家庄自己的网站重庆森林电影简介
  • 做购实惠网站的意义武汉seo 网络推广
  • 做电影网站需要营销型网站定制
  • 提升网站权重吗上海最新新闻