Skip to content

Публикация в статический поток

Здесь мы расскажем о том, как настроить публикацию видео на сервер Flussonic и чем эти настройки отличались в предыдущих версиях Flussonic Media Server.

Об URL для доступа к публикуемому потоку по разным протоколам см. в разделе о публикации.

Начиная с версии 19.01, используется новый параметр для настройки публикации видео в статический поток. Новый параметр input publish:// автоматически заменяет старый publish_enabled при первом сохранении конфигурации.

Caution

Рекомендуем сделать резервную копию конфигурационного файла Flussonic перед внесением в него изменений в новой версии 19.01. Обновленный файл конфигурации станет несовместим с предыдущими версиями Flussonic.

Как включить публикацию в версии 19.01 и выше:

stream published {
    input publish://;
}

Параметр 'input publish://' предлагает больше возможностей для управления публикуемым потоком. Он позволяет:

Переключение источников, timeout

В предыдущих версиях можно было лишь включать и выключать источник публикации.

Теперь правила переключения источников в соответствии с их приоритетом и состоянием (работает поток или нет) распространяются и на публикуемые источники. Поэтому можно добавить в поток с публикуемым источником другие, альтернативные, источники и переключаться на них по timeout.

Если источник публикации недоступен, по умолчанию Flussonic сразу переключается на следующий источник. Но можно и указывать свой timeout.

Пример с несколькими источниками и timeout источников:

stream published {
    source_timeout 3;
    input publish://;
    input file://vod/bunny.mp4;
}

Timeout можно указать и для каждого источника:

stream published {
    input publish:// source_timeout=3;
    input file://vod/bunny.mp4 source_timeout=2;
}

Запрещение публикации и событие publish_forbidden

Когда источник input publish:// ниже приоритетом, чем остальные указанные источники потока, то это может значить, что публикация фактически не произойдет. Вы можете запрещать публикацию и вновь разрешать ее, изменив приоритет источников. Это можно сделать и во время трансляции.

Если публикация невозможна, Flussonic генерирует событие publish_forbidden. Например, это событие возникнет при следующей конфигурации, если файл stub.mp4 существует и успешно проигрывается:

stream published {
    source_timeout 3;
    input file://vod/bunny.mp4;
    input publish://;
}

Чтобы разрешить публикацию, поместите источник публикации перед файлом.

Транскодирование публикации

Укажите директиву transcoder в настройках потока для перекодирования входного потока. Flussonic понимает такую запись для RTMP потоков. Для WebRTC директива transcoder будет работать в будущих версиях, однако сейчас можно использовать специфичные для WebRTC опции транскодирования (ниже на этой странице).

stream published {
    source_timeout 3;
    input publish://;
    input file://vod/bunny.mp4;
    transcoder vb=1024k vcodec=h264 open_gop=false preset=veryfast ab=64k;
}

Опции для публикуемых WebRTC потоков

Для WebRTC источников предусмотрены специфичные опции транскодирования, которые вы можете использовать вместе с input publish: //.

Синтаксис настройки транскодирования для WebRTC потоков:

input publish:// [output_audio=(keep|add_aac|aac)] [prefer_codec=(h264|vp8|vp9)]

  • output_audio=(keep|add_aac|aac). Указывает, как транскодировать аудио. Можно получить результирующее аудио в AAC (aac), AAC+Opus (add_aac) или Opus (keep). То есть чтобы не менять входную аудиодорожку, нужно выбрать keep.

    По умолчанию используется add_aac — входные потоки, которые обычно имеют аудио в Opus, на выходе получают также дополнительную дорожку в AAC.

  • prefer_codec=(h264|vp8|vp9). Позволяет на старте публикации предложить один из перечисленных видеокодеков. По умолчанию используется кодек H264. Видео в VP8 и VP9 проходит без транскодирования, его поддержка будет реализована в будущем.

Пример:

stream published {
    input publish:// output_audio=aac;
}

Опции аудио для публикуемых RTMP потоков

Если публикуемый RTMP поток содержит аудио в PCMU, то вы можете транскодировать его в AAC либо указать, что аудио транскодировать не следует:

  • output_audio=(keep|add_aac|aac). Опция указывает, как транскодировать аудио. Можно получить результирующее аудио в AAC (aac), AAC+PCMU (add_aac) или PCMU (keep). То есть чтобы не менять входную аудиодорожку, нужно выбрать keep.

    По умолчанию используется add_aac — входные потоки на выходе получают также дополнительную дорожку в AAC.

Эту опцию укажите вместе с input publish: //.

Синтаксис настройки транскодирования аудио:

input publish:// [output_audio=(keep|add_aac|aac)]

stream published {
    input publish:// output_audio=keep;
}