Re: ProgTV + HTTPAceProxy + timeout

#16
OpenMAX это часть прошивки - и даже не знаю какой там размер буфера. Но не маленький.
Проблема в том что ProgTV 12-15 секунд не видит ни байта трафика и перезапускает соеденение. Причём выше была тестовая версия с 3x большим значением timeout-а и тоже не помогло.
Нужно передавать трафик более равномерно (насколько это возможно в торент). Байт в байт, в смысле - как только байт пришёл - сразу передавать. Не ждать 8мбайт Например.

Re: ProgTV + HTTPAceProxy + timeout

#17
Prog wrote:
Thu May 03, 2018 2:53 pm
OpenMAX это часть прошивки - и даже не знаю какой там размер буфера. Но не маленький.
Проблема в том что ProgTV 12-15 секунд не видит ни байта трафика и перезапускает соеденение. Причём выше была тестовая версия с 3x большим значением timeout-а и тоже не помогло.
Нужно передавать трафик более равномерно (насколько это возможно в торент). Байт в байт, в смысле - как только байт пришёл - сразу передавать. Не ждать 8мбайт Например.
Я и передаю байт в байт и не жду никаких 8Мбайт .... по сути 8Мбайт это промежуточный буфер между acestream и плеером-клиентом. Сделан для того чтобы "гасить" буфферизацию AceStream и "ровно" выдавать не клиента. Считается что клиент не считывает одним махом все восемь . Обычно клиенты читают до 2Мбайт не более. Пока клиент читает ИЗ буфера прокси ... прокся докачиват В буфер от движка и всегда старается его подерживать в размере 8Мбайт...... И судя по тому что я просидел под "акулой" и посмотрел .... Таки да progTV качает без останову сколько ему не дай ... И постоянно мониторит поступление данных от источника.... и если он не получает от источника данные в течении 12 сек - инициирует рекконет ...... Воспроизведение из буфера продолжается .... При этом в буфере данных еще на полторы-две минуты просмотра , а бывает и более. Таким образом "алгоритм рекконекта" НЕ смотрит на свой буфер вообще.
Ок. Вношу "рацуху" ... предположим размер буфера progTV нам не известен - ОК ... он часть прошивки - OK ... А есть возможность инициировать рекконект не по таймауту отсутствия данных от источника , а по таймауту отсутствия данных от источника при текущем значении объема буфера ниже заданного ? Есть ли возможность получить объем данных в текущий момент времени которые уже в буфере? Т.е. реализовать такую логику - что если сокет открыт но данные не поступают и текущий объем буфера менее 0,5-1-2 Мбайта (заданного объема в настройках или статично в коде), то тогда - рекконект .. иначе - продолжать ждать данные ....и продолжать "играть" из буфера , как это делается сейчас.

В крайнем случае если НЕ доступна возможность определения текущего объема данных в буфере (хотя мне это кажется странным , как бы непонятно данные есть , а узнать их объем нельзя ?) можно ли добавить настройку таймаута рекконекта от 5 до 60 сек ? А не задавать его статично в коде?

Re: ProgTV + HTTPAceProxy + timeout

#18
Не очень понимаю. Да ProgTV качает всё что дают и считает соеденение разорванным если не дают больше N секунд. Это никак не зависит от состояния буферов внутри (которых несколько, включая ограниченый размером флеши timeshift). То есть факт разрыва соеденения никак не зависит от того сколько байт уже получено. Хоть гигабайт. Раз трафика дальше нет значит разрыв.

Во всяких более сложных протоколах вроде rtsp для этого есть keep alive пакеты. Тут вроде без них можно. Неужели с acestream действительно по пол минуты ничего не приходит?

Re: ProgTV + HTTPAceProxy + timeout

#19
Prog wrote:
Thu May 03, 2018 4:06 pm
Не очень понимаю. Да ProgTV качает всё что дают и считает соеденение разорванным если не дают больше N секунд. Это никак не зависит от состояния буферов внутри (которых несколько, включая ограниченый размером флеши timeshift). То есть факт разрыва соеденения никак не зависит от того сколько байт уже получено. Хоть гигабайт. Раз трафика дальше нет значит разрыв.

Во всяких более сложных протоколах вроде rtsp для этого есть keep alive пакеты. Тут вроде без них можно. Неужели с acestream действительно по пол минуты ничего не приходит?
Да может и полминуты НЕ выдавть поток ...но полминуты это порядка 4Мбайт ... для того чтобы попасть на полминуты надо дважды подряд выкачать все 8Мбат кеша и при этом умудриться не получить данные от движка ... В общем провел эксперимент из серии "чтоб ты гад подавился" поставил промежуточный кеш - 80Мбайт ... все работает , никаких провалов ... Но на 835 Quallcom-е не на всех каналах есть картинка ... при этом звук есть , картинки нет ... на amlogic 912 - все OK .... Это какая-то фича ?
Image
Т.е. я проверил свою теорию и сделал размер буфера таким что он ни в какой сказочной фантазии закачать полностью его не может и вынужден "подкачивать" .... а в это время прокся "добивает" буфер данными в объеме сколько плеер зачитал .... Если поставлю 160 Мбайт , то выдержит и любые "выкрутасы" с провалами acestream при буфферизации

Re: ProgTV + HTTPAceProxy + timeout

#20
Не поможет буфер. если таймшифт увеличить то сколько угодно провалится в него.
Я вот подумал, что в http наверяка есть заголовок максимального времени ожидания. Не помню на вскидку и не поддерживаю, но это был бы выход.

Re: ProgTV + HTTPAceProxy + timeout

#21
Prog wrote:
Thu May 03, 2018 5:12 pm
Не поможет буфер. если таймшифт увеличить то сколько угодно провалится в него.
Я вот подумал, что в http наверяка есть заголовок максимального времени ожидания. Не помню на вскидку и не поддерживаю, но это был бы выход.
Дык этот заголовок прокся "чудесным" образом отдает клиенту ... я буквально вчера приводил пример заголовков ответа прокси - они же и есть заголовки от движка ... они прозрачно передаются от движка на клиента через проксю ... Этот "чудесный" заголовок для persistent connection называется keep-alive, более того в формате http/1.1 соединения являются постоянными по умолчанию и НЕ требуют данного заголовка , но в целях обратной совместимости ... с протоколом http/1.0 оно в проксе и движке добавлено по умолчанию и на клиента при запросе LIVE всегда уходит вот такая "конструкция" перед тем как начать выдавать данные
{'Connection': 'Keep-Alive', 'Content-Type': 'application/octet-stream', 'Keep-Alive': 'timeout=15, max=100'}
Талмуд говорит что

Code: Select all

The extra Keep-Alive header can inform the client how long the server is willing to keep the connection open (timeout=N value) and how many requests you can do over the same connection (max=M) before the server will force a close of the connection.
Как вариант сча попробую всунуть ему timeout =60 :) , хотя толку ... я тк понял не поддерживается ...

Все таки как вариант можно в настройки добавить пункт меню "автореконнет" и время на выбор от 5 до 60 сек? Чисто ради эксперимента .. ну или влупить 60 сек для теста ... чтоб "На скорую" руку и не мучаться с менюхами ? Все равно буфер progTV забивается гораздо на большее время чем 60 сек ... Дело в том что с реконнект я нарвался в - https://4pda.ru/forum/index.php?showtopic=314120 ... как только поставить в настройках "автореконнект" - все ... приплыли .. не работает .. снимаешь "гапочку" - работает вечно. Опять же ... весь "сыр-бор" только при выборе OpenMAX ... при любых других - все ФЕЛЬДИПЕРСОВО и все пашет без единого глюка .... Ну и самое интересное что у меня на Xiaomi Mi6 при выбранном OpenMAX половина трансляций - только звук... видео нет ... как только любой другой Mediapleyer или ffmpeg - красота "внеземная" все без сучка и задоринки .... Но самое интересное и необъяснимое что если я беру поток от прокси и прогоняю через ffmpeg - то в логе ffmpeg НОЛЬ провалов или отсутствия данных ... а с ffmpeg уходит на progTV (реализован from pipe to pipe с ffmpeg "посредине") ... и ... при OpenMAX ... такая же картина как и без ffmpeg ... вот это для меня реальная загадка .....
Last edited by Dorik1972 on Thu May 03, 2018 5:53 pm, edited 1 time in total.

Re: ProgTV + HTTPAceProxy + timeout

#22
Выше есть версия которая >40с ждёт. Отдельно настройки нет, их там несколько на разные случаи. Нужно каким то образом прокси отнести к "длительным" случаям.

Re: ProgTV + HTTPAceProxy + timeout

#23
Prog wrote:
Thu May 03, 2018 5:51 pm
Выше есть версия которая >40с ждёт. Отдельно настройки нет, их там несколько на разные случаи. Нужно каким то образом прокси отнести к "длительным" случаям.
Качнул .. щас поиграюсь ... а как быть с отсутствием видео на проце Quallcomm Snapdragon 835 ? При АБСОЛЮТНО одинаковых настройках с одной и той же прокси одина и та же трансляция на "шкарлупке" с amlogic 912 показывает , а на "тракторе" 835 - только звук ?

Re: ProgTV + HTTPAceProxy + timeout

#24
Лично у меня версия с увеличенным таймаутом реконнекта - работает при "рекомендованном" буфере в 8Мбайт... если не считать отсутствие видео на каналах .. есть только звук ... Причем тип потока OpenMAX определяет одинаково как там где показывает так и там где есть звук и нет картинки... Ниже слайды
Image
Image
Image

Re: ProgTV + HTTPAceProxy + timeout

#25
Может нужно считывать из буфера только после того, как там накопился определённый объем данных ?
В крайнем случае добавить промежуточный буфер, который будет забирать и отдавать данные так, как нужно.

Re: ProgTV + HTTPAceProxy + timeout

#28
В первом сообщении темы я приводил ссылку на гитхаб.
Ставится на линукс... (малинки, апельсинки, ноутбуки) у меня крутится на андройде в linux deploy на debian jessy. Из зависимостей требует python и пакеты к нему gevent и psutil ну и сам движок айстрима. Запуск производится файлом acehttp.py Перед этим нужно сконфигурировать plugins/config/torrenttv.py в 15 строке там где url=вбить адресс к листу с помойки типа .........player.m3u загрузить этот лист в плеер можно по ссылке http://ip_proxy:8000/torrenttv

Если нужны дополнительные инструкции, расскажу, только, наверное удобнее было бы в реалтайм режиме(телега или Вайбер)

Re: ProgTV + HTTPAceProxy + timeout

#29
aceclient.py [LINE:310 ]# DEBUG [02.05 13:06:06] <<< EVENT livepos last=1525255565 live_first=1525253765 pos=1525255535 first_ts=1525253765 last_ts=1525255565 is_live=0 live_last=1525255565 buffer_pieces=9
aceclient.py [LINE:310 ]# DEBUG [02.05 13:06:06] <<< RESUME
aceclient.py [LINE:310 ]# DEBUG [02.05 13:06:06] <<< STATE 2
acehttp.py [LINE:223 ]# INFO [02.05 13:06:06] Streaming "Amedia Hit HD" to 192.168.1.20 finished
aceclient.py [LINE:120 ]# DEBUG [02.05 13:06:06] EVENT stop
aceclient.py [LINE:120 ]# DEBUG [02.05 13:06:06] STOP
Может нужно увеличить last, а то движок не успел получить его новое значение и считает, что поток закончился?

Re: ProgTV + HTTPAceProxy + timeout

#30
aae8 wrote:
Mon May 07, 2018 9:38 pm
........
Может нужно увеличить last, а то движок не успел получить его новое значение и считает, что поток закончился?
Может Надо открыть талмуд по движку - wiki.acestream.org , или поставить себе https://www.wireshark.org , потратить 10-15 минут "пялясь" в логи и НЕ писать фантазии на тему "Есть ли жизнь на Марсе" ....