Broadcasting (организация собственных прямых трансляций)
Sopcast
http://livetv.ru/article/1/
Суперпост
http://habrahabr.ru/post/164889/
http://habrahabr.ru/company/torrentstream/blog/150560/
Open Broadcaster Software
http://obsproject.com/ru/
XSplit Broadcaster
https://www.youtube.com/watch?v=B9oHHNvo774
How to use ACE Stream
https://www.youtube.com/watch?v=PfEmyzPpcTw
http://forum.torrentstream.org/index.php?topic=1410.0
http://wiki.acestream.org/wiki/index.php/Streaming#Timeshift
http://forum.torrentstream.org/index.php?topic=1464.0
http://forum.torrentstream.org/index.php?topic=1410.90
1. Установка
1.1 Установка TS Engine на Debian
Для установки TS Engine необходимо добавить репозиторий Torrent Stream в файл /etc/apt/sources.list:
deb http://torrentstream.net/repo ubuntu main
Если при установке пакета выводится сообщение про неизвестный ключ, можно его добавить в систему:
wget -O - http://torrentstream.net/repo/torrentstream.public.key | apt-key add -
После этого нужно установить пакет torrentstream-engine:
apt-get update
apt-get install torrentstream-engine
1.2 Установка пакет TorrentStream Full на Ubuntu из deb-пакета
- скачать пакет по ссылке
http://torrentstream.org/downloads/linux/test/torrentstream_1.0.6-0ubuntu8_amd64.deb
либо
http://torrentstream.org/downloads/linux/test/torrentstream_1.0.6-0ubuntu8_i386.deb
(в зависимости от нужной архитектуры)
- установить пакет через менеджер пакетов (например, двойным кликом на скачанный файл пакета)
1.3 Установка пакет TorrentStream Full на Ubuntu из репозитория
Добавить репозиторий Torrent Stream в файл /etc/apt/sources.list:
deb http://torrentstream.net/repo ubuntu main
Если при установке пакета выводится сообщение про неизвестный ключ, можно его добавить в систему:
wget -q -O - http://torrentstream.net/repo/torrentstream.public.key | sudo apt-key add -
После этого нужно установить пакет torrentstream-engine:
sudo apt-get update
sudo apt-get install torrentstream-full
2. Запуск трансляции
Для запуска трансляции используется команда tsengine-stream, которая принимает такие параметры:
--name
Название трансляции
--source
Источник - URL потока, который будет транслироваться. В данный момент поддерживаются HTTP потоки с инкапсуляцией MPEG-TS
--destdir
Директория, в которую будет сохранен .tslive файл для данной трансляции и некоторые служебные файлы.
--bitrate
Битрейт потока в байтах в секунду. Для корректной работы потока следует указывать средний битрейт потока, который используется в качестве источника.
Для информации: 1 байт = 8 бит
Пример: 800 Кбит = 100 Кбайт = 100000 байт, 2 Мбит = 250 Кбайт = 250000 байт
--piecesize
Размер в байтах куска для работы bittorrent-протокола. По умолчанию данный параметр принимает значение auto, при котором размер куска определяется автоматически.
--duration
Длительность потока в формате ЧЧ:ММ:СС. Этот параметр задает объем кэша для потока. Значение по умолчанию - 01:00:00 (т.е. система будет держать в кэше приблизельно один час трансляции).
--host
IP-адрес либо название хоста, на котором запускается трансляция.
Для работы трансляции данный адрес должен быть доступен пользователям, которые будут смотреть трансляцию.
Если данный параметр не указан, TS Engine попытается самостоялельно определить адрес хоста, взяв первый доступный адрес из сетевых настроек.
Хост обязательно нужно указывать в двух случаях:
1) сервер находится за роутером и не имеет внешнего адреса (в этом случае необходимо указать внешний адрес роутера, через который сервер выходит в интернет)
2) у сервера несколько сетевых интерфейсов (например, один внешний и один в локальной сети). В этом случае необходимо указать адрес внешнего интерфейса.
--port
Порт, на который будут приниматься входящие соединения. По умолчанию 7764.
--trackers
Список дополнительных трекеров, которые будут использоваться для обмена пирами. Адреса трекеров указываются через запятую. По умолчанию дополнительные трекеры не используются.
--provider-key
Ключ лицензии для коммерческих трансляций. По умолчанию не используется.
--maxclients
Максимальное количество клиентов, которые будут получать данные непосредственно от источника трансляции. По умолчанию 7.
Пример:
tsengine-stream --name test --source http://84.22.159.204:8006 --bitrate 350000 --host mysite.com --destdir /tmp/streams
После запуска трансляции в директории /tmp/streams будут созданы такие файлы:
test - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах * битрейт байт
test.tslive - с помощью этого файла пользователи могут подключаться к трансляции
test.restart - здесь хранится информация для корректного перезапуска трансляции
test.sauth - ключ для цифровой подписи трансляции
Также после запуска можно зайти на страницу трекера, встроенного в TS Engine:
http://mysite.com:7764/
На данной странице отображается некоторая информация по трансляции, а также здесь можно скачать файл трансляции .tslive по такой ссылке:
http://mysite.com:7764/file?name=test
3. Просмотр трансляции пользователями.
Если два основных способа просмтра трансляции
1) пользователь скачивает файл .tslive и запускает его в TS Player
2) организатор трансляции создает веб-страницу для просмотра трансляции, пользователи заходят на данную страницу и смотрят трансляцию через браузер.
В качестве шаблона для такой страницы можно использовать http://torrentstream.org/stream/test.php. Необходимо только изменить ссылку на файл .tslive в этой строке:
this.loadTorrent("http://torrentstream.net/streams/test2.mpegts.tslive");
4. Мониторинг трансляции
Программа tsengine-stream выводит всю отладочную информацию в STDERR. Успешный страрт трансляции выглядит примерно таким образом:
host:~# tsengine-stream --name test --source http://84.22.159.204:8006 --bitrate 350000 --host mysite.com --destdir /tmp/streams
tracker url: http://mysite.com:7764/announce/
bitrate: 350000
piece size: 262144
dest dir: /tmp/streams
------------------------
createlivestream: open stream: url http://84.22.159.204:8006 reader builtin
2012-07-16 12:56:36 stream: started input thread
2012-07-16 12:56:37 stream: created piece 0 speed 131.12 KiB/s
2012-07-16 12:56:38 stream: created piece 1 speed 183.15 KiB/s
2012-07-16 12:56:39 stream: created piece 2 speed 198.34 KiB/s
2012-07-16 12:56:40 stream: created piece 3 speed 196.96 KiB/s
2012-07-16 12:56:41 stream: created piece 4 speed 199.23 KiB/s
2012-07-16 12:56:43 stream: created piece 5 speed 203.08 KiB/s
2012-07-16 12:56:44 stream: created piece 6 speed 206.37 KiB/s
Основная выводимая информация: номера создаваемых кусков и скорость загрузки данных от источника трансляции.
Остановка трансляции осуществляется нажатием Ctrl-C
5. Запуск узла поддержки
Для обеспечения максимально стабильной трансляции рекомендуется запускать узлы поддержки на нескольких серверах.
Узел поддержки представляет собой программу, которая скачивает данные с источника трансляции (сервера, на котором запущен tsengine-stream) и передает данные пользователям,
которые смотрят трансляцию. Фактически узел поддержки представляет собой узел пиринговой сети с хорошей скоростью отдачи.
Узел поддержки запускается командой tsengine-node. Параметры:
--url
URL, по которому можно скачать файл трансляции (.tslive)
--port
Порт, на который узел будет принимать входящие соединения (по умолчанию: 8621)
--statedir
Директория, в которой будут сохраняться временные файлы, необходимые для работы узла поддержки.
После запуска узла поддержки в указанной директории будет создана временная поддиректория с названием вида tmpXXXXX.
После остановки узла поддержки временная директория удаляется.
--showpieces 1
Показывать номера загруженных кусков в логах
Логи узла поддержки пишутся в STDERR.
Пример:
host:~# tsengine-node --url http://mysite.com:7764/file?name=test --port 8622 --showpieces 1 --statedir /tmp
Starting TS Engine...
state dir: /tmp/tmpl73pRi
device id: MFIwEAYHKoZIzj0CAQYFK4EEABoDPgAEAZZC+I2Rx2z5P/G5spBpq4w14BALTM6308v//ta3Ae85Gk0vgcAUHaKgnV2KzlAUUaye5V9IkB6uLhq8
----------------------------
node: name test up 0.0 down 0.0
hook at piece 36
node: complete piece 36
node: complete piece 37
node: complete piece 38
node: complete piece 39
node: complete piece 40
node: complete piece 41
node: name test up 0.0 down 273.7
Кратко об информации в логе:
device_id - уникальный идентификатор узла поддержки
hook at piece NN - узел поддержки подсоединился к источнику трансляции и начал загрузку данных с куска номер NN
node: name test up XX down YY - название трансляции, скорость загрузки данных от источника (down), скорость отдачи пользователям либо другим узлам поддержки (up).
Данное сообщение выводится раз в 5 секунд.
node: complete piece NN - завершена загрузка куска номер NN (данная информация выводится только при опции --showpieces 1)
Остановка узла поддержки осуществляется нажатием Ctrl-C