Транскодирование камеры потока по требованию - PullRequest
0 голосов
/ 03 февраля 2019

Я использую VLC для перекодирования потока rtsp с IP-камеры в поток http mjpg с помощью следующей команды:

cvlc -vvv -Idummy -q rtsp://user:password@hostname:554 --sout '#transcode{vcodec=MJPG,venc=ffmpeg{strict=1}}:standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:8081/}'

Это прекрасно работает.

Мне не нужно все время транскодировать поток, а только его часть.VLC транскодирует, даже если клиент не подключен.При этом на моем сервере постоянно используется целое ядро ​​ЦП.

Есть ли возможность начать транскодирование, только если подключен хотя бы один клиент, и прекратить транскодирование, если последний клиент отключен?

Большое спасибо!

1 Ответ

0 голосов
/ 04 февраля 2019

Я думаю, что вы спрашиваете, можете ли вы запустить приведенную выше команду командной строки с вашего сервера - если так, то это зависит от сервера и языка, но в целом да, вы можете.

Ваш серверлогика будет выглядеть примерно так:

Когда клиент подключается:

  • , если это первый клиент, запустите команду для запуска транскодирования
  • предоставьте ссылку напоток к клиенту

Когда клиент отключается:

  • , если это последний клиент, остановите транскодирование

Там будетзадержка для первого клиента, поскольку поток буферизуется, но я предполагаю, что вы уже знаете это.

Способ выполнения команды будет зависеть от сервера, но обычно вы можете найти примеры - например, для Node: Выполните двоичный файл командной строки с Node.js

Если вы используете Java, есть очень хорошо известная и полезная статья по запуску строки cmd из Java - даже если вы не используетеЯва хорошо читать: https://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html

...