Как на node.js выдернуть кадры из rtsp без сохранения?

Для того чтобы выдернуть кадры из RTSP без сохранения на Node.js, вы можете использовать библиотеку node-rtsp-stream в сочетании с ffmpeg.

Шаги:

1. Установите библиотеки node-rtsp-stream и ffmpeg с помощью npm.

npm install node-rtsp-stream

2. Создайте новый файл JavaScript и подключите необходимые модули:

const RtspStream = require('node-rtsp-stream');
const exec = require('child_process').exec;

3. Создайте объект RtspStream с указанием параметров RTSP-источника:

const rtspUrl = 'rtsp://your_rtsp_url';
const stream = new RtspStream({
  name: 'stream', // название потока
  url: rtspUrl,
  port: 8888 // порт для смотреть поток
});

4. Настроим буферизацию кадров в памяти для дальнейшей обработки:

stream.start();
stream.on('data', function (data) {
  // обработка каждого кадра
});

5. Для обработки каждого кадра, вы можете использовать ffmpeg с использованием пайпов, чтобы избежать сохранения на диск:

const ffmpegCommand = `ffmpeg -i pipe:0 -vf "your_filters" -f rawvideo -pix_fmt rgb32 -`; // замените "your_filters" на нужные вам фильтры
const ffmpeg = exec(ffmpegCommand);

stream.on('data', function (data) {
  ffmpeg.stdin.write(data); // отправляем данные на вход ffmpeg
});

stream.on('stop', function () {
  ffmpeg.stdin.end(); // когда поток остановлен, закрываем вход ffmpeg
});

Здесь мы создаем команду ffmpeg для обработки кадров. pipe:0 указывает на входной поток данных, который мы передаем через пайп, а - говорит ffmpeg выводить результат в stdout.

6. Обработайте каждый кадр внутри ffmpeg с помощью обработчиков событий:

ffmpeg.stdout.on('data', function (frame) {
  // обработка каждого кадра
});

ffmpeg.stderr.on('data', function (err) {
  console.error(err); // выводим ошибки в случае возникновения
});

ffmpeg.on('exit', function () {
  console.log('ffmpeg process exited'); // выводим сообщение, когда ffmpeg завершен
});

Теперь у вас есть основа для выдергивания кадров из RTSP потока без сохранения их на диск на Node.js. Вы можете настроить обработчики событий в соответствии с вашими потребностями и добавить дополнительную логику по обработке кадров.