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

广东网站建设的母婴网站源码dede

广东网站建设的,母婴网站源码dede,python网站开发书籍推荐,品牌推广费用预算之前写的使用FFmpeg Nginx HLS流媒体播放方案#xff0c;适合对实时性要求不高的需求#xff0c;存在延迟#xff0c;FFmpeg需要将视频流存储到本地文件#xff0c;而本次方案FFmpeg不需要将视频流存储到本地文件#xff0c;而是直接将转换后的视频流#xff08;如MJPE…之前写的使用FFmpeg Nginx HLS流媒体播放方案适合对实时性要求不高的需求存在延迟FFmpeg需要将视频流存储到本地文件而本次方案FFmpeg不需要将视频流存储到本地文件而是直接将转换后的视频流如MJPEG格式通过标准输出stdout传递给WebSocket服务器WebSocket服务器再将数据实时推送到前端。这种方式是实时流传输适合需要低延迟的场景。 以下是详细的实现逻辑 1. FFmpeg 直接输出到 WebSocket 服务器 FFmpeg 通过命令行参数将 RTSP 流转换为 MJPEG 格式并将输出直接发送到标准输出stdout而不是保存到文件。WebSocket 服务器通过 Node.js 的 child_process 模块捕获 FFmpeg 的输出并将其转发给连接的客户端。 FFmpeg 命令 ffmpeg -i rtsp://your_rtsp_stream_url -f mjpeg -qscale:v 2 --i rtsp://your_rtsp_stream_url输入 RTSP 流地址。-f mjpeg输出格式为 MJPEG。-qscale:v 2设置视频质量值越小质量越高。-将输出发送到标准输出stdout而不是文件。 2. WebSocket 服务器捕获 FFmpeg 输出 WebSocket 服务器通过 Node.js 启动 FFmpeg 进程并监听其 stdout 数据流。每当 FFmpeg 输出一帧数据时WebSocket 服务器就将这帧数据发送给所有连接的客户端。 WebSocket 服务器代码 (server.js) const { spawn } require(child_process); const WebSocket require(ws);// 创建 WebSocket 服务器 const wss new WebSocket.Server({ port: 8080 });wss.on(connection, (ws) {console.log(Client connected);// 启动 FFmpeg 进程const ffmpeg spawn(ffmpeg, [-rtsp_transport, tcp, // 使用 TCP 传输 RTSP 流如果 UDP 不稳定-i, rtsp://admin:password192.168.1.60:554/Streaming/Channels/101/, // RTSP 流地址-f, mpegts, // 输出格式为 MPEG-TS-codec:v, mpeg1video, // 使用 MPEG-1 编码-s, 640x360, // 分辨率-b:v, 800k, // 视频比特率-bf, 0, // 禁用 B 帧-an, // 禁用音频pipe:1 // 输出到标准输出]);// 将 FFmpeg 的输出发送到 WebSocket 客户端ffmpeg.stdout.on(data, (data) {if (ws.readyState ws.OPEN) {ws.send(data); // 发送二进制数据}});// 处理 FFmpeg 的错误输出ffmpeg.stderr.on(data, (data) {console.error(FFmpeg error: ${data});});// 处理 FFmpeg 进程退出ffmpeg.on(close, (code) {console.log(FFmpeg process exited with code ${code});});// 客户端断开连接时关闭 FFmpeg 进程ws.on(close, () {console.log(Client disconnected);ffmpeg.kill(); // 杀死 FFmpeg 进程}); });console.log(WebSocket server is running on ws://localhost:8080);3. 前端使用 JsMpeg 播放视频流 前端通过 JsMpeg 库连接到 WebSocket 服务器并实时解码和播放 MJPEG 视频流。 前端代码 (index.html) !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleVideo Streaming/titlescript srchttps://cdn.jsdelivr.net/npm/jsmpeg/jsmpeg.min.js/script /head bodycanvas idvideo-canvas/canvasscript// 创建 JsMpeg 播放器const canvas document.getElementById(video-canvas);const player new JSMpeg.Player(ws://localhost:8080, {canvas: canvas});/script /body /html4. 运行流程 FFmpeg 从 RTSP 流中读取视频数据。将视频数据转换为 MJPEG 格式。将转换后的数据通过标准输出stdout发送。 WebSocket 服务器 启动 FFmpeg 进程并捕获其 stdout 数据。将捕获到的数据通过 WebSocket 发送给前端。 前端 使用 JsMpeg 连接到 WebSocket 服务器。接收并解码 MJPEG 数据实时显示在 canvas 中。 5. 优点 实时性视频流直接从 FFmpeg 推送到前端延迟较低。无需存储视频流不需要保存到本地文件节省磁盘空间。简单易用只需运行 FFmpeg 和 WebSocket 服务器即可。 6. 注意事项 FFmpeg 性能如果 RTSP 流的分辨率较高FFmpeg 的转换可能会占用较多 CPU 资源。可以通过调整 -qscale:v 参数来优化性能。网络带宽MJPEG 格式的视频流数据量较大确保网络带宽足够。WebSocket 连接数如果有多个客户端连接WebSocket 服务器需要处理更多的数据转发可能会增加服务器负载。 7. 总结 通过这种方式FFmpeg 直接将 RTSP 流转换为 MJPEG 格式并输出到 WebSocket 服务器WebSocket 服务器再将数据实时推送到前端前端使用 JsMpeg 进行播放。整个过程无需存储视频文件适合实时视频流传输的场景。
http://www.w-s-a.com/news/217369/

相关文章:

  • 公司网站建设费用会计处理手机app免费下载
  • 网站的做网站的公司网站有些什么内容
  • 网站新类型wordpress 随机文章
  • 电商网站建设会计分录朝阳市网站公司
  • 正邦网站建设 优帮云百姓网征婚
  • 企业网站有哪些举几个例子端午节网站建设目的
  • 南京免费发布信息网站网站建设与管理职责
  • 无锡市建设培训中心网站企业vi设计是啥
  • 宿松网站建设推荐秒搜科技国家官方网站
  • 网站的服务器选择wordpress文章底部加分享
  • 天津专业的网站建设公司阿里云服务器 wordpress
  • 家教辅导培训网站建设中东跨境电商平台有哪些
  • 商城形式的网站需要多少钱做医药商城网站的公司吗
  • 贵阳网站设计zu97彩票创建网站
  • 网站建设与分工的论文足球世界排名
  • 网站首页添加标签如何用模板建站
  • 官方网站包括哪几个网站泰安的网站建设公司哪家好
  • 域名虚拟服务器做网站如何搭建企业网站
  • 用手机做网站服务器口碑好的常州网站建设
  • 摄影网站的设计与实现开题报告太原企业自助建站
  • 做如美团式网站要多少钱做网站怎么去文化局备案
  • 桂平市住房和城乡建设局网站网站建设与管理自考题
  • 怎么做公司网站制作凡科官方网
  • 达人设计网官方网站建筑效果图网站有哪些
  • 网站定制哪家快建筑室内设计网
  • 网站创建方案论文旅游网站的设计与制作html
  • 网站建设的数据导入导出开发小程序需要多少钱费用
  • 局网站建设进入前十名wordpress user role editor
  • 网站托管如何收费搜一下百度
  • 中国建设劳动协会网站wordpress 区块链媒体