УДК 004.624
ПРОЕКТИРОВАНИЕ ОНЛАЙН АУДИО-КОНВЕРТЕРА
Д. А. Бастрикин Научный руководитель - К. В. Богданов
Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева
Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
Е-mail: [email protected]
Представлен анализ области веб-приложений, занимающихся аудио-конвертированием. Рассмотрена структура существующих веб-приложений и проведен анализ их достоинств и недостатков. Приведено описание предлагаемого веб-приложения. Рассмотрены технологии для реализации предлагаемого веб-приложения, занимающегося аудио-конвертированием.
Ключевые слова: веб-приложение, HTML5, аудио-конвертирование, libmp3lame.js, ffmpegasm.js, webkitdirectory, file api, file system api.
DESIGNING OF ONLINE AUDIO CONVERTER
D. A. Bastrikin Scientific supervisor - K. V. Bogdanov
Reshetnev Siberian State Aerospace University 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation
E-mail: [email protected]
The analysis of the field of web applications dealing with audio conversion. The structure of the existing Web applications and analyze their advantages and disadvantages. A description of the proposed web-based application. The technology for the implementation of the proposed web applications dealing with audio conversion.
Keywords: web-application, HTML5, audio conversion, libmp3lame.js, ffmpegasm.js, webkitdirectory, file api, file system api.
В настоящее время все больше разнообразного контента обрабатывается различными веб-сервисами. Связанно это с тем, что обычному пользователю гораздо удобнее передать свой контент какому-либо сервису, чем устанавливать для обработки программу на свой компьютер, а после, возможно, и настраивать её. Однако несмотря на удобства для пользователей, реализация определенных видов задач обработки контента на веб-сервисах является трудоёмкой. К таким задачам относятся и обработка аудио-данных. Одним из самых популярных направлений в обработке аудио-данных обычными пользователями является аудио-конвертирование [1].
Для проектирования приложения, занимающегося аудио-конвертированием, необходимо решить следующие задачи:
- Провести анализ области аудио-конвертирования.
- Спроектировать архитектуру приложения.
- Выбрать инструменты для разработки данного приложения.
На сегодняшний день существует около двух десятков функционирующих веб-приложений, занимающихся конвертированием аудиоданных, такие как online-audio-converter.com, online-convert.com, media.io, vocalremover.ru и т. д.
Так как реализация большинства алгоритмов конвертации является довольно трудоемкой задачей, все эти приложения конвертируют аудиоданные на стороне сервера. Веб-клиент же используется только для взаимодействия с пользователем, передачи данных пользователя серверу и загрузки данных с сервера. Помимо этого, зачастую в веб клиенте используют сторонние плагины, такие как Adobe Flash Player. Помимо этого все веб-приложения для аудио-конвертирования не запоминают
иерархическую структуру данных, загруженную пользователем. Данный функционал является достаточно удобным для пользователя и реализован в большинстве десктопных аудио-конвертерах. Структура таких веб-приложений показана на рис. 1.
Рис. 1. Структура существующих веб приложений для конвертирования аудиоданных
Таким образом, можно сразу выделить достоинства и недостатки таких приложений.
Достоинства:
• не нуждаются в установке и настройке;
• не требовательны к аппаратным характеристикам клиента.
Недостатки:
• использование сторонних плагинов в клиентской части;
• передача пользовательского контента на сервер;
• нагрузка на сервер.
Такая структура является наиболее удобной для пользователя, если у него есть хороший интернет-канал, который и принимает на себя всю нагрузку при работе приложения со стороны пользователя.
Однако такая структура приложения приводит к дополнительным затратам разработчика на сервер и его поддержание. Несмотря на то, что клиентских частей множество, все основные функции приложения выполняются на сервере. При этом пользователей, обрабатывающих свой контент может быть значительное количество. Таким образом, приложения такого типа довольно требовательны к ресурсам сервера.
А ведь сейчас большинство даже портативных устройств обладают вычислительными способностями для решения отдельных задач обработки аудиоданных. Поэтому, для проектируемого приложения решено выбрать несколько иную структуру приложения.
Решено перенести функции аудио-конвертирования на сторону клиента. Таким образом, сервер будет отвечать только за хранение веб-приложения. Соответственно, в связи с этим возникают некоторые проблемы. Во-первых, это большая потребность такого рода приложения в оперативной памяти, при работе алгоритма конвертирования. Во-вторых, это потребность в месте для хранения уже обработанной информации. И в-третьих, это вынужденная загрузка библиотек при каждом перезапуске приложения.
Используя такую структуру, будет возможно использовать простой хостинг для хранения нашего приложения и избавится от нагрузки интернет-канала пользовательским аудио-контентом.
Структура проектируемого приложения показана на рис. 2.
Рис. 2. Структура проектируемого веб приложения для конвертирования аудиоданных
Для реализации проектируемого веб-приложения, необходимо определиться с инструментами для его разработки.
Ещё до недавнего времени, пожалуй, единственным вариантом реализации такого приложения было использование сторонних плагинов, что приносило некий дискомфорт пользователю, вынуждая их устанавливать, либо просто не использовать данное приложение, если установка невозможна.
Однако, с развитием веб-технологий и широким внедрением стандарта HTML5, стало возможно разработать такое приложение и в родной для браузера среде. Появление таких web API, как FILE API, позволило портировать такие библиотеки для конвертирования аудио-данных, как libmp3lame и ffmpeg. Портами таких библиотек являются libmp3lame.min.js [2], для работы с mp3 кодеком lame, и ffmpeg-asm.js [3], для работы с кодеками ogg и mp4.
Таким образом, благодаря данным библиотекам, нам доступна реализация конвертирования в клиентской части веб-приложения. Структура модуля конвертирования аудиоданных представлена на рис. 3.
Однако проблемы, связанные с потребностью в оперативной памяти и месте для хранения, а также загрузке библиотек, при каждом запуске приложения, не исчезают. Эти проблемы поможет нам решить ещё одно web api - FILE SYSTEM API.
Благодаря данному api наше приложение способно иметь локальное хранилище файлов. Локальное хранилище даёт нам возможность организовать буферизацию, что позволит не загружать весь обрабатываемый файл в оперативную память, таким образом разгрузив её. Также оно позволит нам хранить на устройстве пользователя, как и уже обработанные аудиоданные, так и файлы самого приложения, устранив таким образом необходимость в загрузке библиотек при каждом запуске приложения. На рис. 3 продемонстрировано строение модуля для конвертирования аудиоданных.
О о
Рис. 3. Структура модуля конвертации приложения
Также, такой инструмент, как webkitdirectory, позволит нам сохранить иерархическую структуру обрабатываемых данных.
Таким образом, мы получим некое подобие десктопного приложения, но не нуждающегося в установке, и вообще в каких-либо действиях со стороны пользователя для его функционирования. Структуру данного приложения можно увидеть на рис. 4.
Можно выделить следующие достоинства и недостатки нашего веб-приложения.
Достоинства:
• не нуждаются в установке и настройке;
• не требовательно к ресурсам сервера;
• не требовательно к Интернет-соединению.
Недостатки:
• требовательность к ресурсам пользовательского устройства.
Очевидно, что такой вид приложения не подойдёт устройствам, с довольно низкими системными характеристиками, однако, для большинства современных вычислительных устройств, приложение может быть актуальным.
Библиографические ссылки
1. Сервис для документирования работы веб-приложений [Электронный ресурс]. URL: https://html.spec.whatwg.org/ (дата обращения: 07.12.2014).
2. Блог разработчика akrennmair на GitHub [Электронный ресурс]. URL: https://github.com/ akrennmair (дата обращения: 11.12.2014).
3. Блог разработчика muaz-khan на GitHub [Электронный ресурс]. URL: https://github.com/muaz-khan (дата обращения: 17.12.2014).
4. Обзор различных api файловой системы [Электронный ресурс]. URL: http://www.html5rocks. com/ru/tutorials/file/filesystem/ (дата обращения: 10.12.2014).
5. HTML5 Upload Folder With Webkitdirectory [Электронный ресурс]. URL: http://sapphion.com/ 2011/11/html5-folder-upload-with-webkitdirectory/ (дата обращения: 21.12.2014).
© Бастрикин Д. А. 2015