我目前正在开发一个 Node.js 项目,需要使用 ffmpeg 实现流式传输。但是,我在流处理过程中遇到了问题,因为我看到的是空白屏幕,而不是预期的视频流。
这是我迄今为止在服务器端所做的简要概述:
安装了ffmpeg并确保它在环境中可以访问。 为流处理配置服务器端代码。 然而,尽管做出了这些努力,流仍无法正常工作,并且我无法在客户端看到视频流。
服务器端代码: 应用程序.js
const express = require('express');
const Stream = require('node-rtsp-stream');
const app = express();
const port = 4000;
// Start the RTSP stream
const stream = new Stream({
name: 'rtsp_server_name',
streamUrl: 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4',
wsPort: 3000,
ffmpegOptions: {
'-stats': '', // an option with no necessary value uses a blank string
'-r': 30, // options with required values specify the value after the key
},
});
stream.on('data', data => {
console.log(data);
});
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
index.html
<html>
<body>
<canvas id="canvas"></canvas>
</body>
<h1>Test rtsp video</h1>
<script type="text/javascript" src="js/jsmpeg.min.js"></script>
<script type="text/javascript">
player = new JSMpeg.Player('ws://localhost:3000', {
canvas: document.getElementById('canvas'), // Canvas should be a canvas DOM element
});
</script>
</html>
不使用本地主机。使用您的 PC 的本地 IP。 打开CMD并输入
ifconfig
。 IP4你的机器ip。
<html>
<body>
<canvas id="canvas"></canvas>
</body>
<h1>Test rtsp video</h1>
<script type="text/javascript" src="js/jsmpeg.min.js"></script>
<script type="text/javascript">
player = new JSMpeg.Player('ws://192.168.0.100:3000', {
canvas: document.getElementById('canvas'), // Canvas should be a canvas DOM element
});
</script>
</html>