Архив форума Ace Stream       Wiki        Info

перейти на новый форум
Расширенный поиск  

Автор Тема: Broadcasting ( организация собственных прямых трансляций на базе TS )  (Прочитано 406714 раз)

0 Пользователей и 5 Гостей смотрят эту тему.

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

Новые параметры для acestreamengine-stream/acestreamengine-node, начиная с версии 2.0.3 ( обновление от 15.12.2012)

acestreamengine-stream
Эта команда запускает источник трансляции

обязательные параметры
--name NAME - название трансляции (это название используется при создании файла acelive)
--source SOURCE - источник (ссылка на http поток)
--bitrate BITRATE - средний битрейт потока в байтах в секунду

необязательные параметры
--title TITLE - "читабельное" название транляции (это название выводится у клиентов). Если не задано, берется из --name
--destdir DESTDIR - устаревшний параметр, лучше использовать --cache-dir и --publish-dir
--cache-dir CACHE_DIR - папка для создания служебных файлов (кеш трансляции и другие)
--publish-dir PUBLISH_DIR - папка, в которой будет создан acelive-файл
--piecesize PIECESIZE - размер куска в байтах (если не задан, выставляется автоматически в зависимости от битрейта)
--duration DURATION - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
--host HOST - вручную задать адрес локального трекера
--port PORT - порт, на котором работает движок
--skip-internal-tracker - отключить локальный трекер
--add-authorized-peers - добавить список авторизованных пиров в acelive файл
--private-source - сделать источник "приватным"
--support-node SUPPORT_NODE - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
--tracker TRACKER - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
--trackers TRACKERS - старый формат добавления трекеров (список announce url через запятую)
--provider-key PROVIDER_KEY - ключ провайдера (только для коммерческих трансляций)
--maxclients MAXCLIENTS - максимальное количество пиров, на которые одновременно отдаются данные с источника
--show-pieces - выводить в лог номера кусков по мере их создания
--show-peers - периодически выводить в лог список подключенных пиров
--debug DEBUG - установить уровень отладки

дополнительно:
-h, --help - показать описание команд

Примечания:
"локальный трекер" - это трекер встроенный в источник трансляции. Если он не отключен опцией --skip-internal-tracker, то его адрес будет автоматически добавлен в acelive-файл.
"приватный источник" - это источник, который отдает данные только узлам поддержки, которые заданы опцией --support-node

Авторизованные пиры
Опция --add-authorized-peers добавляет в acelive-файл список пиров, которым клиент может "доверять" при подключении к трансляции. Это означает, что клиенту достаточно установить соединение с таким пиром, чтобы начать воспроизведение трансляции. Если клиент не подключен к авторизованному пиру, то для начала воспроизведение требуется наличие соединения минимум с двумя пирами. В список авторизованных пиров попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки.

Важно: клиенты со старыми версиями не понимают список авторизованных пиров в acelive-файле. Старые версии считают авторизованным пиром того, чей адрес совпадает с адресом первого трекера в списке трекеров. Раньше это всегда был локальный трекер. Теперь, когда появилась возможность отключения локального трекера, для поддержки старых клиентов мы рекомендуем при отключении локального трекера ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию).

acestreaengine-node
Эта команда запускает узел поддержки

обязательные параметры
--url URL - ссылка на acelive файл трансляции

необязательные параметры
--port PORT - порт (по умолчанию 8621)
--state-dir STATE_DIR - папка для временных файлов (удаляется после остановки узла поддержки)
--source-node SOURCE_NODE - адрес источника трансляции (ip:port)
--support-node SUPPORT_NODE - добавить адрес другого узла поддержки (ip:port). Этот параметр может встречаться несколько раз.
--allow-source-download - разрешить получение данных от источника
--allow-support-download - разрешить получение данных от других узлов поддержки
--allow-peers-download - разрешить получение данных от обычных пиров
--max-incoming-connects MAX_INCOMING_CONNECTS - маскимальное кол-во входящих соединений (от других пиров) (по умолчанию 1000)
--max-outgoing-connects MAX_OUTGOING_CONNECTS - маскимальное кол-во исходящих соединений (к другим пирам) (по умолчанию 50)
--max-upload-slots MAX_UPLOAD_SLOTS - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
--max-download-speed MAX_DOWNLOAD_SPEED - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
--max-upload-speed MAX_UPLOAD_SPEED - максимальная скорость отдачи (байс/с). По умолчанию 0 (без ограничений).
--show-pieces - выводить в лог номера кусков по мере их загрузки
--show-peers - периодически выводить в лог список подключенных пиров
--stats-report-interval STATS_REPORT_INTERVAL - задать интервал в секундах для вывода в лог информации о скорости загрузки/отдачи. По умолчанию 0 (не выводить).
--debug DEBUG - установить уровень отладки

дополнительно:
-h, --help - показать описание команд
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

что-то я недопонял, пробую запустить трансляцию TS по схеме приватный источник с одним сервером поддержки, который будет отдавать трансляцию пирам, запускаю на источнике:
acestreamengine-stream --name LF --source http://172.19.21.223:8090 --bitrate 200000 --private-source --support-node NODE_IP:7766 \
--trackers http://t1.torrentstream.net:2710/announce,http://t2.torrentstream.net:2710/announce \
--port 7766 --host MY_REAL_IP --destdir /media/F/stream1

запускаю на сервере поддержки:
acestreamengine-node --url http://MY_REAL_IP:7766/file?name=LF --port 7766 --state-dir /tmp \
--source-node MY_REAL_IP:7766 --allow-source-download --max-upload-slots 7 --stats-report-interval 7

по идее пиры должны получать поток от узла поддержки, так как сам сервер поддержки получает поток от источника "node: name LF up 0.0 down 213.6", но выходит, что они вообще ничего не получают, не видят пиров, одной из причиной я считаю, то что сам трекер не отвечает по адресу MY_REAL_IP:7766 если ип и порт не указаны в
--support-node или в --add-authorized-peers, а соответственно они не могут подключиться к основному трекеру. Поправьте если я что-то делаю не так :)
Записан

artanets

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 39

а можно пошагово где это все запускается (acestreamengine-stream)? для новичков.
и под какой операционоой системой.
Записан

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

что-то я недопонял, пробую запустить трансляцию TS по схеме приватный источник с одним сервером поддержки, который будет отдавать трансляцию пирам, запускаю на источнике:
acestreamengine-stream --name LF --source http://172.19.21.223:8090 --bitrate 200000 --private-source --support-node NODE_IP:7766 \
--trackers http://t1.torrentstream.net:2710/announce,http://t2.torrentstream.net:2710/announce \
--port 7766 --host MY_REAL_IP --destdir /media/F/stream1

запускаю на сервере поддержки:
acestreamengine-node --url http://MY_REAL_IP:7766/file?name=LF --port 7766 --state-dir /tmp \
--source-node MY_REAL_IP:7766 --allow-source-download --max-upload-slots 7 --stats-report-interval 7

по идее пиры должны получать поток от узла поддержки, так как сам сервер поддержки получает поток от источника "node: name LF up 0.0 down 213.6", но выходит, что они вообще ничего не получают, не видят пиров, одной из причиной я считаю, то что сам трекер не отвечает по адресу MY_REAL_IP:7766 если ип и порт не указаны в
--support-node или в --add-authorized-peers, а соответственно они не могут подключиться к основному трекеру. Поправьте если я что-то делаю не так :)

Во-первых, нужно прописать в acelive-файл список "доверенных" узлов, чтобы клиенты знали, что узлу/узлам поддержки можно доверять. Для этого при запуске источника нужно добавить опцию --add-authorized-peers.

Во-вторых, При использования параметра --private-source  желательно отключить локальный трекер опцией --skip-internal-tracker. При отключении локального трекера у старых клиентов могут возникнуть проблемы с подключением, если кроме узла поддержки никого нет на раздаче. Чтобы обеспечить поддержку старых клиентов, нужно развернуть какой-нибудь трекер (например, XBT Tracker) на сервере, где стоит узел поддержки, и поставить этот трекер на первое место в списке трекеров или использовать как минимум два узла поддержки.

P.S. Разные схемы запуска с примерами, с описанием вариантов построения оптимальной архитектуры при создании/организации трансляций, мы подготовим завтра

« Последнее редактирование: 16 Декабря 2012, 16:41:03 от Constantin »
Записан

artanets

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 39

Подскажите как узнать ИД запущенной в линуксе трансляции, а то трансляция вроде идет а посмотреть как не знаю.
до этого запускался постоянно под виндой и там в браузере как по мне было легче узнать
Записан

vladimir29

  • Специалист
  • Jr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 82

Подскажите как узнать ИД запущенной в линуксе трансляции, а то трансляция вроде идет а посмотреть как не знаю.
до этого запускался постоянно под виндой и там в браузере как по мне было легче узнать
на данный момент можно узнать создав страницу html с кодом плеера, содержание примерно такое:
<!DOCTYPE html>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Torrent Stream</title>

<style type="text/css">
* {
    font-family: Arial;
}
body {
    background-color: #222
}
.modal {
    background-color:#fff;
    display:none;
    width: 500px;
    padding:15px;
    text-align:left;
    border:2px solid #333;
    font-size: 12px;
   
    opacity:0.8;
    -moz-border-radius:6px;
    -webkit-border-radius:6px;
    -moz-box-shadow: 0 0 50px #ccc;
    -webkit-box-shadow: 0 0 50px #ccc;
}

.modal input {
    font-size: 12px;
}

.button-long {
    display: inline-block;
    background: transparent url(http://static.torrentstream.org/htmlplayer/img/sprite-player-black.png) no-repeat 100% -129px;
    height: 27px;
    line-height: 24px;
    cursor: pointer;
    position: relative;
    margin-left: 17px;
    top: -3px;
    padding-right: 12px;
    width: 115px;
    text-align: center;
    color: #fff;
    text-decoration: none;
    font-size: 14px;
}

.button-long b {
    background: transparent url(http://static.torrentstream.org/htmlplayer/img/sprite-player-black.png) no-repeat -579px -129px;
    height: 27px;
    width: 17px;
    position: absolute;
    left: -17px;
}

</style>

<!-- black style -->
<link type="text/css" rel="stylesheet" href="http://static.torrentstream.org/jsapi/css/ts-controls-black.css" />

<!-- api files -->
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/ts/core.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/jquery/jquery-1.7.min.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/jquery/jquery-ui-1.8.9.custom.min.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/jquery/jquery.mousewheel.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/jquery/jquery.jscrollpane.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/jquery/jquery.scrollText.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/jquery/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/cufon/cufon.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/cufon/a_LCDNova_400.font.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/ts/player.js"></script>
<script type="text/javascript" src="http://static.torrentstream.org/jsapi/js/lib/ts/controls.js"></script>

<script type="text/javascript">
function init() {
    var useInternalControls = true;
   
    var controls = new TorrentStream.Controls("tsplayer", {
            style: useInternalControls ? "internal" : "ts-black",
            debug: true
    });
   
    try {
        var player = new TorrentStream.Player(controls.getPluginContainer(), {
                debug: true,
                useInternalControls: useInternalControls,
                bgColor: "#000000",
                fontColor: "#ffffff",
                onLoad: function() {
                    this.registerEventHandler(controls);
                    controls.attachPlayer(this);
                    try {
                        var p = this;
                        this.loadTorrent("file:///C:/Users/Vladimir/Desktop/vlc/Torrent%20Stream/LF.acelive");
                    }
                    catch(e) {
                        console.log("init: " + e);
                    }
                }
        });
    }
    catch(e) {
        controls.onSystemMessage(e);
    }
}
</script>

</head>

<body>

    <div id="player_container" style="background-color: #000; width: 800px; height: 483px; margin: 100px auto 0 auto;">
        <div id="tsplayer" style="width: 100%; height: 100%; color: #fff; text-align: center;">
            <div style="padding-top: 232px; background-color: #000000;">Подождите, идет загрузка плеера...</div>
        </div>
    </div>

    <script type="text/javascript">
    init();
    </script>
   
</body>
</html>

в этом коде в строке this.loadTorrent("file:///C:/Users/Vladimir/Desktop/vlc/Torrent%20Stream/LF.acelive"); пишете адрес вашего acelive файла. Далее просто открываете эту страницу в браузере и смотрите ID, щелкнув правой кнопкой по плееру.
P.S. Кстати пора бы уже сделать вывод непосредственно ID трансляции в TS при ее запуске, а то жутко не удобно использовать выше описанный способ
Записан

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

Сегодня мы выпустили версию 2.0.7 с функцией Time Shift , для ее нормальной работы также необходимо обновить движок источника

Время, на которое может осуществляться перемотка назад, задается при создании трансляции опцией --duration. Время указывается в формате ЧЧ:ММ:СС. Например, при указании опции --duration 00:30:00 будет задан интервал 30 минут. ( в предыдущих версиях движка данный параметр работает не корректно )

P.S. Также хочу напомнить, что с детальной информацией по организации трансляций можно ознакомится в соответствующем разделе Wiki, на нашем сайте http://wiki.acestream.media/Streaming#Timeshift
Записан

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

Сегодня мы выпустили версию 2.0.7 с функцией Time Shift , для ее нормальной работы также необходимо обновить движок источника

Время, на которое может осуществляться перемотка назад, задается при создании трансляции опцией --duration. Время указывается в формате ЧЧ:ММ:СС. Например, при указании опции --duration 00:30:00 будет задан интервал 30 минут. ( в предыдущих версиях движка данный параметр работает не корректно )

P.S. Также хочу напомнить, что с детальной информацией по организации трансляций можно ознакомится в соответствующем разделе Wiki, на нашем сайте http://wiki.acestream.media/Streaming#Timeshift
Несколько дней не работает раздел бизнес . Когда он откроется ??  и когда вы планируете закончить его тест  ? спасибо

Завтра
Записан

Пур Иванов

  • Специалист
  • Sr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 342

Личку игнорируют... пишу тут

Сделал ещё несколько тестов по раздаче потоков из Win 7 x64, тоже самое и в Висте x32
Получил такие вот результаты:

Желтое - входящий локальный сигнал
Красное - исходящий, первый на прямую из VLC, второй тот же поток, но через TS.

4 Мбит/с в Омск

7 Мбит/с в другую точку


Константин, готов провести с вами, или кем-то ещё, те же опыты... напишите когда Вы будете готовы...
« Последнее редактирование: 04 Января 2013, 17:57:25 от Пур Иванов »
Записан

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

Личку игнорируют... пишу тут

Сделал ещё несколько тестов по раздаче потоков из Win 7 x64, тоже самое и в Висте x32
Получил такие вот результаты:

Желтое - входящий локальный сигнал
Красное - исходящий, первый на прямую из VLC, второй тот же поток, но через TS.

4 Мбит/с в Омск
7 Мбит/с в другую

Константин, готов провести с вами, или кем-то ещё, те же опыты... напишите когда Вы будете готовы...

Пур, я не игнорирую, просто я не такой трудоголик как ты и просто не смотрел личку  ;)

Может я еще не отошел от праздника, но я не пойму что я должен увидеть на этих скринах!? ???

Насчет теста я тебе уже не раз говорил и сам предлагал, конечно давай проведем ( дай мне один поток трансляция по HTTP, а другой по P2P, и посмотрим что там вида будет вытворять), но только давай это уже сделаем во вторник. Ок?
« Последнее редактирование: 04 Января 2013, 18:41:43 от Constantin »
Записан

Пур Иванов

  • Специалист
  • Sr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 342

сделаем во вторник. Ок?
Ок, как вам будет удобно  ;)
Записан

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

сделаем во вторник. Ок?
Ок, как вам будет удобно  ;)

Договорились, во вторник свяжемся и погоняем потоки.

P.S. Только я так и не понял, что я должен был увидеть такого особенного в скринах!? Извини, если туплю, но реально не пойму :-\
Записан

Пур Иванов

  • Специалист
  • Sr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 342

что я должен был увидеть такого особенного в скринах!? Извини, если туплю, но реально не пойму :-\
То, что на прямую, в Виндах, в один поток из самого обычного VLC отдача идёт гораздо лучше, чем из TS по многопоточной технологии р2р .  :o
Записан

Constantin

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1757
    • Torrent Stream

что я должен был увидеть такого особенного в скринах!? Извини, если туплю, но реально не пойму :-\
То, что на прямую, в Виндах, в один поток из самого обычного VLC отдача идёт гораздо лучше, чем из TS по многопоточной технологии р2р .  :o

Так а где там отличия, что-то я не заметил. ( 1 ( VLC )  и 2 -й ( TS )  потоки на первом скриншоте идентичны, также 1 и 2 -й потоки на втором скриншоте таже идентичны, или нет!?)  ??? И как должна идти отдача потока, если скорость отдачи зависит на прямую от битрейта, который является динамическим, а соответственно в какой-то момент на потоке  скорость отдачи может быть к примеру 100 кбит/с, а в какой-то 10 000 кбит/с ? 
Записан

Пур Иванов

  • Специалист
  • Sr. Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 342

Так, а где там отличия
Видно не совсем поняли что на скринах... Первая волна красная, это отдача на прямую из VLC, вторая волна это уже тот же поток, но из TS.
Первый скрин с Омском тестил, второй в другую точку также отдавал сначала напрямую 7 Мбит/с поток шёл из VLC и всё показывало хорошо у человека при этом... потом тот же поток пускал ему же, но через TS и показывало очень плохо.
« Последнее редактирование: 04 Января 2013, 20:39:20 от Пур Иванов »
Записан