# TS Engine API

**URL:** <https://forum.acestream.media/t/ts-engine-api/2260>\
**Category:** Torrent Stream API\
**Created:** [11.Апрель.2012 17:57:51 UTC](https://forum.acestream.media/t/ts-engine-api/2260 "2012-04-11T17:57:51Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [11.Апрель.2012 17:57:51 UTC](https://forum.acestream.media/t/ts-engine-api/2260/1 "2012-04-11T17:57:51Z")

</div>

С выходом версии движка 1.0.5 для всех разработчика программного обеспечения мы хотим открыть новые возможности по внедрению функционала ACE Stream/ Torrent Stream в любые программные продукты.

Для этого мы предоставляем новую версию ACE Stream Engine API ( Ранее TS Engine API ) Смотрим здесь: [http://wiki.acestream.media/Engine\_API](http://wiki.acestream.media/Engine_API)

Отталкиваясь от ваших вопросов и пожеланий мы будем ее поэтапно дополнять разными примерами, ну и дописывать то, что забыли.

В общем принимайте активное участие и создавайте свои уникальные продукты с функционалом и возможностями движка ACE Stream Engine ( TS Engine )

Обновление ACE Stream Engine (TS Engine API ) от 16.02.2013 ( применимо для версий 2.0 и выше )

P.S. В рамках проекта нами будет выпущен дистрибутив в виде отдельного движка ( без VLC ), что позволит вам использовать собственные плееры, не нагружая своих пользователей лишним софтом

Внимание! Начиная с версии 2.1.0 движок работает по API только с авторизированными клиентами ( внешними продуктами). Авторизация выполняется на этапе рукопожатия. Для успешной авторизации у клиента должен быть ключ продукта. Ключ продукта можно получить бесплатно, заполнив форму [здесь](http://www.acestream.net/developers/request_key.php) Детальная информация здесь [http://wiki.acestream.media/Product\_key](http://wiki.acestream.media/Product_key)

---

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [14.Апрель.2012 17:48:57 UTC](https://forum.acestream.media/t/ts-engine-api/2260/2 "2012-04-14T17:48:57Z")

</div>

Обновление TS Engine API от 14.04.2012

Добавлен пример

---

<div class="post-metadata">

**Author:** ![NuisMons](https://forum.acestream.media/letter_avatar_proxy/v4/letter/n/f08c70/32.png) [@NuisMons](https://forum.acestream.media/u/NuisMons)\
**Post date:** [18.Август.2012 08:29:33 UTC](https://forum.acestream.media/t/ts-engine-api/2260/3 "2012-08-18T08:29:33Z")

</div>

Здравствуйте, тут написано

> Ко всем status\_string (кроме idle, err, check) добавляются общие данные:  
> total\_progress;immediate\_progress;speed\_down;http\_speed\_down;speed\_up;peers;http\_peers;downloaded;http\_downloaded;uploaded  
> total\_progress - сколько всего закачано по данному файлу

  
но для prebuf, по моему, это не так? для сидов мне пришлось брать 8, а скорость я беру из 5-го параметра  
и еще вопрос, как передать magnet ссылку? 

> LOADASYNC \<request\_id\> INFOHASH \<torrent\_infohash\> \<developer\_id\> \<affiliate\_id\> \<zone\_id\>

 это?  
если что, вот мой “проект” для xbmc [http://xbmc.ru/forum/showpost.php?p=32163&postcount=25](http://xbmc.ru/forum/showpost.php?p=32163&postcount=25)  
работает вроде отлично, но, бывает, после , примерно, 15 минут, поток просто прекращается

---

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [21.Август.2012 17:27:33 UTC](https://forum.acestream.media/t/ts-engine-api/2260/4 "2012-08-21T17:27:33Z")

</div>

> "Ко всем status\_string (кроме idle, err, check) добавляются общие данные: total\_progress;immediate\_progress;speed\_down;http\_speed\_down;speed\_up;peers;http\_peers;downloaded;http\_downloaded;uploaded total\_progress - сколько всего закачано по данному файлу"

В документации все правильно, данные должны передаваться именно в таком формате, как описано в документации. Единственное, что можно предположить, что используется какая-то старая версия движка, где данные передавались не так. Посмотрите версию движка и номер сборки по логу, либо дайте нам лог движка. ( текущая версия: 1.0.6.6 )

> "как передать magnet ссылку? Так: LOADASYNC INFOHASH ?"

Магнет-ссылки движок сейчас не поддерживает ( в большинстве случаев долго собираются, увеличивая тем самым время до начала проигрывания, что не приемлемо для онлайна ). Указанная команда частично заменяет функционал магнет-ссылки, так как может загрузить торрент по инфохешу. Загрузка по инфохешу возможна за счет того, что мы используем сервера для кеширования торрентов. Если торрент закеширован на наших серверах, то его можно загрузить с помощью указанной команды  
(по инфохешу). Торренты попадают в кеш на наших серверах, если хотя бы один раз осуществлялась их загрузка через Torrent Stream.

P.S. Извиняюсь за задержку с ответом, не заметил.

---

<div class="post-metadata">

**Author:** ![NuisMons](https://forum.acestream.media/letter_avatar_proxy/v4/letter/n/f08c70/32.png) [@NuisMons](https://forum.acestream.media/u/NuisMons)\
**Post date:** [22.Август.2012 07:25:55 UTC](https://forum.acestream.media/t/ts-engine-api/2260/5 "2012-08-22T07:25:55Z")

</div>

Спасибо за ответ.  
Последний вопрос, можно ли отследить состояние буферизации, посылая события при помощи

> PLAYBACK

т.е. если я пошлю, к примеру, что сейчас проигралось 4%, движок скажет мне, что, возможно, лучше сделать паузу, сменив состояние с [b]main:dl[/b] на [b]main:buf[/b] при недостатке полученных данных? Или возможны только значения 0,25,50,75,100? Извиняюсь, если я не очень понял документацию

---

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [23.Август.2012 11:55:02 UTC](https://forum.acestream.media/t/ts-engine-api/2260/6 "2012-08-23T11:55:02Z")

</div>

> [@NuisMons post:5](#):
>
> Спасибо за ответ.  
> Последний вопрос, можно ли отследить состояние буферизации, посылая события при помощи
> 
> > PLAYBACK
> 
> т.е. если я пошлю, к примеру, что сейчас проигралось 4%, движок скажет мне, что, возможно, лучше сделать паузу, сменив состояние с [b]main:dl[/b] на [b]main:buf[/b] при недостатке полученных данных? Или возможны только значения 0,25,50,75,100? Извиняюсь, если я не очень понял документацию

Команда PLAYBACK может принимать только значения 0, 25, 50, 75 и 100.  
Эта команда предназначена исключительно для информирования движка о  
“количестве” проигранного контента и используется для ведения  
статистики и корректной работы рекламных роликов.

На буферизацию движок уходит автоматически при нехватке данных в  
буфере, повлиять на буферизацию при помощи API нельзя.

---

<div class="post-metadata">

**Author:** ![Alexsandr01](https://forum.acestream.media/letter_avatar_proxy/v4/letter/a/ba8739/32.png) [@Alexsandr01](https://forum.acestream.media/u/Alexsandr01)\
**Post date:** [18.Декабрь.2012 11:01:17 UTC](https://forum.acestream.media/t/ts-engine-api/2260/7 "2012-12-18T11:01:17Z")

</div>

Так на какой порт устанавливать соединение ?  
Если 62062 то получаю - WSAECONNREFUSED  
Если смотреть сниффером, порт каждый раз меняется при запуске tsengine

tsengine  
2012-12-18 14:16:58 build 1901  
2012-12-18 14:16:58 version 2.0.2

---

<div class="post-metadata">

**Author:** ![Fix](https://forum.acestream.media/letter_avatar_proxy/v4/letter/f/7ab992/32.png) [@Fix](https://forum.acestream.media/u/Fix)\
**Post date:** [22.Январь.2013 11:09:29 UTC](https://forum.acestream.media/t/ts-engine-api/2260/8 "2013-01-22T11:09:29Z")

</div>

> [@Alexsandr01 post:7](#):
>
> Так на какой порт устанавливать соединение ?

похоже что порт записывается в файлик рядом с энжайном.

---

<div class="post-metadata">

**Author:** ![Fix](https://forum.acestream.media/letter_avatar_proxy/v4/letter/f/7ab992/32.png) [@Fix](https://forum.acestream.media/u/Fix)\
**Post date:** [22.Январь.2013 11:13:43 UTC](https://forum.acestream.media/t/ts-engine-api/2260/9 "2013-01-22T11:13:43Z")

</div>

Может кто-нить подсказать как унзать текущее наполение буфера чтоб приостановться. Т.к. сейчас если читать поток в цикле то буфер вычищается до нуля и движок начинает паузатся и похоже что возвращает мусор (а мог бы и подождать сам).

---

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [18.Февраль.2013 23:32:28 UTC](https://forum.acestream.media/t/ts-engine-api/2260/10 "2013-02-18T23:32:28Z")

</div>

Обновление TS Engine API

Новая версия ACE Stream Engine API , представлена здесь: [http://wiki.acestream.media/Engine\_API](http://wiki.acestream.media/Engine_API)

---

<div class="post-metadata">

**Author:** ![aleksandrkr](https://forum.acestream.media/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@aleksandrkr](https://forum.acestream.media/u/aleksandrkr)\
**Post date:** [18.Апрель.2013 08:53:18 UTC](https://forum.acestream.media/t/ts-engine-api/2260/11 "2013-04-18T08:53:18Z")

</div>

Подскажите как сделать autoplay здесь.

---

<div class="post-metadata">

**Author:** ![ekyt](https://forum.acestream.media/letter_avatar_proxy/v4/letter/e/5daacb/32.png) [@ekyt](https://forum.acestream.media/u/ekyt)\
**Post date:** [22.Июнь.2013 13:40:27 UTC](https://forum.acestream.media/t/ts-engine-api/2260/12 "2013-06-22T13:40:27Z")

</div>

Здравствуйте.  
Подскажите как правильно осуществить перемотку?  
Клиент инициализирован HELLOBG version=3  
Пытаюсь перемотать командой: EVENT seek position=1487. Далее ожидаю смену инфы о статусе движка: STATE PREBUFFERING или BUFFERING, но текущий статус (DOWNLOADING) не меняется.  
Что я делаю не так?

---

<div class="post-metadata">

**Author:** ![anton](https://forum.acestream.media/user_avatar/forum.acestream.media/anton/32/1292_2.png) [@anton](https://forum.acestream.media/u/anton)\
**Post date:** [23.Июнь.2013 14:11:54 UTC](https://forum.acestream.media/t/ts-engine-api/2260/13 "2013-06-23T14:11:54Z")

</div>

> [@ekyt post:12](#):
>
> Здравствуйте.  
> Подскажите как правильно осуществить перемотку?  
> Клиент инициализирован HELLOBG version=3  
> Пытаюсь перемотать командой: EVENT seek position=1487. Далее ожидаю смену инфы о статусе движка: STATE PREBUFFERING или BUFFERING, но текущий статус (DOWNLOADING) не меняется.  
> Что я делаю не так?

Насколько я понял, вы хотите сделать перемотку для VOD (т.е. для обычного файла, не live трансляции)?

Если это так, то для перемотки нет необходимости отсылать какие-либо команды движку по API. Событие EVENT seek используется только для информирования движка о перемотке, но при этом движок никаких действий не выполняет.

Сама же перемотка осуществляется на уровне обращения к движку по ссылке на воспроисведение контента, которую движок выслал после окончания пребуферизации в команде START (это ссылка вида [http://127.0.0.1:6878/content/8184c1807b56fffa6f2f6f406004565b448deb0a/0.565126139153](http://127.0.0.1:6878/content/8184c1807b56fffa6f2f6f406004565b448deb0a/0.565126139153)). Все запросы по этой ссылке обрабатываются веб-сервером, встроенным в движок. С точки зрения плеера, эта ссылка представляет собой ссылку на видео-файл, который лежит на веб-сервере и доступен для скачивания по протоколу HTTP. Если плеер осуществляет перемотку, например, на середину файла, он должен отправлять HTTP Range запрос, в котором указывает позицию в байтах, с которой ему нужно получить данные. Движок распознает такие запросы и выдает нужную информацию. При этом если плеер запросил данные, которые еще не были физически закачаны в кеш, то начинается буферизация.

---

<div class="post-metadata">

**Author:** ![ekyt](https://forum.acestream.media/letter_avatar_proxy/v4/letter/e/5daacb/32.png) [@ekyt](https://forum.acestream.media/u/ekyt)\
**Post date:** [23.Июнь.2013 18:14:02 UTC](https://forum.acestream.media/t/ts-engine-api/2260/14 "2013-06-23T18:14:02Z")

</div>

> Насколько я понял, вы хотите сделать перемотку для VOD (т.е. для обычного файла, не live трансляции)?

Да, все верно, я имел ввиду обычный файл и спасибо за развернутый ответ.

---

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [10.Июль.2013 21:41:38 UTC](https://forum.acestream.media/t/ts-engine-api/2260/15 "2013-07-10T21:41:38Z")

</div>

Внимание! Начиная с версии 2.1.0 движок работает по API только с авторизированными клиентами ( продуктами). Авторизация выполняется на этапе рукопожатия. Для успешной авторизации у клиента должен быть ключ продукта. Ключ продукта можно получить бесплатно, заполнив форму [здесь](http://www.acestream.net/developers/request_key.php)  
Детальная информация здесь [http://wiki.acestream.media/Product\_key](http://wiki.acestream.media/Product_key)

Выход в релиз версии 2.1 запланирован на 07.2013, поэтому, убедительная просьба привести свои продукты к полному соответствию API

P.S. Если ваши продукты не могут поддерживать используемые в Ace Stream рекламные форматы, дайте нам знать и вам будет предоставлена возможность использования тестового периода, с отключенной рекламой для вашего клиента/продукта. После тестового периода ваш продукт смогут использовать только те пользователи, которые будут использовать премиум-функцию “No ADs”, обеспечивающую отключение рекламы. Вам также будет предоставлена возможность отключать рекламу для своих пользователях, на партнерских условиях. ( Информация о условиях будет представлена позже )

---

<div class="post-metadata">

**Author:** ![Constantin](https://forum.acestream.media/user_avatar/forum.acestream.media/constantin/32/1995_2.png) [@Constantin](https://forum.acestream.media/u/Constantin)\
**Post date:** [18.Сентябрь.2013 11:05:19 UTC](https://forum.acestream.media/t/ts-engine-api/2260/16 "2013-09-18T11:05:19Z")

</div>

Уважаемые разработчики! Если ваше приложение не поддерживает рекламные форматы Ace Stream, то вы можете использовать публичный ключ:

kjYX790gTytRaXV04IvC-xZH3A18sj5b1Tf3I-J5XVS1xsj-j0797KwxxLpBl26HPvWMm

При использовании публичного ключа Вашим приложением смогут пользоваться только те пользователи, у которая активирована опция “No ADs” (у кого отключена реклама Ace Stream). Если у пользователя не активирована указанная опция, то при попытке начать просмотр какого-либо контента движок отправит ошибку “No ADs option must be activated to use this product”

Ну а если Ваше приложение поддерживает рекламные форматы системы Ace Stream, то Вы можете бесплатно получить персональный ключ продукта, отправим нам заявку через соответствующую форму ([http://www.acestream.net/developers/request\_key.php](http://www.acestream.net/developers/request_key.php)) и указав ссылку на скачивание вашего продукта для его проверки на соответствие. Приложения с персональным ключом продукта могут использовать все пользователи, независимо от наличия у них каких-либо премиум-опций.

---

<div class="post-metadata">

**Author:** ![gladiatorX](https://forum.acestream.media/letter_avatar_proxy/v4/letter/g/ecc23a/32.png) [@gladiatorX](https://forum.acestream.media/u/gladiatorX)\
**Post date:** [18.Сентябрь.2013 18:17:02 UTC](https://forum.acestream.media/t/ts-engine-api/2260/17 "2013-09-18T18:17:02Z")

</div>

У меня вопрос по запросу Ready Key=…

Исходные данные:

HELLOTS version=2.1.0 key=b8b17d6ef9  
Публичный ключ: kjYX790gTytRaXV04IvC-xZH3A18sj5b1Tf3I-J5XVS1xsj-j0797KwxxLpBl26HPvWMm

Обрабатываю: sha1(b8b17d6ef9kjYX790gTytRaXV04IvC-xZH3A18sj5b1Tf3I-J5XVS1xsj-j0797KwxxLpBl26HPvWMm)  
Получаю: 12057503e621b6848bc857a1645e27581ae96c5b  
Отправляю: READY key=kjYX790gTytRaXV04IvC-12057503e621b6848bc857a1645e27581ae96c5b

В ответ получаю: NOTREADY.

ПОЧЕМУ?

---

<div class="post-metadata">

**Author:** ![gladiatorX](https://forum.acestream.media/letter_avatar_proxy/v4/letter/g/ecc23a/32.png) [@gladiatorX](https://forum.acestream.media/u/gladiatorX)\
**Post date:** [22.Сентябрь.2013 06:58:06 UTC](https://forum.acestream.media/t/ts-engine-api/2260/18 "2013-09-22T06:58:06Z")

</div>

Похоже этот форум мне не поможет. Где помощь, о которой здесь говорят? :-\
