|
|
|
@ -1,4 +1,4 @@
@@ -1,4 +1,4 @@
|
|
|
|
|
**streamsaver** - сценарий сохранения аудиопотоков |
|
|
|
|
**streamsaver** - сценарий сохранения и ретрансляции аудиопотока |
|
|
|
|
|
|
|
|
|
##Лицензия |
|
|
|
|
Copyright (C) 2011-2016, Maxim Lihachev, <envrm@yandex.ru> |
|
|
|
@ -17,85 +17,85 @@
@@ -17,85 +17,85 @@
|
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
|
|
|
|
|
|
##streamsaver |
|
|
|
|
Обработчик аудиопотоков с нарезкой их в файлы и ретрансляцией на icecast |
|
|
|
|
Обработчик аудиопотоков с нарезкой их в файлы и ретрансляцией на icecast |
|
|
|
|
|
|
|
|
|
Сценарий принимает аудиопоток с оборудования, по UDP или TCP, |
|
|
|
|
фрагментирует его на отрезки заданной длины для последующего хранения и |
|
|
|
|
анализа, а также ретранслирует поток на сервер радиовещания icecast для |
|
|
|
|
прослушивания аудио конечным пользователем. |
|
|
|
|
Сценарий принимает аудиопоток с оборудования, по UDP или TCP, |
|
|
|
|
фрагментирует его на отрезки заданной длины для последующего хранения и |
|
|
|
|
анализа, а также ретранслирует поток на сервер радиовещания icecast для |
|
|
|
|
прослушивания аудио конечным пользователем. |
|
|
|
|
|
|
|
|
|
##streamproxy |
|
|
|
|
Проксирование аудиопотока на Icecast. |
|
|
|
|
Проксирование аудиопотока на Icecast. |
|
|
|
|
|
|
|
|
|
Сценарий принимает аудиопоток с оборудования, по UDP или TCP, |
|
|
|
|
и ретранслирует поток на сервер радиовещания icecast для |
|
|
|
|
получения сигнала другими программами и прослушивания аудио конечным |
|
|
|
|
пользователем. |
|
|
|
|
Сценарий принимает аудиопоток с оборудования, по UDP или TCP, |
|
|
|
|
и ретранслирует поток на сервер радиовещания icecast для |
|
|
|
|
получения сигнала другими программами и прослушивания аудио конечным |
|
|
|
|
пользователем. |
|
|
|
|
|
|
|
|
|
Проксирование будет доступно только при задании в файле настроек опции |
|
|
|
|
<proxy>1</proxy> |
|
|
|
|
Проксирование будет доступно только при задании в файле настроек опции |
|
|
|
|
<proxy>1</proxy> |
|
|
|
|
|
|
|
|
|
##Использование |
|
|
|
|
streamsaver/streamproxy <файл настроек> - xml-файл с описанием входящего и |
|
|
|
|
выходящего потоков и правилами фрагментирования записей. |
|
|
|
|
streamsaver/streamproxy <файл настроек> - xml-файл с описанием входящего и |
|
|
|
|
выходящего потоков и правилами фрагментирования записей. |
|
|
|
|
|
|
|
|
|
##Файл настроек |
|
|
|
|
```xml |
|
|
|
|
<xml> |
|
|
|
|
<!-- Название канала --> |
|
|
|
|
<channel_name></channel_name> |
|
|
|
|
<!-- Описание канала --> |
|
|
|
|
<channel_descr>Тестовый_канал</channel_descr> |
|
|
|
|
<!-- Входящий поток --> |
|
|
|
|
<stream>http://localhost:8000/stream</stream> |
|
|
|
|
<!-- Icecast для вывода --> |
|
|
|
|
<icecast>localhost:8000</icecast> |
|
|
|
|
<!-- Пароль для доступа к Icecast --> |
|
|
|
|
<password>hackme</password> |
|
|
|
|
<!-- Точка подключения канала --> |
|
|
|
|
<mountpoint>stream</mountpoint> |
|
|
|
|
<!-- Программа/канал из потока --> |
|
|
|
|
<input_channel>0:p:4098</input_channel> |
|
|
|
|
|
|
|
|
|
<!-- Команда получения сигнала --> |
|
|
|
|
<cmd>ffmpeg</cmd> |
|
|
|
|
|
|
|
|
|
<!-- Формат входного потока --> |
|
|
|
|
<input_format>mp2 -map 0:0</input_format> |
|
|
|
|
|
|
|
|
|
<!-- Директория для сохранения архивных файлов --> |
|
|
|
|
<!-- Может содержать переменную $DATA (текущую дату) --> |
|
|
|
|
<archive_dir>FILES/archive/</archive_dir> |
|
|
|
|
<!-- Длительность архивных файлов в секундах --> |
|
|
|
|
<archive_time>3600</archive_time> |
|
|
|
|
<!-- Файл журнала обработки архивных записей --> |
|
|
|
|
<archive_log>FILES/archive.log</archive_log> |
|
|
|
|
|
|
|
|
|
<!-- Директория для сохранения фрагментов на анализ --> |
|
|
|
|
<slices_dir>FILES/fragments/</slices_dir> |
|
|
|
|
<!-- Длительность фрагментов для анализа в секундах --> |
|
|
|
|
<slices_time>10</slices_time> |
|
|
|
|
<!-- Файл журнала обработки фрагментов на анализ --> |
|
|
|
|
<slices_log>FILES/fragments.log</slices_log> |
|
|
|
|
|
|
|
|
|
<!-- Префикс имени файла --> |
|
|
|
|
<filename_prefix>%Y-%m-%d_%H:%M:%S</filename_prefix> |
|
|
|
|
<!-- Расширение имени файла --> |
|
|
|
|
<filename_suffix>mp2</filename_suffix> |
|
|
|
|
|
|
|
|
|
<!-- Формат аудиофайлов --> |
|
|
|
|
<output_format>mp2</output_format> |
|
|
|
|
<!-- Битрейт аудиофайлов --> |
|
|
|
|
<audio_bitrate>256k</audio_bitrate> |
|
|
|
|
<!-- Использование streamproxy --> |
|
|
|
|
<proxy>1</proxy> |
|
|
|
|
</xml> |
|
|
|
|
``` |
|
|
|
|
```xml |
|
|
|
|
<xml> |
|
|
|
|
<!-- Название канала --> |
|
|
|
|
<channel_name></channel_name> |
|
|
|
|
<!-- Описание канала --> |
|
|
|
|
<channel_descr>Тестовый_канал</channel_descr> |
|
|
|
|
<!-- Входящий поток --> |
|
|
|
|
<stream>http://localhost:8000/stream</stream> |
|
|
|
|
<!-- Icecast для вывода --> |
|
|
|
|
<icecast>localhost:8000</icecast> |
|
|
|
|
<!-- Пароль для доступа к Icecast --> |
|
|
|
|
<password>hackme</password> |
|
|
|
|
<!-- Точка подключения канала --> |
|
|
|
|
<mountpoint>stream</mountpoint> |
|
|
|
|
<!-- Программа/канал из потока --> |
|
|
|
|
<input_channel>0:p:4098</input_channel> |
|
|
|
|
|
|
|
|
|
<!-- Команда получения сигнала --> |
|
|
|
|
<cmd>ffmpeg</cmd> |
|
|
|
|
|
|
|
|
|
<!-- Формат входного потока --> |
|
|
|
|
<input_format>mp2 -map 0:0</input_format> |
|
|
|
|
|
|
|
|
|
<!-- Директория для сохранения архивных файлов --> |
|
|
|
|
<!-- Может содержать переменную $DATA (текущую дату) --> |
|
|
|
|
<archive_dir>FILES/archive/</archive_dir> |
|
|
|
|
<!-- Длительность архивных файлов в секундах --> |
|
|
|
|
<archive_time>3600</archive_time> |
|
|
|
|
<!-- Файл журнала обработки архивных записей --> |
|
|
|
|
<archive_log>FILES/archive.log</archive_log> |
|
|
|
|
|
|
|
|
|
<!-- Директория для сохранения фрагментов на анализ --> |
|
|
|
|
<slices_dir>FILES/fragments/</slices_dir> |
|
|
|
|
<!-- Длительность фрагментов для анализа в секундах --> |
|
|
|
|
<slices_time>10</slices_time> |
|
|
|
|
<!-- Файл журнала обработки фрагментов на анализ --> |
|
|
|
|
<slices_log>FILES/fragments.log</slices_log> |
|
|
|
|
|
|
|
|
|
<!-- Префикс имени файла --> |
|
|
|
|
<filename_prefix>%Y-%m-%d_%H:%M:%S</filename_prefix> |
|
|
|
|
<!-- Расширение имени файла --> |
|
|
|
|
<filename_suffix>mp2</filename_suffix> |
|
|
|
|
|
|
|
|
|
<!-- Формат аудиофайлов --> |
|
|
|
|
<output_format>mp2</output_format> |
|
|
|
|
<!-- Битрейт аудиофайлов --> |
|
|
|
|
<audio_bitrate>256k</audio_bitrate> |
|
|
|
|
<!-- Использование streamproxy --> |
|
|
|
|
<proxy>1</proxy> |
|
|
|
|
</xml> |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
При отсутствии параметра или пустом значении соответствующие флаги а |
|
|
|
|
аргументы не добавляются в итоговую команду ffmpeg. Таким образом, |
|
|
|
|
например, можно включать или отключать ведение журнала сохранения |
|
|
|
|
аудиозаписей, просто указывая или удаляя параметр archive_log. |
|
|
|
|
При отсутствии параметра или пустом значении соответствующие флаги а |
|
|
|
|
аргументы не добавляются в итоговую команду ffmpeg. Таким образом, |
|
|
|
|
например, можно включать или отключать ведение журнала сохранения |
|
|
|
|
аудиозаписей, просто указывая или удаляя параметр archive_log. |
|
|
|
|
|
|
|
|
|
##Версия |
|
|
|
|
1.3 |
|
|
|
|