Система профилей
Что такое профиль?
Заголовок раздела «Что такое профиль?»Профиль — это сущность в senta-streamer, которая представляет собой команду для запуска программы ffmpeg, где параметры, такие как входные и выходные потоки, а также другие пользовательские параметры, заменяются переменными.
Пример:
ffmpeg -re -stream_loop -1 -i input.ts -vcodec mpeg4 -aspect 16:9 -f mpegts udp://bla-bla:1234В этом примере запускается UDP-поток с постоянной трансляцией файла input.ts по адресу udp://bla-bla:1234.
Предположим, что мы хотим использовать senta-streamer для трансляции статического файла. Мы можем просто добавить строку в профили, либо заменить входной и выходной потоки на переменные (${i} и ${o} соответственно), получив универсальный профиль транскодирования, который можно масштабировать для других стримов. В итоге получится:
ffmpeg -re -stream_loop -1 -i ${i} -vcodec mpeg4 -aspect 16:9 -f mpegts ${o}Структура профиля
Заголовок раздела «Структура профиля»Помимо обычного профиля со стандартными переменными, такими как ${i} и ${o}, вы можете добавить некоторые расширения для своего профиля.
Вы можете задать NAME профиля. Это имя будет использоваться, например, когда вы загружаете профиль на github. Это необязательное поле.
Пример:
ffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 4M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}NAME "HD h264"Далее вы можете добавить пользовательские переменные после ключевого слова WHERE.
Пример
// Простой стартовый профиль для кодирования HD h264// Вы можете изменить его, форкнуть и поделиться с другимиffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc ${gpu} -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 4M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}NAME "HD h264"WHERE[ { "desc": "gpu", "data": { "name": "GPU", "description": "Выберите GPU, который будет использоваться стримом, оставьте пустым, если не используете GPU", "command": "-gpu $value", "default": "" } }]Примечание: вы можете добавлять строки комментариев в свой профиль, начиная их с //
Репозиторий профилей
Заголовок раздела «Репозиторий профилей»Вы можете найти готовые профили в репозитории: https://github.com/cesbo/senta-streamer-profiles
Как добавить или изменить профиль
Заголовок раздела «Как добавить или изменить профиль»Чтобы добавить свой профиль или внести изменения в существующий:
-
Fork the repository : Перейдите по адресу https://github.com/cesbo/senta-streamer-profiles и нажмите кнопку “Fork” в правом верхнем углу страницы. Это создаст копию репозитория в вашем аккаунте GitHub.
-
Clone your fork : Откройте терминал (или Git Bash на Windows) и выполните команду
git clone https://github.com/your_username/senta-streamer-profiles, заменив “your_username” на ваш логин GitHub. -
Create a new branch : Перейдите в склонированный репозиторий командой
cd senta-streamer-profiles, затем создайте новую ветку с помощьюgit checkout -b add_profile, где “add_profile” — это название вашей ветки. -
Add your file : Поместите ваш файл профиля в папку /profiles в склонированном репозитории.
-
Add the file to staging and commit : Выполните следующие команды в терминале:
Окно терминала git add profiles/your_file_namegit commit -m "Added profile: %your_file_name%"Замените “your_file_name” на имя вашего файла.
-
Push your changes to your GitHub repository : Выполните команду
git push origin add_profile, где “add_profile” — это название вашей ветки. -
Open a Pull Request (PR) : После отправки изменений перейдите на страницу вашего форка на GitHub. Там появится кнопка “Compare & pull request” для вашей новой ветки. Нажмите на неё.
-
Create a Pull Request : Проверьте предлагаемые изменения, убедитесь, что всё правильно, и нажмите кнопку “Create pull request”.
-
Wait for review and merge : Другие участники проекта могут просмотреть ваш Pull Request, оставить комментарии или запросить изменения. После проверки и одобрения ваш PR будет объединён с основной веткой одним из мейнтейнеров проекта.
Готово! Теперь ваш файл профиля будет добавлен в публичный репозиторий.