Сетевое приложение сортировки медиафайлов аудиобиблиотеки

 

Введение

программный приложение сетевой аудиобиблиотека

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

Заданием на магистерскую работу является разработка клиент-серверного приложения разграничения медиафайлов для хранения и редактирования файлов аудиоформата MP3.(более точно, англ. MPEG-1/2/2.5 Layer 3; но не MPEG-3 [12]) - третий слой формата кодирования звуковой дорожки MPEG, лицензируемый формат файла для хранения аудиоинформации. MP3 является одним из самых распространённых и популярных форматов цифрового кодирования звуковой информации с потерями. Он широко используется в файлообменных сетях для оценочной передачи музыкальных произведений. Формат может проигрываться практически во всех популярных операционных системах, на большинстве портативных аудиоплееров, а также поддерживается всеми современными моделями музыкальных центров и DVD-плееров.

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


1. Постановка задачи


Заданием данной магистерской работы является разработка проекта «Cетевое приложение разграничения медиафайлов аудиобиблиотеки», который должен максимально отвечать требованиям современного пользователя, предоставляя удобный интерфейс и параллельно с ним многофункциональность.

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

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

. Разработка серверной части, которая будет принимать запросы от клиента, оперировать напрямую с базой данных и MP3-файлами и отсылать соответствующие ответы пользователю.

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

. Получение информации из файла MP3 будет основываться на считывании сервером тегов метаданных ID3V1, которые в дальнейшем будут предоставлены клиенту для дальнейшего просмотра, редактирования и сохранения в базу сервера.

. Введение показателя рейтинга по трекам, и хранение на сервере числа прослушиваний песен для каждого пользователя в отдельности.

. Реализация возможности передачи аудиофайла по сети и его воспроизведения, построение статистической диаграммы по наличию песен определённых жанров на сервере.

. Ведение текстового лога, содержащего историю работы клиент-серверного приложения.

. Внедрение в работу программы интеллектуальной системы «Smart Library», позволяющей предоставить пользователю треки, которые могут его заинтересовать на основе анализа имеющихся песен в его плейлистах.


1.1 Актуальность нововведения системы «Smart Library»


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

Одним из ярких примеров такой системы является известный большинству онлайн-сервис видео «Youtube». На основе просматриваемого пользователем контента, эта система предоставляет ему дополнительный список роликов, формируемый согласно предпочтениям клиента по определённым тегам, включая область, жанр, название, ключевые слова, дату, тематику и т.д. В результате это облегчает поиск необходимой информации, а также делает сам сервис более гибким и интеллектуальным.

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


1.2 Обоснование выбранной модели


В процессе анализа онлайн-статистики крупных интернет-систем, а также наблюдений за прослушиванием музыки пользователями различных медиа ресурсов было сделан вывод, что довольно часто клиент предпочитает слушать музыку различных исполнителей, относящуюся к определённому стилю. На основе этих наблюдений главным тегом для написания системы был выбран жанр песни.

Для реализации системы «Smart Library» в дипломном проекте был выбран следующий подход. При авторизации пользователя система автоматически определяет жанр тех песен, которые доминируют в плейлистах клиента. После этого она предоставляет к его ознакомлению песни с сервера, относящиеся к тому же жанру. В результате пользователь имеет возможность добавить новые песни в свой плейлист для дальнейшего прослушивания и редактирования. Основной целью данной системы является уменьшение времени, затраченного на поиск треков, актуальных для текущего пользователя.


1.3 Анализ решения поставленной задачи


Реализация механизма «Smart Library» делится на следующие этапы:

·определение наиболее часто встречающегося жанра песен пользователя путем перебора каждого плейлиста и трека в базе данных на сервере;

·идентификация всех песен сервера, которые относятся к целевому жанру;

·формирование списка найденных песен;

·фильтрация списка полученных треков на основе уже имеющихся в плейлистах клиента;

·вывод конечного списка аудио треков пользователю.

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


2. Описание предметной области


.1 Обзор существующего программного обеспечения


На сегодняшний день существует множество программных приложений, позволяющих работать с мультимедийными файлами. К самым распространённым относятся следующие:- цифровой мультимедийный медиапроигрыватель, органайзер библиотеки музыки, разработанный Ventis Media Inc [12] для организации и воспроизведения звука в Microsoft Windows. С помощью плагинов он может использоваться для обработки видео.- универсальный проигрыватель от компании Nullsoft [12] (ныне подразделение компании AOL) для воспроизведения файлов мультимедиа и потоковой передачи в среде Microsoft Windows. Имеет развитую библиотеку мультимедиа и зрительные образы. Также Winamp поддерживает внедрение подключаемых модулей, обложек и работу со списками воспроизведения.

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

Также можно выделить мировых серверных мультимедиа-гигантов, таких как:- сервис, предоставляющий услуги видеохостинга. Пользователи могут добавлять, просматривать и комментировать те или иные видеозаписи. Благодаря простоте и удобству использования, YouTube стал популярнейшим видеохостингом и третьим сайтом в мире по количеству посетителей. В январе 2012 ежедневное количество просмотров видео на сайте достигло 4 миллиардов. На сайте представлены как профессионально снятые фильмы и клипы, так и любительские видеозаписи, включая видеоблоги.

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

На основе анализа статистики прослушиваний пользователям сайта индивидуально каждому подбираются и демонстрируются:

·рекомендуемые сайтом к прослушиванию музыкальные треки, популярные у схожих по вкусам слушателей (степень «похожести» при подборе можно регулировать);

·персональные страницы участников с похожими вкусами (подобные пользователи считаются «соседями» друг для друга);

·записи о часто прослушиваемой пользователем музыке в форуме или персональных блогах, ведущихся непосредственно на сайте Last.fm;

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

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


2.2 Структура формата MP3

-файл состоит из нескольких фрагментов (фреймов) MP3, которые, в свою очередь, состоят из заголовка и блока данных. Такая последовательность фрагментов называется элементарным потоком. Фрагменты не являются независимыми элементами («резервуар байт»), и поэтому не могут быть извлечены произвольно.



Рисунок 2.1 - Структура формата MP3


Блок данных MP3-файла содержит сжатую аудио информацию в виде частот и амплитуд. Заголовок MP3 состоит из маркера, который служит для нахождения верного MP3-фрагмента. За ним следует бит, показывающий, что используется стандарт MPEG и два бита, показывающие использование layer 3; другими словами, это определяет MPEG-1 Audio Layer 3 или MP3 (см. рис. 2.1). Последующие значения могут варьироваться в зависимости от типа MP3-файла. Стандарт ISO/IEC 11172-3 [12] определяет диапазон значений для каждой секции заголовка, вместе с общей его спецификацией. Большинство MP3 файлов в настоящий момент содержат ID3-метаданные, которые предшествуют или следуют за MP3-фрагментом.

Теги [12] (от англ. tag - ярлык, метка, бирка) - метки в границах MP3-файла (в начале и / или в конце). В них может быть записана информация об авторстве, альбоме, годе выпуска и прочая информация о треке. В более поздних версиях тегов возможно хранение обложек альбомов и тексты песни. Существуют различные версии тегов. Тот, который используется при написании программы, представлен следующим пунктом.

ID3 [12] (от англ. Identify an MP3) - формат метаданных, наиболее часто используемый в звуковых файлах в формате MP3. ID3 подпись содержит данные о названии трека, альбома, имени исполнителя и т.д., которые используются мультимедиапроигрывателями и другими программами, а также аппаратными проигрывателями, для отображения информации о файле и автоматического упорядочивания аудиоколлекции.

После создания MP3 формата появилась проблема с хранением данных о музыкальном файле. В MP3 это никак не предусматривалось. В 1996 Эрику Кэмпу [12] пришла идея добавить участок памяти в файл, чтобы решить эту проблему.

Первая версия ID3-тегов занимала всего 128 байтов, начинающихся со строки TAG (см. рис. 2.2). Тег помещался в конец файла для поддержания совместимости с ранними проигрывателями. Некоторые из них издавали небольшой шум, когда пытались прочесть тег, но большинство игнорировали его. Современные проигрыватели корректно воспринимают эту информацию.



Рисунок 2.2 - Структура формата ID3V1

Поскольку для данных отводилось немного места, в таких тегах можно было хранить только базовые сведения о песне: название, альбом, исполнитель, комментарий, по 30 байт на каждое поле, 4 байта для хранения года и одного байта под жанр, который можно было выбрать из заранее определённого списка из 80 значений (позднее Winamp расширил список своими 68 значениями). Если названия песен или альбомов содержали более тридцати символов, они обрезались. Конечно, из-за ограничений по размеру ни о каких расширенных возможностях хранения метаданных не могло быть и речи.

Единственное усовершенствование, которое было представлено в версии 1.1, было предложено Майклом Мутшлером (Michael Mutschler) в 1997: так как поле под комментарий всё равно слишком мало для хранения чего-либо полезного, было решено сократить его на два байта, чтобы использовать их для хранения номера трека.v1 много критиковали за ряд проблем. Во-первых, поля были слишком небольшими для большинства информации, которой им предстояло хранить. 30 байт не хватало для длинных названий, они урезались.v1 также не хватало интернационализации. Он утверждал, что все строки должны храниться в ISO 8859-1 [12], но на практике пользователи часто используют национальную кодировку, поэтому нередко им приходилось видеть непонятные символы.


2.3 Ethernet


Ethernet - пакетная технология передачи данных преимущественно локальных компьютерных сетей.

Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне, формат кадров и протоколы управления доступом к среде - на канальном уровне модели OSI. Ethernet в основном описывается стандартами IEEE группы 802.3. Ethernet стал самой распространённой технологией ЛВС в середине 90-х годов прошлого века, вытеснив такие устаревшие технологии, как Arcnet, FDDI и Token ring.

В стандарте первых версий (Ethernet v1.0 и Ethernet v2.0) указано, что в качестве передающей среды используется коаксиальный кабель, в дальнейшем появилась возможность использовать витую пару и оптический кабель.

Преимущества использования витой пары по сравнению с коаксиальным кабелем:

·возможность работы в дуплексном режиме;

·низкая стоимость кабеля «витой пары»;

·более высокая надёжность сетей при неисправности в кабеле (соединение точка-точка: обрыв кабеля лишает связи два узла. В коаксиале используется топология «шина», обрыв кабеля лишает связи весь сегмент);

·минимально допустимый радиус изгиба меньше;

·большая помехозащищенность из-за использования дифференциального сигнала;

·возможность питания по кабелю маломощных узлов, например IP-телефонов (стандарт Power over Ethernet, POE);

·гальваническая развязка трансформаторного типа. При использовании коаксиального кабеля в российских условиях, где, как правило, отсутствует заземление компьютеров, применение коаксиального кабеля часто сопровождалось пробоем сетевых карт и иногда даже полным «выгоранием» системного блока.

Причиной перехода на оптический кабель была необходимость увеличить длину сегмента без повторителей.

Метод управления доступом (для сети на коаксиальном кабеле) - множественный доступ с контролем несущей и обнаружением коллизий (CSMA/CD, Carrier Sense Multiple Access with Collision Detection), скорость передачи данных 10 Мбит/с, размер пакета от 72 до 1526 байт, описаны методы кодирования данных. Режим работы полудуплексный, то есть узел не может одновременно передавать и принимать информацию. Количество узлов в одном разделяемом сегменте сети ограничено предельным значением в 1024 рабочих станции (спецификации физического уровня могут устанавливать более жёсткие ограничения, например, к сегменту тонкого коаксиала может подключаться не более 30 рабочих станций, а к сегменту толстого коаксиала - не более 100). Однако сеть, построенная на одном разделяемом сегменте, становится неэффективной задолго до достижения предельного значения количества узлов, в основном по причине полудуплексного режима работы.

В 1995 году принят стандарт IEEE 802.3u Fast Ethernet со скоростью 100 Мбит/с и появилась возможность работы в режиме полный дуплекс. В 1997 году был принят стандарт IEEE 802.3z Gigabit Ethernet со скоростью 1000 Мбит/с для передачи по оптическому волокну и ещё через два года для передачи по витой паре.


2.4 Сокеты TCP/IP, клиент-сервер


Стеком протоколов TCP/IP называют набор сетевых протоколов, используемых в интернет. В этом стеке различают несколько уровней, и протоколы высокого уровня всегда базируются на протоколах более низких уровней.

В самом низу находятся физический уровень и канальный уровень. Пример протокола - Ethernet, описывающий передачу данных по коаксиальному кабелю или витой паре. Протоколы этих уровней обычно реализуются на уровне железа, например в сетевой карте компьютера. Выше идёт сетевой уровень, где находится протокол IP, описывающий структуру сети и доставку пакетов. Ещё выше - транспортный уровень, где находится протокол TCP, использующийся для передачи данных. Эти протоколы обычно реализуются на уровне операционной системы. На самом верху находится множество протоколов прикладного уровня, выполняющих конкретные прикладные задачи. Обычно они программируются в отдельных приложениях.

Сетевой порт - условное число от 1 до 65535, указывающее, какому приложению предназначается пакет. Согласно IP, в каждом пакете присутствуют IP адрес узла-источника и IP адрес узла-назначения. В TCP пакетах дополнительно указываются порт источника и порт назначения.

Узел назначения, получив пакет, смотрит на порт назначения и передает пакет соответствующему у себя приложению.

Использование портов позволяет независимо использовать TCP протокол сразу многим приложениям на одном и том же компьютере.

Клиентом называют приложение, которое пользуется каким-то сервисом, предоставляемым другим приложением - сервером, обычно на удаленном компьютере. Практически всегда клиент начинает исходящие соединения, а сервер ожидает входящих соединений (от клиентов), хотя бывают и исключения.

Сервер при запуске сообщает операционной системе, что хотел бы «занять» определенный порт (или несколько портов). После этого все пакеты, приходящие на компьютер к этому порту, ОС будет передавать этому серверу. Говорят, что сервер «слушает» этот порт.

Клиент, начиная соединение, запрашивает у своей ОС какой-нибудь незанятый порт во временное пользование, и указывает его в посланных пакетах как порт источника. Затем на этот порт он получит ответные пакеты от сервера.

Таким образом, сервер:

·слушает на определённом порту, заранее известном клиенту;

·занимает этот порт всё время, пока не завершит работу;

·об IP адресе и номере порта клиента узнаёт из приглашения, посланного клиентом.

Клиент:

·заранее знает IP адрес и порт сервера;

·выбирает у себя произвольный порт, который освобождает после окончания соединения;

·посылает приглашение к соединению.


2.5 Краткий вывод


Исходя из поставленного задания на магистерскую работу, целесообразно использовать протокол TCP так как этот протокол обеспечивает подтвержденную передачу данных по сети, что исключит потерю пакетов, а даже многократное их повторение не будет перегружать сеть.


3. Описание и обоснование выбора программных средств для реализации поставленной задачи


Для реализации поставленной задачи были такие средства разработки как Microsoft Visual Studio 2008, язык программирования Visual Basic.NET, СУБД Access.Visual Studio - линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.Basic.NET (VB.NET) - это объектно-ориентированный язык программирования, который можно рассматривать как очередной виток эволюции Visual Basic (VB), реализованный на платформе Microsoft.NET. VB.NET не имеет обратной совместимости с более ранней версией (Visual Basic 6.0). Развитие проектов старых версий (*.vbp) возможно только после предварительной конвертации их в формат VB.NET специальным мастером (Migration Wizard); однако, как правило, после конвертации требуется существенная ручная доработка текстов.Office Access или просто Microsoft Access - реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.

3.1 Язык программирования Visual Basic.NET в среде разработки Visual Studio 2008


Для реализации поставленного задания была установлена среда разработки программного обеспечения Microsoft Visual Studio 2008. Для установки необходимо:

·запустить установщик дистрибутива Visual Studio 2008 Russian;

·выбрать необходимый набор инструментов среды, для выполнения магистерской работы был выбран пакет по-умолчанию;

·выбрать директорию для установки;

·проверить наличие установленной на компьютере программной платформы NET Framework версии 3.5;

·по окончанию установки программной среды выбрать предпочитаемый режим разработки для языка программирования Visual Basic.NET.


3.2 СУБД Microsoft Access


Среда разработки Microsoft Visual Studio 2008, включающая в себя Visual Basic.NET, уже установлена и готова к использованию. Следующим шагом является установка СУБД Microsoft Access.

Microsoft Access входит в пакет программного обеспечения Microsoft Office. Для его установки выполняются следующие действия:

·запустить инсталлятор программного обеспечения Microsoft Office 2003;

·среди компонентов для установки выбрать СУБД Microsoft Access;

·выбрать директорию для установки;

·по окончанию установки пакет Access будет доступен для работы среди других компонентов офиса.

Таким образом, всё необходимое программное обеспечение установлено и готово к использованию для выполнения дипломного проекта.


4. Разработка сетевого приложения «MP3_Catalogizator»


.1 Описание данных (входные, промежуточные, выходные)


Входными данными проекта «Сетевое приложение разграничения медиафайлов аудиобиблиотеки» являются МP3-файл и его теги, к которым пользователь имеет доступ для чтения, воспроизведения, редактирования и удаления из личного профиля. В ходе выполнения вышеуказанных операций промежуточными данными является информация об учётных записях, плейлистах и треках, передаваемая через сокеты TCP/IP между клиентом и сервером. Все файлы физически хранятся на сервере, доступ к которому пользователи получают через программу-клиент. На выходе приложение имеет созданные профили клиентов, списки воспроизведения, а также отредактированную информацию MP3-тегов.


4.2 Топология сети


Самая распространенная на сегодняшний день топология это звезда. Звезда - базовая топология компьютерной сети, в которой все компьютеры сети присоединены к центральному узлу, образуя физический сегмент сети. Подобный сегмент сети может функционировать как отдельно, так и в составе сложной сетевой топологии такой как «дерево». Весь обмен информацией идет исключительно через центральный компьютер, на который таким способом возлагается очень большая нагрузка, поэтому ничем другим, кроме сети, он заниматься не может. Как правило, именно центральный компьютер является самым мощным, и именно на него возлагаются все функции по управлению обменом. Никакие конфликты в сети с топологией звезда в принципе не возможны, потому что управление полностью централизовано.

Достоинства:

·выход из строя одной рабочей станции не отражается на работе всей сети в целом;

·хорошая масштабируемость сети;

·лёгкий поиск неисправностей и обрывов в сети;

·высокая производительность сети;

·гибкие возможности администрирования.

Недостатки:

·выход из строя центрального концентратора обернётся неработоспособностью сети в целом;

·для прокладки сети зачастую требуется больше кабеля, чем для большинства других топологий;

·конечное число рабочих станций в сети ограничено количеством портов в центральном концентраторе.


4.3 Функционал серверного приложения


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


4.4 Функционал клиентского приложения


Клиентская часть осуществляет связь с сервером приложения «MP3_Catalogizator». Она формирует запросы авторизации и регистрации пользователей, предоставляет для просмотра и редактирования информацию об аккаунтах, плейлистах и музыке, полученную от сервера, включает в себя функцию воспроизведения MP3-файлов. Также программой-клиентом предусмотрен вывод жанровой статистики по серверным данным. Под учётной записью администратора осуществляется управление главным списком песен на сервере.


4.5 Администрирование приложения


Управление базой данных сервера приложения осуществляется под учётной записью администратора. При авторизации через данный профиль становятся доступными следующие функции:

·добавление новых треков в главный список песен на сервере;

·доступ к панели администрирования для работы с базой;

·просмотр информации о каждом зарегестрированном пользователе, их плейлистах и файлах;

·удаление пользовательских профилей, списков воспроизведения и треков.

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


4.6 Схема взаимодействия приложений


Всю работу приложения по сети логически можно разбить на следующие основные функции:

·подключение клиента к серверу;

·вход пользователя (авторизация, регистрация);

·работа с плейлистами и песнями текущего пользователя (выбор, редактирование, добавление, удаление);

·воспроизведение MP3-файла;

·просмотр жанровой статистики;

Первый этап - подключение клиента к серверу. В окне клиента в поле IP Server вводится адрес сервера, значение порта «8888», по нажатию клавиши «Connect» происходит подключение, сервер автоматически передаёт клиенту список всех имеющихся песен, а также данные для режима «гость».

Следующим этапом после подключения клиента является авторизация пользователя. Если пользователь уже есть в базе сервера, то процесс аутентификации выглядит так:

шифрование введённого пользователем пароля по алгоритму MD5;

передача серверу клиентом логина и пароля;

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

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

Приложение клиент передает серверу логин, под которым пользователь хочет быть зарегистрирован в системе, и пароль, зашифрованный методом MD5.

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

Воспроизведение MP3-файла осуществляется по принципу передачи от клиента серверу полного пути целевого файла, сервер делит его по байтам и посылает клиенту частями по одному килобайту, а сам клиент записывает полученные данные во временный файл «kurso.mp3», который затем воспроизводится.

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


4.7 Обмен данными


Общение клиента с сервером осуществляется при помощи передачи строковых команд. При компоновке запроса программа-клиент записывает в начало такой строки слово-идентификатор, служащий для вызова на сервере соответствующей функции оперирования с MP3 либо БД. В основную часть строки записываются данные, предназначенные для обработки сервером, разделяются они символом «$», конец строки обозначается символом «%». Например, когда клиент отправляет запрос серверу на получение списка плейлистов текущего пользователя, строка будет выглядеть следующим образом: «i_want_user_playlists$<Имя пользователя>$<Пароль>$%», где подстрока «i_want_user_playlists» служит идентификатором одноимённой функции на сервере, которая в свою очередь приступает к компоновке строки-ответа клиенту, оперируя данными из серверной базы. Структура этой строки выглядит следующим образом: «take_user_playlists$Id пользователя$<Список плейлистов, разделённых знаком доллара>$%»». Клиент примет эти данные, и выведет полученную информацию для просмотра пользователем. Таким образом, каждая функция серверного приложения имеет своё уникальное название, соответствующее определённому запросу клиента. Сам клиент, в свою очередь также реагирует на полученный ответ действием, определяемым идентификатором в начале строки-ответа, полученной от сервера.


4.8 База данных


Для реализации поставленной задачи в проектируемую БД необходимо включить следующие разделы:

1)информация об имеющихся пользователях;

2)информация о плейлистах каждого из пользователей;

)информация о песнях каждого из плейлистов;

)информация о музыкальных жанрах;

Реляционная модель данных некоторой предметной области представляет собой набор отношений (двумерных таблиц), изменяющихся во времени.

В общем случае можно считать, что реляционная БД включает одну или несколько таблиц, объединенных смысловым содержанием, а также процедурами контроля целостности и обработки информации в интересах решения некоторой прикладной задачи. Например, при использовании СУБД Microsoft Access в файле БД наряду с таблицами хранятся и другие объекты базы: запросы, отчеты, формы, макросы и модули.

Достоинство РМД заключается в простоте, понятности и удобстве физической реализации на ЭВМ. С помощью одной таблицы удобно описывать простейший вид связей между данными, а именно деление одного объекта, информация о котором храниться в таблице, на множество подобъектов, каждому из которых соответствует строка или запись таблицы. Физическое размещение данных в реляционных базах на внешних носителях легко осуществляется с помощью обычных файлов. Проблемы же эффективности обработки данных этого типа оказались технически вполне разрешимыми.

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

Реализованная база данных включает пять таблиц, проектирование которых основывается на полученных сущностях:

Сущность «Пользователь» представлена в виде таблицы «Users» (см. рис.).



Представление сущности «Пользователь» в виде таблицы «Users»


В данной таблице поле «Id_User» ключевое типа счётчик, поле «Name_User» содержит логин пользователя и имеет тип данных текстовый (255). Поле «Password_User» содержит пароль пользователя и имеет тип текстовый (255).

Сущность «Плейлист» представлена в виде таблицы «Playlists» (см. рис.).




Представление сущности «Плейлист» в виде таблицы «Playlists»

В таблице «Playlists» поле «Id_Playlist» ключевое типа счётчик, поле «Id_User» служит для связи с таблицей «Users», имеет тип числовой, поле «Name_Playlist» содержит название плейлиста и имеет тип текстовый (255).

Сущность «Песня» представлена в виде таблицы «Songs» (см. рис.).


Представление сущности «Песня» в виде таблицы «Songs»


В таблице «Songs» поле «Id_Song» является ключевым типа счётчик, поле «Title_Song» содержит название песни и имеет тип текстовый (30), поле «Artist_Song» содержит исполнителя и имеет тип текстовый (30), поле «Album_Song» содержит название альбома песни и имеет тип текстовый (30), поле «Year_Song» содержит информацию о годе песни (альбома) и имеет тип числовой, поле «Id_Genre» обозначает жанр песни и служит полем для связи с таблицей «Genres», тип числовой, поле «Comment_Song» содержит комментарий к песне и имеет тип текстовый (30), поле «Track_Song» содержит номер трека и имеет тип числовой, поле «Path_Song» содержит полный путь к песне и имеет тип текстовый (255).

Сущность «ПесняПлейлист» представлена в виде таблицы «SongPlaylist» (см. рис.).



Представление сущности «ПесняПлейлист» в виде таблицы «SongPlaylist»


В таблице «SongPlaylist» поле «Id_Song» обозначает номер песни и служит полем для связи с таблицей «Songs», поле «Id_Playlist» обозначает номер плейлиста и служит полем для связи с таблицей «Playlists», поле «PlayTimes» содержит число прослушиваний песни и имеет тип числовой, поле «Rating» содержит рейтинг песни и имеет тип текстовый (5).

Сущность «Жанр» представлена в виде таблицы «Genres» (см. рис.).



Представление сущности «Жанр» в виде таблицы «Genres»


В таблице «Genres» поле Id_Genre является ключевым типа счётчик, поле «Text_Genre» содержит название жанра.

Общая схема отношений для логического уровня проектирования БД (см. рис.) может выглядит следующим образом:



Логическая модель проекта БД «MP3_Catalogizator»


4.9 Сетевые компоненты


В программе для передачи данных по сети был использован компонент System. Net. Sockets. Класс Socket обеспечивает широкий набор методов и свойств для сетевых взаимодействий, и может быть использован для создания приложений клиента и сервера.

Принцип формирования соединения состоит в следующем. Сервер устанавливает порт с которым приложение будет работать, и начинает его «слушать»:

serverSocket As New TcpListener(8888). Start()

Программа-клиент инициирует соединение отправляя запрос на подключение серверу:

Dim clientSocket As New System. Net. Sockets. TcpClient(). Connect (ip_server, 8888)

Получая такой запрос сервер создает соединение:

clientSocket = serverSocket. AcceptTcpClient()

После этого клиент и сервер могут обмениваться данными.

Отправение данных:

Dim serverStream As NetworkStream = clientSocket. GetStream()outStream As Byte() = serverStream. Write (outStream, 0, outStream. Length). Flush()

Получение данных:

Dim networkStream As NetworkStream = clientSocket. GetStream()bytesFrom(10024) As Byte. Read (bytesFrom, 0, CInt (clientSocket. ReceiveBufferSize))


4.10 Системные требования


Приложение не нуждается в высоких системных требованиях.

Системные требования для корректной работы серверной части:

Процессор 300 MHz, оперативная память 512 Мб, VGA (800 x 600), сетевая карта.

Системные требования для корректной работы клиентской части:

Процессор 300 MHz, оперативная память 128 Мб, VGA (800 x 600), сетевая карта.


4.11 Программирование сервера


Программа «MP3_Catalogizator_Server» является консольным приложением и включает в себя следующие компоненты:

·Модуль Module_MP3_Tags для чтения и редактирования тегов MP3-файла.

·Подключаемая к проекту база данных db.mdb.

После подробного изучения структуры формата ID3V1 MP3 было принято решение о создании модуля «MP3_Tags.vb». В нём реализованы два метода для работы с данными MP3 (см. приложение А):

Функция Refresh() - служит для считывания данных из ID3V1 (см. приложение А1).

Функция Update() - для записи данных в файл MP3 (см. приложение А2).


4.12 Программирование интерфейса клиента


Программа «MP3_Catalogizator_Client» включает в себя следующие компоненты:

·Главная форма Form_MP3_Catalogizator_Client (см. приложение Б1).

·Форма Form_Admin (см. приложение Б4) для управления информационной базой данных.

·Форма Form_Genre (см. приложение Б2) для вывода диаграммы по статистике жанров [8].

·Модуль Module_Forms для объявления общих используемых объектов двух форм [4].

Главная форма занимает доминирующее время работы в диалоговом режиме с пользователем, потому как все основные действия пользователь выполняет с её объектами.

Для организации разделения списка плейлистов и прослушиваемых треков, была введена система профилей пользователей [5]. При входе либо регистрации пользователя, в базу данных на сервере посылается соответствующий запрос на выборку либо на добавление в таблицу «Users».

В программе также доступна сортировка песен в списке по каждому тегу, которая осуществляется выбором названия необходимого поля в элементе управления ComboBox_Sort. При выделении строки в ListView_Music информация из таблицы становиться доступной для просмотра и редактирования в нижней части формы в области GroupBox_Tag. По нажатию кнопки «Save» текущие данные элементов управления этой области передаются серверу и записываются в файл MP3 [3], и, если песня содержится в базе, то и в соответствующие таблицы: «Songs», если это информация ID3V1, и в «SongPlaylist», если это рейтинг.

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

Для работы с плейлистами существует область элементов управления GroupBox_Playlist, в которой виден текущий плейлист, и доступны функции создания нового плейлиста с помощью запроса на добавление, либо удаления выбранного при помощи запроса на удаление из базы. Для удобства работы со списком песен, к элементу управления ListView_Music подключено контекстное меню [3], которое содержит пункты добавления трека в текущий плейлист, в новый плейлист, либо его удаление из списка и плейлиста. При нажатии на кнопку «Genre Stats» открывается вторая форма Form_Genre, на которой строится диаграмма [11] по наличию песен того или иного жанра в базе данных на сервере.


4.13 Устранение возможных ошибок программы


В процессе выполнения работы были предусмотрены следующие возможные ошибки и способы их избежания:

. При попытке перезаписать теги файла, который в данный момент прослушивается, программа выдаёт пользователю сообщение об ошибке (см. рис.).



Сообщение об ошибке при сохранении тегов


2. При попытке добавить файл из списка в текущий плейлист, если в данный момент никакой из плейлистов неактивен, программа выдаёт пользователю сообщение об ошибке (см. рис.).



Рисунок 4.14 - Сообщение об ошибке при неактивном плейлисте


3. При попытке добавить в новый создаваемый плейлист один и тот же файл дважды, программа выдаёт пользователю сообщение об ошибке (см. рис.).



Сообщение об ошибке при повторе файла в новом плейлисте


4. При неправильном вводе пользователем логина либо пароля, выводятся соответствующие сообщения об ошибках (см. рис.).



Сообщение об ошибке при неверном вводе логина



Сообщение об ошибке при неверном вводе пароля

5. В случае регистрации нового профиля, если пользователь с таким логином уже существует, выводится сообщение об ошибке (см. рис.).



Сообщение об ошибке при совпадении логинов в базе


. В случае если при создании нового плейлиста имя такого уже имеется в базе у пользователя, либо оно некорректно, то выводится сообщение об ошибке (см. рис.).



Сообщение об ошибке при одинаковых именах плейлистов



Сообщение об ошибке при некорректном имени плейлиста

7. Если при создании нового плейлиста, пользователь пытается сохранить его без единой песни, выводится сообщение об ошибке (см. рис.)



Сообщение об ошибке при сохранении пустого плейлиста


. При попытке добавления песни в плейлист, в котором она уже есть, выводится сообщение об ошибке (см. рис.)



Сообщение об ошибке при добавлении существующей в плейлисте песни


4.14 Контрольный пример


Рассмотрим работу программы «Виртуальная фонотека» на примере.

При запуске сервера появляется консольное окно (см. рис.)




Стартовое окно сервера


При запуске клиента появляется главное окно (см. приложение Б1). Клиент подключается к серверу с адресом 127.0.0.1, затем производится регистрация нового пользователя Tuhovsky с паролем d3b5s7, для этого поля логин и пароль заполняются необходимой информацией, которая отправляется на сервер по нажатию «Register» (см. рис.).



Регистрация нового пользователя


После нажатия кнопки происходит автоматический вход под новым зарегистрированным профилем, слева доступен список всех песен, хранящихся на сервере (см. рис.).



Вход под профилем «Tuhovsky»


Теперь создаётся новый плейлист с именем «Musplay», в него добавлены в песни с сервера при помощи контекстного меню. Для этого происходит нажатие кнопки «New Playlist», затем правой кнопкой по треку - Add to new playlist. После выполненных действий треклист сохраняется в базу данных нажатием клавиши «Save Playlist». В результате в комбобоксе плейлистов уже находится новый с именем «Musplay» (см. рис.).




Создание нового плейлиста


По нажатию кнопки «Проиграть» вопроизводится выделенный трек Linkin Park - Burn It Down, параллельно с этим есть возможность изменить информацию в тегах любого другого файла, для этого выделяется трек Hadouken! - Rebirth, в соответствующие поля вводится необходимая информация, после чего происходит нажатие на клавишу «Save» для сохранения изменений (см. рис.).



Воспроизведение песни, изменение тегов

Теперь происходит удаление трека Julien-K - Flashpoint Riot из плейлиста, при помощи контекстного меню - Delete. В результате песня удалится из списка плейлиста и из базы данных (см. рис.).



Удаление файла из плейлиста


Измение рейтинга файла Linkin Park - Lost in the Echo на значение «***» осуществляется выделением этого трека в списке и выбором в комбобоксе рейтинга нужного значения, после этого происходит сортировка файлов по рейтингу (см. рис.).



Изменение рейтинга песни, сортировка треков

Для просмотра жанровой статистики по песням необходимо нажать на кнопку «Genre Stats» (см. рис.).



Диаграмма жанровой статистики


Руководство пользователя

При старте программы появляется окно главной формы, пользователь должен прописать адрес сервера в соответствующем окне и нажать кнопку «Connect», после чего он присоединится к серверу в режиме гостя, при желании можно зарегистрировать нового пользователя, введя логин и пароль в соответствующие поля TextBox и нажав кнопку «Register», либо войти уже под имеющимся профилем, нажав клавишу «Enter». Если ранее пользователем создавались плейлисты, они отобразятся в комбобоксе плейлистов, появиться возможность выбрать каждый из них, при этом песни, входящие в выбранный плейлист автоматически заполнят список формы. Также можно создать новый плейлист, нажав на кнопку «New playlist», и затем, добавив необходимые файлы из списка через контекстное меню, нажать «Save playlist». Вверху формы есть комбобокс, позволяющий отсортировать текущие треки в списке по любым тегам. Выделив какой-либо файл в списке можно отредактировать его информацию, которая высветиться внизу в области данных о треке, для этого необходимо нажать кнопку «Save». Также есть возможность воспроизвести выделенный файл, панель управления проигрыванием расположена внизу формы. При нажатии кнопки «Delete Playlist» будет удалён текущий плейлист. Если активирован режим администратора, то по нажатию кнопки «Open Files» можно добавить на сервер новые файлы MP3, при нажатии «Administration» открыть панель управления всей информационной базы, просмотреть и отредактировать её данные. При выборе файла в списке и правом клике по нему можно добавить его в текущий плейлист либо удалить. Для просмотра диаграммы жанровой статистики по песням, нужно нажать кнопку «Genre Stats».


Выводы


В процессе разработки дипломного проекта «Сетевое приложение разграничения медиафайлов аудиобиблиотеки» был реализован следующий набор функций:

·Чтение и обработка информации MP3-файлов.

·Передача информации по сети через сокеты TCP/IP.

·Хранение и изменение данных в базе на удалённом сервере.

·Администрирование информационной базы аудиобиблиотеки.

·Воспроизведение песен.

·Статистическая жанровая оценка по песням.

·Ведение рейтинга числа прослушиваний по песням.

·Интеллектуальная система «Smart Library».

Проект «Сетевое приложение разграничения медиафайлов аудиобиблиотеки» был максимально приближён к уровню, на котором он сможет отвечать требованиям современного пользователя, предоставляя удобный интерфейс и параллельно с ним возможность хранения, каталогизации и редактирования аудиофайлов и плейлистов.

Недостатком программы является возможность работать только с форматом метаданных ID3V1, так как на сегодняшний день более широко распространены теги ID3V2, которые имеют больший объём хранимой в них информации.

Программа может использоваться для работы с метаданными ID3V1 MP3, а также для создания цифровых музыкальных коллекций на удалённом сервере.

В дальнейшем предполагается расширить возможности программы, а именно, дать ей возможность работать не только с форматом метаданных ID3V1 MP3, но и с более продвинутым ID3V2.


Список ссылок


1.Король, Владимир Иванович. Visual Basic.NET, Visual Basic for Applications 6.0: Язык программирования: Справ. с прим. / В.И. Король. - М.: Кудиц-Образ, 2000. - 446 с.

2.Стивенс, Род. Visual Basic: Тестирование и отладка программ: [Пер. с англ.] / Род Стивенс. - М.: ДМК, 2004. - 378 с.

.Браун, Стив. Visual Basic.NET: Учеб. курс / С. Браун. - М. и др.: Питер, 2005. - 574 с.

4.Visual Basic.NET: [Наиболее полное рук. для проф. работы в среде Visual Basic.NET] / Пер. с англ. А. Маторосова. - СПб.:БХВ-Петербург, 2003. - 956 с.

.Лисков, Барбара. Использование абстракций и спецификаций при разработке программ / Лисков, Б. Гатэг Д.; Пер. с англ. С.А. Жигалкина и др. - М.: Мир, 1989. - 424 с.

6.Блехман, Михаил Самойлович. Базы данных. Учебник для вузов: Ок. 17000 терминов. - Харьков, 1993. - 208 с.

.Кнут, Дональд Э. Основы баз данных: [В 7 т.]: Пер. с англ. - М.: Мир, 1977. - Т. 2: Базы данных / Пер. с англ. Г.П. Бабенко и др.; Под

.Грайс, Дэвид. Графические средства персонального компьютера / Пер. с англ. С.П. Забродина и А.В. Шалашова. - М.: Мир, 1989. - 379 с.

.Светозарова, Галина Ивановна. Базы данных: модели, разработка, реализация / Г.И. Светозарова, А.В. Козловский, Е.В. Сигитов; Под ред. С.В.

.Коберниченко, Алексей. Visual Studio 6.: Базы данных. Локальные базы данных / Алексей Коберниченко. - М.: Нолидж, 1999. - 255 с.

.#"justify">Приложение А


Модуль «MP3_Tags.vb»


' Refresh (gets all tags from the specified file)Sub Refresh()

' DeclarationsstrTag As New String(«», 3)strTitle As New String(«», 30)strArtist As New String(«», 30)strAlbum As New String(«», 30)strYear As New String(«», 4)strComment As New String(«», 28)bytDummy As BytebytTrack As BytebytGenre As Byte

' Open the fileintFile As Integer = FreeFile()(intFile, mstrFilename, OpenMode. Binary, OpenAccess. Read, OpenShare. LockWrite)

' Gets length of filelngLOF As Long = LOF(intFile)(lngLOF > 128) Then

' Check for the ID3v1 tag(intFile, strTag, lngLOF - 127, True)(strTag. ToUpper <> «TAG») Then

' No ID3v1 tag found= False(0) = «»(1) = «»(2) = «»(3) = «»(4) = «»(5) = «»(6) = «»

' ID3v1 tag found= True

' Read all frames from the file(intFile, strTitle)(intFile, strArtist)(intFile, strAlbum)(intFile, strYear)(intFile, strComment)(intFile, bytDummy)(intFile, bytTrack)(intFile, bytGenre)

' Assign the frame content to the properties(0) = strTitle(1) = strArtist(2) = strAlbum(3) = strYear(4) = bytTrack(5) = strComment(6) = bytGenreIfIf

' Close the file(intFile)Sub

Рисунок А.1 - Функция считывания данных из ID3V1

' UpdateSub Update()

' DeclarationsstrTag As New String(«», 3)strTitle As New String(«», 30)strArtist As New String(«», 30)strAlbum As New String(«», 30)strYear As New String(«», 4)strComment As New String(«», 28)bytDummy As BytebytTrack As BytebytGenre As Byte

' Open the fileintFile As Integer = FreeFile()(intFile, mstrFilename, OpenMode. Binary, OpenAccess. ReadWrite, OpenShare. LockWrite)

' Gets length of filelngLOF As Long = LOF(intFile)(lngLOF > 0) Then(lngLOF > 128) Then

' Check for an existing ID3v1 tag(intFile, strTag, lngLOF - 127)(strTag. ToUpper <> «TAG») Then

' No ID3v1 tag found, so just add one(intFile, lngLOF)= «TAG»(intFile, strTag)If

' Fix the length of the frames= LSet (mobjFrame(0), Len(strTitle))= LSet (mobjFrame(1), Len(strArtist))= LSet (mobjFrame(2), Len(strAlbum))= LSet (mobjFrame(3), Len(strYear))= mobjFrame(4)= LSet (mobjFrame(5), Len(strComment))= mobjFrame(6)

' Write the frames to the file(intFile, strTitle)(intFile, strArtist)(intFile, strAlbum)(intFile, strYear)(intFile, strComment)(intFile, bytDummy)(intFile, bytTrack)(intFile, bytGenre)IfIf

' Close the file(intFile)Sub

Рисунок А.2 - Функция записи данных ID3V1


Приложение Б


Интерфейс программы



Рисунок Б.1 - Сервер



Рисунок Б.2 - Главное окно клиента



Рисунок Б.3 - Диаграмма жанровой статистики



Рисунок Б.4 - Панель администрирования


Введение программный приложение сетевой аудиобиблиотека На сегодняшний день проблема засорённости компьютеров аудиофайлами полностью исчерпана, благодаря

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ