Добрый день!
Я занимаюсь разработкой специального приложения на Android, которое будет выступать в качестве клиента по отношению к вашему серверу tsengine, запускаемому на компьютере, например, в домашней сети.
В процессе разработки я столкнулся с некоторыми сложностями, связанными с взаимодействием с вашим ПО.
Версия tsengine: 2.0.8.6, версия Windows: 7 (x64)
1. Почему сервер, при старте на Windows каждый раз динамически меняет порт, который слушает команды API? Скажу честно, решение странное, тем более, что если я не ошибаюсь, версия сервера под linux не меняет динамически этот порт. Просто становится не очень удобно каждый раз перенастраивать клиента указывая новый порт для соединения в случае рестарта Windows или самого сервера tsengine на этом Windows.
2. Не знаю, в курсе вы или нет, но tsengine запустившись на Windows способен слушать лишь loopback-интерфейс (127.0.0.1). Если же на компе есть еще один сетевой интерфейс (ну, естественно, комп же подключен к лок. сети) и его IP, например, 192.168.1.200 то сервер tsengine не доступен при попытке подключения к нему с указанием этого IP. Это странно, т.к. тот же клиент на Android фактически не имеет возможности подключиться к вашему серверу tsengine. Для того, что бы обойти эту проблему мне пришлось использовать маленькое стороннее приложение portforwarder, которое умеет слушать все интерфейсы на компе и позволяет организовать перенаправление подключений. Я его настроил так: IN (host: *, port: 50555) -> OUT (host: 127.0.0.1, port: 53677 (ваш динамический порт)). Это позволило решить проблему, но все же хотелось бы обойтись без такого промежуточного слоя.
3. Я обнаружил, что при попытке воспроизведения некоторых трансляций (в частности, трансляция канала 2x2) происходит странное: tsengine как положено качает данные из инета, соответствующий временный файл в папке с кэшами растет в размере, сам tsengine постоянно бомбардирует моего клиента сообщениями о том, что идет процесс скачивания контента
03-18 14:29:17.485: DEBUG/AceStreamController(12998): ENGINE/IN/EVENT livepos is_live=0 last=6866 live_last=1163 buffer_pieces=22 live_first=321 pos=1136 first_ts=1363601950 last_ts=1363602550
03-18 14:29:18.615: DEBUG/AceStreamController(12998): ENGINE/IN/STATUS main:dl;0;0;375;0;0;15;0;3997696;0;0;{"is_live": true, "live_last_ts": 1363602553, "last": 6866, "have": [[1136, 1160], [1164, 1165]], "live_last": 1164, "live_first": 307, "pos": 1139, "live_first_ts": 1363601953, "first": 0}
подключение к предоставленному им URL
http://127.0.0.1:6878/content/b10e8a6910bef2e1924e5593bf310f5dd4802699/0.567822385262тоже происходит успешно, но вот данные с этого урла похоже не стримятся. Просто ничего не поступает и запущенный медиа-плеер на телефоне тупо ждет пока начнут поступать данные. Я тестировал этот кейс в разном окружении, в частности пытался воспроизвести этот URL и на компе с помощью разных плееров - поведение такое же - ожидание. Я хочу сказать, что tsengine качает контент, URL считает им актуаленым (в его логах не было инфы что он приостановил действие этого урла из-за отсутствия интереса) но по данному урлу ничего нельзя получить. Другой канал, например "Первый канал HD" стримится нормально. Я тестировал только два этих канала. Проверьте сами, это очень странно.
Вот .acelive файл для Первого канала:
https://dl.dropbox.com/u/12528791/1TV.aceliveА вот для 2x2:
https://dl.dropbox.com/u/12528791/2x2.aceliveИ, кстати, проблема, описанная в п.2 (доступность сервера только на loopback) мною также обойдена, так что проблема не в этом. Когда я скармливаю ваш контент-URL плееру я меняю его host:port на другие значения, которые предоставлены тем же portforwarder, так что коннект к этому урлу реально осуществляется. Просто данные не идут.
4. Я хотел бы еще на всякий случай уточнить, не производит ли сервер tsenigine перекодирование на лету? Я правильно понимаю, что он просто стримит через http тот контент, который скачал из инета as-is никак не меняя его?
Спасибо за ответы
UPD: по п.3. хотел бы добавить что ситуация переменчивая. Иногда поток 2x2 воспроизводится.
UPD 2: опять п.3: проблема касается не только канала 2x2. На любом канале наблюдается такая переменчивость.