Чтение плей-листов с сервера




ОТЧЁТ ПО ЛЕТНЕЙ ПРАКТИКЕ

 

 

Выполнил:

Поддубный И.Е.

гр. 4084/3

 


 

 

Оглавление

 

 


 

Введение

 

Летнюю практику я проходил в петербургском офисе компании Motorola.

Motorola является одним из мировых лидеров в области интегрированных телекоммуникаций. Однако, вопреки всеобщему мнению, компания занимается не только мобильными телефонами и приложениями для них, но также имеет большое количество программных проектов для персональных компьютеров и других устройств.

Одним из таких проектов является программный комплекс, работающий по стандарту DLNA.

 

DLNA (Digital Living Network Alliance) — это стандарт, который позволяет совместимым устройствам передавать и принимать по домашней сети различный медиа-контент (изображения, музыку, видео), а также отображать его в режиме реального времени. Это технология для соединения домашних компьютеров, мобильных телефонов, ноутбуков и бытовой электроники. Устройства, которые поддерживают спецификацию данной технологии, по желанию пользователя могут автоматически настроиться и объединиться в домашнюю сеть для обмена видео-, аудиоинформацией и цифровыми фотографиями.

Создателями данной технологии являются: Intel, Sony, Matsushita, Microsoft, Nokia, Philips, Hewlett-Packard, Samsung. В развитии и продвижении на рынке технологии преуспели: IBM, Kenwood, Lenovo, Access, AMD, AwoX, Broadcom, Cisco, Comcast, DigiOn, Dolby, Huawei, LGE, Pioneer Corporation, Sharp, ST Microelectronics and Toshiba, Macrovision, NXP, Motorola.

Каждое изделие, которое проходит DLNA сертификацию, получает знак с символикой «DLNA CERTIFIED».

 

Моими задачами на летнюю практику были:

1. Подключиться к проекту, поподробнее узнать про DLNA;

2. Изучить, XML-структуру и XML диалект DIDL-Lite;

3. Ознакомиться и разобраться в коде, уже написанном специалистами компании;

4. Изучить и проверить работу функций, осуществляющих парсинг («parse» (англ.) — анализ, разбор, производить структурный анализ, разбирать предложение, подробно) DIDL-Lite;

5. Написать и изменить функции, занимающиеся чтением с сервера плей-листов (списков воспроизведения);

6. Протестировать работу написанных функций, найденные ошибки исправить;

7. Получить опыт работы в компании высокого уровня.

 


 

DIDL-Lite

 

Моторола ведёт проект с осени 2008 года. За это время было написано несколько мегабайт кода. Проект пишется на языке C сразу под Win32, Linux и прочие системы. Чтобы облегчить кроссплатформенность, существует несколько уровней абстракции. В проекте не задействовались сторонние библиотеки.

В связи с этим, разобраться в исходном коде – вовсе не простая задача. Изучая и проверяя функции парсинга DIDL-Lite, я параллельно вникал в суть проекта, изучал уже написанный исходный код и привыкал к абстракции.

 

DLNA поддерживает не только видео, музыку и изображения, но также и списки воспроизведения (плей-листы). По стандарту плей-листы должны иметь определённую структуру, а именно структуру DIDL-Lite.

 

DIDL (Digital Item Declaration Language) – это диалект XML (Extensible Markup Language). DIDL-Lite – это разновидность DIDL.

DIDL-Lite может содержать следующие тэги:

 

<DIDL-Lite>

<container>

<item>

<dc:title>

<dc:creator>

<upnp:class>

<upnp:album>

<res>

 

Кодировка DIDL-Lite файлов должна обязательно быть UTF-8.

При программном чтении таких файлов возникает проблема. Дело в том, что иногда файлы в кодировке UTF начинаются со следующей последовательности байтов: EF BB BF. Таким образом, при чтении файла вначале необходимо делать проверку на наличие этой последовательности байтов, а только после этого проверять, является ли этот файл DIDL-Lite нужной структуры (плей-листом).

 


 

Чтение плей-листов с сервера

 

В исходном коде был написано ряд функций, занимающих обменом сообщениями с сервером. С помощью этих функций осуществлялся просмотр медиа-файлов с сервера и их воспроизведение. Однако требовалось сделать, чтобы работа с плей-листами не отличалась от работы с обыкновенными контейнерами (папками), содержащими файлы. Ведь плей-лист – это набор ссылок на файлы. Сам по себе он не интересен, интересны лишь файлы, на которые указывают ссылки.

Такая работа с плей-листами удобна и необходима.

 

Общение клиента с сервером выглядит следующим образом:

· формируется SOAP-запрос (на просмотр или проигрывание контейнера или файла) и отсылается серверу;

· сервер отвечает;

· если ответ сервера – это структура плей-листа, то парсим его.

 

Более наглядно на рисунке:

 
 

 


Для пользователя это общение выглядит примерно следующим образом:

Он заходит в контейнеры, видит списки медиа-файлов. Может просмотреть о них информацию или проиграть. Если пользователь выбирает плей-лист, то он видит список файлов, на которые ссылается плей-лист, и также может просмотреть их или проиграть.

 

Эта структура работала, но только по ветке «Плей-лист --> Нет». Моей задачей было дополнить веткой «Плей-лист --> Да».

 

 


 

Тестирование

 

После завершения задачи, необходимо было её проверить. Для этого существует ряд стандартных тестов DLNA. Как они работают: на сервере запускается программа для тестов, на клиенте запускается приложение Моторолы, далее идёт выполнение инструкций (просмотреть такую-то папку, просмотреть такой-то файл и т.п.).

 

Программа Моторолы (версия под Linux) не имела графического интерфейса, поэтому с ней приходилось работать в консоли. Интуитивно понятными командами пользователь блуждал по папкам (cd), просматривал их (ls), просматривал информацию о файлах (info), проигрывал файлы (play). Но для некоторых тестов необходимо было скачать файл с сервера. Полноценных функций, выполняющих это действие, не было. Тогда моей задачей стало написать такую функцию.

После выполнения этой задачи мне не составило труда пройти все тесты.

 


 

Вывод

 

В ходе летней практики мною были выполнены все поставленные задачи. Я помог компании Моторола в написании некоторых функций для серьёзного проекта. Научился пользоваться консолью в Linux, в том числе производить debug программ с помощью консоли. И самое главное, я получил опыт работы в крупной компании и опыт работы в коллективе.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-12-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: