Skip to content
View uzvarUA's full-sized avatar

Block or report uzvarUA

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
uzvarUA/readme.md

Скрипт цілодобового стрімінгу на Twitch

(Termux + FFmpeg)

Код скрипта та опис того, що він робить.

1. Код скрипта

#!/data/data/com.termux/files/usr/bin/sh
trap 'echo; echo "stop"; termux-wake-unlock; exit 0' INT
termux-wake-lock

if [ ! -f twitch.key ]; then
  echo "Помилка: файл twitch.key не знайдено!"
  exit 1
fi

KEY=$(cat twitch.key)

if ! ls *.mp4 >/dev/null 2>&1; then
  echo "Помилка: MP4-файли не знайдені!"
  exit 1
fi

VIDEO=$(ls *.mp4 | head -n 1)
echo "Знайдено файл: $VIDEO"

while true; do
  ffmpeg -stream_loop -1 \
    -re \
    -i "$VIDEO" \
    -c:v libx264 \
    -preset veryfast \
    -b:v 6000k \
    -maxrate 6000k \
    -bufsize 12000k \
    -c:a aac \
    -b:a 160k \
    -ar 44100 \
    -f flv "rtmp://live.twitch.tv/app/$KEY"
  echo
  echo "FFmpeg завершився. Перезапуск через 10 секунд..."
  sleep 10
done

2. Що робить скрипт

Скрипт призначений для безперервної трансляції відеофайлу на Twitch з телефона на Android через термінал Termux. Він бере перший знайдений у папці MP4-файл, зациклює його й у режимі реального часу надсилає на сервер Twitch як живий стрім. Якщо трансляція раптово обривається, скрипт сам запускає її знову.

3. Покроковий розбір

Команда / блок Призначення
trap '...' INT Перехоплює сигнал переривання (Ctrl+C). Перед виходом виводить «stop», знімає блокування сну (termux-wake-unlock) і завершує скрипт.
termux-wake-lock Не дає Android «присипляти» процесор, щоб стрім не зупинявся при вимкненому екрані.
[ ! -f twitch.key ] Перевіряє, чи є поруч файл twitch.key. Якщо його немає — виводить помилку й виходить із кодом 1.
KEY=$(cat twitch.key) Зчитує ключ трансляції (Stream Key) з файла в змінну KEY. Ключ не зберігається прямо в коді.
ls *.mp4 Перевіряє, чи є в поточній папці хоча б один MP4-файл. Якщо немає — помилка та вихід.
VIDEO=$(ls *.mp4 | head -n 1) Обирає перший MP4-файл за алфавітом і виводить його назву на екран.
while true; do ... done Нескінченний цикл: після завершення FFmpeg скрипт чекає 10 секунд (sleep 10) і запускає його знову. Це захист від розривів зв'язку чи збоїв сервера.

4. Параметри FFmpeg

Параметр Значення
-stream_loop -1 Зациклює вхідне відео нескінченно (-1 = без обмежень).
-re Читає файл зі швидкістю відтворення (реальний час), а не якнайшвидше. Обов'язково для лайв-стріму.
-i "$VIDEO" Вхідний файл — знайдений MP4.
-c:v libx264 Кодує відео в H.264 — формат, який вимагає Twitch.
-preset veryfast Баланс між швидкістю кодування та якістю; зменшує навантаження на процесор телефона.
-b:v 6000k Цільовий бітрейт відео — 6000 кбіт/с (максимум, рекомендований Twitch).
-maxrate 6000k Верхня межа бітрейта, щоб не перевищувати ліміт.
-bufsize 12000k Розмір буфера (зазвичай удвічі більший за бітрейт) для рівномірнішого потоку.
-c:a aac Кодує звук у AAC.
-b:a 160k Бітрейт звуку — 160 кбіт/с.
-ar 44100 Частота дискретизації звуку — 44,1 кГц.
-f flv Формат контейнера FLV, який використовується для RTMP.
rtmp://live.twitch.tv/app/$KEY Адреса сервера Twitch із підставленим ключем трансляції.

5. Як користуватися

  1. Встановіть у Termux потрібні пакети: pkg install ffmpeg termux-api (також має бути встановлений додаток Termux:API).
  2. Покладіть у одну папку: скрипт, файл twitch.key (тільки ключ, без пробілів і зайвих рядків) та MP4-відео.
  3. Надайте права на запуск: chmod +x stream.sh.
  4. Запустіть: ./stream.sh. Зупинити — Ctrl+C.

6. Важливі зауваження

  • Ключ трансляції — секретний. Нікому його не показуйте й не публікуйте разом зі скриптом.
  • Відео перекодовується (libx264), тому телефон помітно навантажується й може грітися. Якщо відео вже у форматі H.264/AAC з потрібним бітрейтом, можна замінити кодування на -c copy — це майже не навантажує процесор (але зациклення може давати короткі збої на стику).
  • Бітрейт 6000k потребує стабільного інтернету зі швидкістю віддачі щонайменше 8–10 Мбіт/с. При слабкому з'єднанні зменште -b:v (наприклад, до 3000k) та -maxrate.
  • Якщо в папці кілька MP4, використовується лише перший за алфавітом.
  • Назви файлів із пробілами можуть заважати конструкції ls *.mp4; краще використовувати назви без пробілів.
  • Повторювана трансляція одного відео має відповідати правилам Twitch щодо контенту й авторських прав.

Pinned Loading

  1. clonemcbe clonemcbe Public archive

    Патч Майнкрафта для підтримки Vibrant Visuals на майже будь-яких пристроях.

    HTML 1