Сначала я подумал, что контроль
Дело в том, что я хочу запрограммировать,
однако, пролистав
документы нескольких библиотек, кажется,
мне, что контрольная точка все еще хочет
проигрывать медиа файлы на сервере
обеспечивает на самом устройстве,
контрольная точка работает, используя внешний
программное обеспечение (в отличие от медиа рендерера,
который воспроизводит файлы сам).
Для совместимости с UPnP AV программные приложения или аппаратные устройства должны включать как минимум одно устройство UPnP AV (MediaServer, ControlPoint или MediaRenderer) и его обязательные службы. Есть
приложения, обеспечивающие несколько устройств, таким образом, логическое разделение может не быть найдено на практике. Часто проигрыватели видео реализуют службы ControlPoint только для просмотра сервера и загрузки его содержимого (содержимое может находиться даже на другом сервере).
Мне просто нужно что-то, что позволяет мне
подключиться к серверу, проиндексировать медиа
списки, чтобы я мог перейти к чему угодно
трек и только дай мне
возможность играть, остановиться, остановиться,
Далее, предыдущий и контролировать громкость.
однако файлы должны быть воспроизведены
серверный.
UPnP определяет несколько сервисов, которые должны быть реализованы устройством (например, MediaServer должен предоставлять DirectoryService). Каждый сервис имеет обязательные и необязательные действия (например, служба каталогов может быть просмотрена с помощью метода Browse
).
Чтобы достичь того, чего вы хотите, на вашем сервере должен быть реализован UPnP MediaServer (необходимый для просмотра его содержимого) и UPnP MediaRenderer (необходимый для управления воспроизведением). UPnP ControlPoint действует как своего рода пульт дистанционного управления. Он используется для просмотра сервера и выбора сервера для воспроизведения файлов.
Запрос на просмотр выглядит следующим образом (ObjectID 0 всегда обозначает корень дерева):
<Browse xmlns:u =" urn:schemas-upnp-org:service:ContentDirectory:1 ">
<ObjectID>0</ObjectID>
<Filter></Filter>
<RequestedCount>0</RequestedCount>
<StartingIndex >0</StartingIndex>
<SortCriteria ></ SortCriteria>
<BrowseFlag> BrowseDirectChildren </BrowseFlag >
</u:Browse>
Сервер отвечает ответом, который может выглядеть следующим образом:
<DIDL-Lite>
<item id="1" parentID ="0" restricted ="1">
<upnp:class>object.item.videoItem </upnp:class>
<dc:title>Video file</dc:title>
<upnp:artist>John Doe</upnp:artist>
<upnp:genre>Action</ upnp:genre>
<upnp:director>John Doe Jr.</upnp:director>
<res protocolInfo="http-get:*:video/mpeg:*" resolution ="352x288">
http://10.20.30.40:12345/ExportContent?id=1
</res>
</item>
</DIDL-Lite >
В этом случае на сервере имеется только один элемент видео (обычно на сервере имеется несколько папок, содержащих много элементов). Элемент res
содержит информацию о самом ресурсе (где он находится, какой транспортный протокол должен использоваться, тип mime, ...). В вашем случае сервер может даже ответить с «localhost» в качестве адреса, предотвращая загрузку файла. Часть MediaRenderer вашего сервера должна иметь к нему доступ в любом случае.
Я не помню все библиотеки, которые я
сталкивался, но включал часто
упомянутые имена, такие как Cling,
Фраунгофер ФОКУС и CyberLink.
Лично я бы порекомендовал CyberLink для Java . Я использовал его для реализации MediaServer, однако он предлагает достаточно для реализации ControlPoint или MediaRenderer. Кроме того, вы должны получить инструмент разработчика UPnP, такой как Инструменты разработчика для UPnP (первоначально инструменты Intel UPnP) или GUPnP для Linux . GUPnP также предоставляет библиотеку UPnP для C. Эти инструменты разработчика позволяют вам вызывать и отлаживать команды UPnP и очень удобны во время разработки. Другим полезным ресурсом являются описания устройств UPnP от консорциума UPnP.