21 Сентябрь 2017, 09:53:57Последний пользователь: titigo
Ace Stream Forum » Для разработчиков  » Torrent Stream API » Проблемы с Engine HTTP API
Страниц: [1]   Вниз
  Отправить эту тему  |  Печать  
Автор Тема: Проблемы с Engine HTTP API  (Прочитано 1141 раз)
0 Пользователей и 1 Гость смотрят эту тему.
quepassa
Newbie
*
Оффлайн Оффлайн
Сообщений: 20

Email
« : 04 Март 2017, 21:56:31 »

От моих пользователей последнее время стали поступать жалобы на то, что при просмотре некоторых каналов наблюдаются зацикливания контента. Длина цикла может составлять 10 минут. Проведя "расследования" с одним из жалующихся на это пользователем, нам удалось обнаружить, что причиной такого поведения является взаимодействие с движком по новому протоколу "Engine HTTP API" (http://wiki.acestream.org/wiki/index.php/Engine_HTTP_API). Эта проблема "всплыла" после того, как я начал поэтапное распространение новой версии своего приложения, в которой по умолчанию стал использоваться данный протокол. В моем приложении есть возможность переключиться на использование старого "Engine API" (http://wiki.acestream.org/wiki/index.php/Engine_API). Если это сделать и перезапустить канал, то зацикливание более не наблюдается.

Все это позволяет мне считать, что причиной данного зацикливания является протокол "Engine HTTP API", а точнее, что-то из того, что с ним связано.

Пока что же, я скорее всего, буду вынужден выпустить новую версию приложения, где в качестве дефолтного, будет использоваться старый протокол "Engine API".

Немного деталей.
Движок: 3.1.17 (android)
От движка запрашивалась HTTP ссылка (не HLS).
Канал: Bridge HD
Плеер: Mx Player 1.8.17 (arm neon)
Устройство: Mini M8S (https://4pda.ru/forum/index.php?showtopic=741134)
Сообщить модератору   Записан
Benny
Administrator
Hero Member
*****
Оффлайн Оффлайн
Сообщений: 666

Email
« Ответ #1 : 05 Март 2017, 02:25:13 »

Все это позволяет мне считать, что причиной данного зацикливания является протокол "Engine HTTP API", а точнее, что-то из того, что с ним связано.
За информацию об ошибке спасибо, конечно, но уж от кого-кого, а от разработчика хочется больше деталей: "опись-протокол, сдал-принял" - т.е лог(и), указывающие на (нашу) ошибку где?
Хоть что-то, не позволяющее нам сказать в ответ "...причиной данного зацикливания является некорректная работа стороннего приложения по протоколу "Engine HTTP API" с нашим движком"?
Сообщить модератору   Записан
quepassa
Newbie
*
Оффлайн Оффлайн
Сообщений: 20

Email
« Ответ #2 : 05 Март 2017, 03:03:12 »

Да я бы с удовольствием, но у меня самого такой проблемы не наблюдается. Постараюсь, конечно, еще раз помучать человека и предоставить вам логи работы движка и взаимодействия моего приложения с ним. Но, с другой стороны, логи - это хорошее подспорье, но разработчик движка, обладая знаниями о специфике реализации HTTP API и буду информированным о такой вот проблеме, может провести анализ кода и проверить некоторые предположения даже без лог-файлов.

Смотрите, некоторые еще пишут, что не наблюдают зацикливания при использовании VLC, а вот при использовании MX Player - наблюдают. Это раз.
И я указал, что при использовании старого протокола, зацикливаний нет, а при использовании нового - есть (у человека как раз был mx player). Нюанс тут в том, что при использовании старого протокола, я пропускаю запросы плеера через свой "прокси"-сервер, который со стороны плеера гарантирует прием сколь угодного множества запросов, а на стороне движка гарантирует лишь один запрос от своего имени по указанной движком ссылке воспроизведения. Это два.

Давайте теперь попробуем агрегировать всю эту информацию.
Что объединяет "VLC+новый протокол" и "mx player+старый протокол"? То, что в обоих случаях движок получает один и только один запрос от того, кого он считает плеером. Да, это известный плюс VLC - он не делает двух одновременных запросов. Если и надо, то последовательно.

Итак, на данном этапе можно сказать, что когда на движок всегда прилетает лишь один запрос от плеера, то проблем нет, независимо от того, какой api движка был задействован.

А вот когда включаешь mx player и скармливаешь ему ссылку полученную от нового апи, то ИНОГДА возникают зацикливания. Почему ИНОГДА. а не всегда? Потому что, я заметил, что на разных устройствах тот же mx player по-разному атакует сервер запросами. И в тоже время нам известно, что ссылка, которую выдает новый HTTP API допускает одновременные запросы от одного плеера. Допускаю, что это стало возможным благодаря каким-то специальным усилиям, условно говоря, вы реализовали свой собственный "прокси", который принимает N запросов от плеера и отправляет лишь 1 запрос туда, где осуществляется выдача контента. И возможно, что в этом вашем алгоритме закралась ошибка. Может быть это что-то связанное с заголовком Range, в запросе от плеера?
Сообщить модератору   Записан
Benny
Administrator
Hero Member
*****
Оффлайн Оффлайн
Сообщений: 666

Email
« Ответ #3 : 05 Март 2017, 03:22:12 »

Ок, разработчики об ошибке уведомлены.
Пока это все сильно напоминает "пойди туда - не знаю куда и принеси то - не знаю что", но подождем - может и поднакопится статистика по этому багу.
Сообщить модератору   Записан
Benny
Administrator
Hero Member
*****
Оффлайн Оффлайн
Сообщений: 666

Email
« Ответ #4 : 07 Март 2017, 09:24:16 »

http://wiki.acestream.org/wiki/index.php/Download
В последней бете предпринята попытка исправить
некоторые еще пишут, что не наблюдают зацикливания при использовании VLC, а вот при использовании MX Player - наблюдают.
подобное поведение - нужно проверять.
Сообщить модератору   Записан
quepassa
Newbie
*
Оффлайн Оффлайн
Сообщений: 20

Email
« Ответ #5 : 11 Март 2017, 23:24:16 »

Вот еще описание небольшой ошибки. Она появилась где-то в версии 3.1.15.
Суть в том, что когда запрашиваешь HLS-плейлиста для какого-нибудь торрент файла, то получаешь плейлист с HTTP-стримами.

>>> GET http://127.0.0.1:6878/ace/manifest.m3u8?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw
<<< (61ms)
#EXTM3U
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/01-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=8
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/02-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=6
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/03-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=3
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/04-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=7
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/05-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=10
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/06-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=1
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/07-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=5
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/08-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=9
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/09-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=2
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/10-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=4
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/11-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=0
#EXTINF:-1,1 сезон - Рим (Rome) 2005 (AVC)/12-Rome.(1sezon).2005.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=11
#EXTINF:-1,2 сезон - Рим (Rome) 2007 (AVC)/01-Rome.(2sezon).2007.LostFilm.720p.BDRip.(AVC)-Srg6161.mkv
http://127.0.0.1:6878/ace/getstream?format=json&use_stop_notifications=1&use_api_events=1&transcode_ac3=0&preferred_audio_language=ENG&url=http://127.0.0.1:52094/transport/raw&_idx=20
#EXTINF:-1,2 сезон



Обратите внимание: запрашиваю "/ace/manifest.m3u8" а получаю "/ace/getstream", что характерно для HTTP-стримов, но не HLS. Должно быть так, что бы каждая строка плейлиста начиналась с  "http://127.0.0.1:6878/ace/manifest.m3u8". Это наблюдается и на 3.1.17.
« Последнее редактирование: 11 Март 2017, 23:26:53 от quepassa » Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему  |  Печать