Публикация в статический поток
Здесь мы расскажем о том, как настроить публикацию видео на сервер 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
- запрещать публикацию путем активации другого источника потока
- транскодировать публикуемый поток
- публиковать видео по WebRTC
Переключение источников, 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;
}