Windows клиент для vdr

  • Цитата

    Со слов пользователя Walery
    Насчет графа не знаю, по крайней мере напрямую - какая-то обработка потока наверно нужна. Надо посмотреть описание протокола для streamdev - в плагине есть оно.. В общем нас интересует streamdev-client под винды :) А winstb мне нравится потому что он наиболее походит на интерфейс STB :) Все остальные проги под винды - больше заточены на просмотр на компе - с клавой-мышой и т.д.
    Я вобщем тоже не собираюсь дома пользовать этот вариант дома - ну разве временно :) а вот на работе - очень бы пригодилось :)


    Может я не ясно выражаюсь.
    Попытаюсь на конктретном примере.
    Предположим на Linux-машине со SkyStar1 установлен vdr.
    Можно-ли параллельно выводу на телевизор передавать видео/аудио поток в сеть и проигрывать этот поток параллельно на Windows машине путем построения графа который начинается фильтром, который принимает поток по сети и который для видео заканчивается VideoMixingRenderer9?
    Если я правильно понимаю, то для этой цели (трансляции видео/аудио в сеть) можно использовать streamts -ps.
    В теории vlc под windows это съедает. Вполне возможно это можно делать и каким-нибудь из DS Filter'ов. Может у Moolight/Elecard есть что-то подобное.
    Но я с этим не баловался.


    VirtualSTBViewer позволяет показывать клон OSD от vdr рисуя его
    через VideoMixingRenderer9.
    Таким образом, если в VideoMixingRenderer9 будет показываться video которое идет на vdr, то получится копия экрана с Linux'а.


    VirtualSTBViewer пересылает нажатия на клавиатуре на Windows-машине и WinLIRC-команды в соотвествующие команды vdr используя
    его svdrp-протокол.



    Цитата

    Со слов пользователя Walery
    to Epmak:
    Там же все есть - и епг нормальное, и вообще..


    Посмотри на скриншот 3-летней давности.
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

    Сообщение было отредактировано 5 раз, последнее редактирование пользователем Epmak ().

  • Цитата

    Со слов пользователя Epmak
    [Можно-ли параллельно выводу на телевизор передавать видео/аудио поток в сеть и проигрывать этот поток параллельно на Windows машине путем построения графа который начинается фильтром, который принимает поток по сети и который для видео заканчивается VideoMixingRenderer9?


    Вобщем, да. Фильтр можно использовать DS Source, или могу специальный написать. Управление идет по tcp, EPG тоже передается - правда не смотрел через как - потоком или просто файлик epg.dat копируется переодически на локальную машинку, список каналов - копия с сервака.
    Причем смотреть на телеке можно одно, а на клиенте - другое (если одна карта - с одного транспондера, если больше - то с любого) Декодирование и прочее DeCSA происходит на серваке.
    Я таким макаром смотрю на буке иногда - когда линукс запускаю :)
    Ты глянь плагин streamdev..

  • Цитата

    Со слов пользователя Walery
    Вобщем, да. Фильтр можно использовать DS Source, или могу специальный написать.
    Управление идет по tcp, EPG тоже передается - правда не смотрел через как - потоком или просто файлик epg.dat копируется переодически на локальную машинку, список каналов - копия с сервака.
    Причем смотреть на телеке можно одно, а на клиенте - другое (если одна карта - с одного транспондера, если больше - то с любого) Декодирование и прочее DeCSA происходит на серваке.
    Я таким макаром смотрю на буке иногда - когда линукс запускаю :)
    Ты глянь плагин streamdev..



    Грррр. Ты не понимашь что я имею в виду.


    Может код патча vdr поможет.


    В стандартный класс vdr'а cDvbOsd я добавил параллельную отсылку
    данных этой команды по TCP IP. На Windows стороне данные OSD ioctl'а
    разбираются и соответсвующие картинки рисуются используя alphablending на VMR9. Осталось только на VMR9 пустить видео с линукса.

  • Ты предлагаешь просто сделать remote frontend под вениками, если я правильно понял. Тогда да, в принципе поток можно принимать по httр, и рендерить спокойно. Единственно - несколько клиентов не подрубишь.
    Или я опять не до понял чего? :)

  • Цитата

    Со слов пользователя Walery
    Ты предлагаешь просто сделать remote frontend под вениками, если я правильно понял. Тогда да, в принципе поток можно принимать по httр, и рендерить спокойно.
    Или я опять не до понял чего? :)


    Теперь правильно. Как мне кажется доработок должно быть не так много.
    Но это писалось 3 года назад c vdr 1.3. И кернелом 2.4


    Что-то с тех пор скорей всего поменялось в vdr и какой формат стал у ioctl нужно смотреть. Если что, то разборка OSD ioctl'ов находится в source/UOSD.pas


    В принципе все что нужно это взять - это UDVBMain и UOSD и выкинуть все что касается обработки ioctl'ов не относящихся к OSD_SEND_CMD.
    Для проверки работы OSD без видео можно выбрать HardwareType: DummyDVB


    IP адреса и порты для связи захардкожены на тестовые их наверное нужно поменять.


    Следующим этапом можно сделать свой граф с приемом видео.



    Цитата

    Со слов пользователя Walery
    Единственно - несколько клиентов не подрубишь.


    Интересный вопрос. Теоретически можно подобный 'левых хак' для OSD сделать для подключаемых клиентов, но об этом нужно дополнительно думать.

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем Epmak ().

  • Ну что, в общем идея неплохая. Особенно если сделать с несколькими клиентами и раздельным управлением. Посмотришь, что там в новом vdr-е нужно патчить? Под винды все построить я попробую. Для начала простейший вариант без обратной связи - http-прием, мпег-декодированние и алфа-блендинг с ОСД на vmr.

  • посмотрел патчик и скачал virtualstb - буду разбираться, у тебя вроде как все практически есть..
    кстати патчик как работает я не понял :) Что-то ты писал про dummy-osd?

  • Цитата

    Со слов пользователя Walery
    кстати патчик как работает я не понял :)


    Ситуация в том, что vdr сосредоточил обращение к OSD в один единственный вызов ioctl и это происходит в методе

    Исходный код
    1. void cDvbOsd::Cmd(OSD_Command cmd, int color, int x0, int y0, int x1, int y1, const void *data)


    соответсвенно, я в этом методе после вызова ioctl'а добавил отсылку данных OSD ioctl'а по TCPIP:

    Исходный код
    1. + send_OSD_ioctl(&dc);


    соответсвенно данные ioctl'а переводятся из структуры со ссылками в простой общий кусок памяти в виде:

    Исходный код
    1. + struct ioctl_buffer_t {
    2. + unsigned int cmd_length;
    3. + unsigned int additional_data_length;
    4. + unsigned int cmd_id;
    5. + unsigned char data[IOCTL_BUFFER_LENGTH];
    6. + };


    потом этот кусок памяти посылается по адресу и порту

    Исходный код
    1. + char *servIP = "192.168.0.1";
    2. + unsigned short ServPort = 8767;


    путем вызова функции

    Исходный код
    1. void send_data(unsigned char *data, unsigned int data_length, int respose_length) {


    Цитата

    Со слов пользователя Walery
    посмотрел патчик и скачал virtualstb - буду разбираться, у тебя вроде как все практически есть..
    Что-то ты писал про dummy-osd?


    virtaulstb был задуман как hitech. Предпологалось что DVB hardware работает используя Windows driver и Windows используется для отображения видео. А vdr работает со всем этим в виртуальной машине. Соответсвенно в VirtualSTBViewer'е была реализована куча ioctl не только для OSD но и для Frontenda, Demux'а, что для конкретной задачи не представляет интереса.
    VSTBV открывает порт и ждет внешние соединения, которые обрабатывает как ioctl команды.
    В VSTBV была поддержка нескольких видов карт (с большой степенью глюкавости), но для конкретной задачи работа с DVB картами не требуется, достаточно только обработки OSD команд.
    Когда запускаешь VSTBV в режиме DummyDVB он как раз ничего не
    делает с DVB hardware, а только создает простой граф
    и обрабатывает OSD ioctl'ы.


    Для задачи достаточно скачать VirtualSTBViewer-20040808.zip

  • Есть нюанс - у меня например на vdr ss-2 и softdevice. там как обрабатывается OSD? во всяком случае, патчик не отрабатывает.
    Я правда сильно не ковырял, завтра гляну повнимательнее..

  • Цитата

    Со слов пользователя Walery
    Есть нюанс - у меня например на vdr ss-2 и softdevice. там как обрабатывается OSD? во всяком случае, патчик не отрабатывает.
    Я правда сильно не ковырял, завтра гляну повнимательнее..


    Да. Тут случай чуть сложнее.
    SS2 dvb kernel driver по понятным причинам не создает OSD device'а.
    Поэтому vdr не пытается отсылать ioctl для OSD.
    Думаю это все можно обойти создав 'левый' OSD девайс и отключив посылку ioctl'ов в этот девайс, но оставив отсылку данных по TCP.

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем Epmak ().

  • Цитата

    Со слов пользователя Walery
    У тебя аськи нет? есть вопросы по mingw32..


    я аську периодически удаляю тк жутко отвлекает->раздражает (сейчас именно такой период).
    mingw32 я не пользовался.


    Однако c cygwin'ом баловался. Даже vdr без плагинов откомпилировать получилось и с некоторыми патчами и ограниченной функциональностью
    запустить под прародителем VirtualSTB.
    Но это было очень давно. С тех пор я на него не смотрел...

  • Цитата

    Со слов пользователя Epmak


    mingw32 я не пользовался.


    Однако c cygwin'ом баловался. Даже vdr без плагинов откомпилировать получилось и с некоторыми патчами и ограниченной функциональностью
    запустить под прародителем VirtualSTB.
    Но это было очень давно. С тех пор я на него не смотрел...


    Понятно. Хотел попробовать скомпилить xine под винды - она может в качестве фронтенда работать с xine-lib плагином, с осд.
    А готовая версия старенькая, vdr не понимает. Ну да ладно, фиг с ней.

  • Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем trantor ().

  • попалось на глаза
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. и Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.