2015-04-01 2 views
0

Я пытаюсь развернуть систему доставки в реальном времени с nginx и nginx-rtmp-модулем.Принудительное ffmpeg игнорировать ошибку при неудачном подключении

Для каждого узла в моей системе, я бы хотел, чтобы он мог «переслать» прямой поток, полученный в нижестоящий узел. Я пытаюсь реализовать его, следуя конфигурации в моем nginx.conf:

exec_push ffmpeg -i rtmp://localhost/src/test -vcodec copy -strict -2 -ar 44100 -ac 1 -f flv rtmp://<downstreaming A>/src/test -f flv rtmp://<downstreaming B>/src/test

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

Как я могу заставить ffmpeg игнорировать connetion refused, или есть лучшая альтернатива моей реализации?

ответ

0

Вы не можете игнорировать connection refused, так как RTMP использует TCP, которому требуется соединение.

Если я правильно понял, вы пытаетесь перекодировать RTMP-источник и отправлять его на несколько серверов.

  1. Вы можете продублировать команду, чтобы отправить каждый поток узла индивидуально, но вы будете делать транскодирование дважды.
  2. Альтернатива перекодировать и публиковать транскодированный поток, используя ffserver на той же машине, а затем нажмите, чтобы тянуть/на каждом сервере, вниз по течению
+0

Это именно то, что я хочу сделать. – Given92

+0

Возможная проблема решения 1 заключается в том, что CPU может быть перегружен, когда есть слишком много узлов ниже по течению, я боялся. Хотя проблема решения 2 заключается в том, что только восходящий узел знает начало прямого потока, а нижестоящие узлы нуждаются в дополнительном уведомлении. – Given92

+0

Затем перекодируйте один раз и нажмите на 'ffserver', затем' exec_push', используя несколько команд. – aergistal