【发布时间】:2021-04-05 17:53:31
【问题描述】:
我需要使用nodejs和vue框架在网站(http,vue框架)上显示直播视频(rtsp)。
我查了很多资料,了解了它们是什么以及它是如何工作的基本逻辑。 所以我打算使用socket.io将rtsp转换为带有nodejs的hls并将其显示在网络上。(如果有更有效的方法,请告诉我)
问题是,由于某种原因,当我尝试在我的后端(nodejs)中开发它时,节点只是不断向我发送一个错误,即找不到 FFMpeg 模块。已经一个多星期了..请帮忙。
顺便说一句,所有工作都与 ffmpeg cmd(window powerShell) 一起工作。
我如何设置(ffmpeg):
-
从https://ffmpeg.org/下载的ffmpeg
-
添加到系统路径:C:\Users\Marie\Desktop\ffmpeg-4.3.1-2020-11-19-full_build\bin\
-
用window powerShell测试并将rstp转换为m3u8:
ffmpeg -i 'rtsp://ip.ip.ip/media/video1' -hls_time 3 -hls_wrap 10 'C:\Users\Marie\Desktop\tmp\hls/streaming.m3u8'
我如何设置(nodejs)
- npm i ffmpeg fluent-ffmpeg rtsp-ffmpeg
- 我刚刚复制并粘贴了示例工作代码并将 rtsp 链接更改为我的。例如:(https://www.npmjs.com/package/rtsp-ffmpeg)
=> 没有成功,错误提示找不到 ffmpeg 模块
- 手动设置路径,例如)ffmpeg.setFfmpegPath(path)
=> 没有成功。错误说找不到ffmpeg模块
... 我已经认真尝试了几乎所有方法,例如删除、重新安装 ffmpeg、更改路径、多次添加路径、.. 请帮助....
编辑: 包.json
{
"name": "streaming",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node app.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"ffmpeg": "0.0.4",
"fluent-ffmpeg": "^2.1.2",
"jsmpeg": "^1.0.0",
"node-media-server": "^2.2.4",
"node-onvif": "^0.1.7",
"node-rtsp-stream": "0.0.9",
"rtsp-ffmpeg": "0.0.15",
"socket.io": "^3.0.4",
"ws": "^7.4.1"
}
}
app.js
const Stream = require('node-rtsp-stream')
// let path = 'C:/Users/Marie/Desktop/ffmpeg-4.3.1-2020-11-19-full_build/bin/ffmpeg.exe'
// let path = 'C:/Users/Marie/Desktop/ffmpeg-4.3.1-2020-11-19-full_build/bin/'
let path = 'C:/Users/Marie/Desktop/ffmpeg-4.3.1-2020-11-19-full_build/bin'
const ffmpeg = require('fluent-ffmpeg')
ffmpeg.setFfmpegPath(path)
stream = new Stream({
name: 'name',
streamUrl: 'rtsp://ip.ip.ip.ip/media/video1',
wsPort: 9999,
ffmpegOptions: { // options ffmpeg flags
'-stats': '', // an option with no neccessary value uses a blank string
'-r': 30 // options with required values specify the value after the key
}
})
错误:生成 ffmpeg ENOENT
app.js(用于另一个测试)
const app = require( 'express' )(),
server = require( 'http' ).Server( app ),
io = require( 'socket.io' )( server ),
rtsp = require( 'rtsp-ffmpeg' )
process.env.FFMPEG_PATH = 'C:/Users/Marie/Desktop/ffmpeg-4.3.1-2020-11-19-full_build/bin/ffmpeg.exe'
// console.log( rtsp.FFMpeg )
server.listen( 6147 )
var uri = 'rtsp://ip.ip.ip.ip/media/video1',
stream = new rtsp.FFMpeg( { input: uri } )
io.on( 'connection', function ( socket )
{
var pipeStream = function ( data )
{
socket.emit( 'data', data.toString( 'base64' ) )
}
stream.on( 'data', pipeStream )
socket.on( 'disconnect', function ()
{
stream.removeListener( 'data', pipeStream )
} )
} )
app.get( '/', function ( req, res )
{
res.sendFile( __dirname + '/index.html' )
} )
错误: 未找到 FMpeg 可执行文件。安装此包并检查 FFMpeg.cmd 属性
nodejs 版本 = 10.16.3
【问题讨论】:
-
粘贴您的代码(包括 package.json)和您收到的错误消息。也可以指出 Node.js 的版本。
-
@HernánAlarcón 我也添加了代码和 package.json!
标签: node.js vue.js ffmpeg rtsp fluent-ffmpeg