首页 > 编程语言 >node.js用ffmpeg切rtsp实时视频流为mp4,并且在网页上播放

node.js用ffmpeg切rtsp实时视频流为mp4,并且在网页上播放

时间:2023-04-28 18:25:08浏览次数:52  
标签:node info tracking ffmpeg url rtsp error logger

用express.js框架,这部分太简单了,省略
npm或者yarn安装fluent-ffmpeg

路由部分代码:

router.rtspTrackingHandle = function (req, res) {
    logger.info('[tracking]: rtsp handle');
    let url = req.query.url || '';
    // let url = 'rtsp://admin:[email protected]:554/h264/ch1/main/av_stream';
    logger.info('[tracking]: rtsp url: ' + url);
    url = url.replace(/&/g, '%26'); // 大华摄像头的特殊符号转义
    logger.info('[tracking]: rtsp params: ', JSON.stringify(req.params));
    try {
        ffmpeg(url)
            .addInputOption('-rtsp_transport', 'tcp', '-buffer_size', '102400') // 这里可以添加一些 RTSP 优化的参数
            .on('start', function () {
                logger.info('[tracking]: Stream started.' + url);
            })
            .on('codecData', function () {
                logger.info('[tracking]: Stream codecData.' + url);
                // 摄像机在线处理
            })
            .on('error', function (err) {
                logger.error('[tracking]: An error occured: ' + `[${url}]::` + `[${err}]`);
            })
            .on('end', function () {
                logger.info('[tracking]: Stream end!' + url);
                // 摄像机断线的处理
            })
            .outputOptions(['-movflags isml+frag_keyframe'])
            .toFormat('mp4').noAudio().pipe(res, { end: true });
    } catch (error) {
        logger.error('[tracking]: ' + error.stack);
    }
};

前端代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,
				initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>video player</title>
</head>

<body>
    <video autoplay="autoplay">
        <source src="http://localhost:3002/live/tracking" type="video/mp4">
    </video>
</body>

</html>

标签:node,info,tracking,ffmpeg,url,rtsp,error,logger
From: https://www.cnblogs.com/JohannaFeng/p/17362891.html

相关文章

  • C#:使用ffmpeg将图片合并成视频
    最近遇到公司的一个项目,需要将多张图片合并成一个播放的视频,找了很多资料和尝试了工具,遇到很多的坑,这里记下来,希望大家也能顺利解决遇到的问题。合并视频,主要可以借用OpenCV和 ffmpeg,这里是尝试用ffmpeg.exe的工具去实现图片文件合并成视频。输入存储视频文件的路......
  • NodeJS定时任务 注:2023-4-28更新
     使用的node-schedule 设置定时任务 引入constschedule=require('node-schedule'); 参数解析schedule.scheduleJob(******)接收六个参数,位置分别如下,如果不需要,填*号即可,*代表通配符6个占位符从左到右分别代表:秒、分、时、日、月、周几*表示通配符,匹配......
  • python 检查rtsp流是否可用
    importcv2fromfunc_timeoutimportfunc_set_timeout,exceptionsdefcheck_rtsp_stream(url):@func_set_timeout(2)defparse_rtsp_stream(rtsp_address):try:cap=cv2.VideoCapture(rtsp_address)cap.set(cv2.CAP_PRO......
  • Hadoop启动集群报错:Starting namenodes on [hadoop01] hadoop01: root@hadoop01: Per
    搭建三个hadoop集群的时候,master没有启动namenode和datanode,报错:Startingnamenodeson[hadoop01]hadoop01:root@hadoop01:Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic,password).Startingdatanodeshadoop01:root@hadoop01:Permissiondenied(publicke......
  • 在web端实现rtsp流的视频的播放
    相关了解我们已经知道了如何在如何使用VLC工具播放rtsp视频流了,那么,我们应当如何相关步骤搜索历经看到网络上有一种在浏览器安装插件的方法,但是网友并不推荐,表示有的浏览器版本即便安装了插件也是不支持的;然后又看到第二种方法--后台转成rtmp形式,然后看到网友同样持有不推荐......
  • 2022-04-27:用go语言重写ffmpeg的remuxing.c示例。
    2022-04-27:用go语言重写ffmpeg的remuxing.c示例。答案2022-04-27:ffmpeg的remuxing.c是一个用于将多媒体文件从一种容器格式转换为另一种容器格式的命令行工具。它可以将音频、视频和字幕等元素从源文件中提取出来,并按照用户指定的方式重新封装到目标文件中。在本篇文章中,我将对ffmp......
  • 常见网络摄像机(摄像头)的端口及RTSP地址
    海康威视默认IP地址:192.168.1.64/DHCP用户名admin密码自己设端口:“HTTP端口”(默认为80)、“RTSP端口”(默认为554)、“HTTPS端口”(默认443)和“服务端口”(默认8000),ONVIF端口80。RTSP地址:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream......
  • ubuntu安装nodejs 14
    nodejs的每个大版本号都有相对应的源,比如这里的10.x.x版本的源是https://deb.nodesource.com/setup_10.x。所以在终端执行:curl-sLhttps://deb.nodesource.com/setup_14.x|sudo-Ebash-点击查看命令解释这个命令是用来添加Node.js14.x的仓库地址。具体来说,它通......
  • [INS-42017] The Grid home is inconsistent on the following nodes: [11grac2]
    1、一套11.2.0.4RAC的测试环境,集群被捣鼓坏了,打算deconfig后,运行config.sh脚本重新配置集群。2、运行config.sh脚本,在检测环境时,遇到如下故障:[INS-42017]TheGridhomeisinconsistentonthefollowingnodes:[11grac2] 3、搜索MOS,找到文档《config.sh:[INS-32167]The......
  • 使用rtsp相关流程记录(致健忘的自己)
    相关步骤打开项目下的python文件夹里面的exe文件,双击运行(运行rtsp-simple-server)弹出这样一个界面:在该界面打开的情况下,在idea的Terminal写入相关命令(运行rtsp-simple-server之后,写入命令实现推流)ffmpeg-re-stream_loop-1-iin.mp4-ccopy-frtsprtsp://localhost:85......