Какова наилучшая стратегия для больших объемов аудиофайлов в мобильном приложении? - PullRequest
2 голосов
/ 13 октября 2009

У меня есть приложение S60, которое я пишу на Qt и к которому прикреплено большое количество (несколько тысяч) небольших аудиофайлов, каждый из которых содержит клип произнесенного слова. Мое приложение не требует воспроизведения звука с высокой точностью, но даже при самой низкой скорости передачи данных и в монофоническом формате MP3 они составляют в среднем по 6 тыс. Каждый. Это означает, что мое приложение может занимать до 10 МБ. Характер приложения таков, что в любой момент времени понадобятся только несколько аудиоклипов - может быть, до 50, но больше как 1-10.

Итак, мой вопрос состоит из двух частей:

1) 10 Мб для мобильного приложения слишком велико?

2) Какая разумная альтернатива отправке всех аудиофайлов во время установки?

Спасибо

Ответы [ 6 ]

2 голосов
/ 13 октября 2009

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

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

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

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

1 голос
/ 13 октября 2009

Задумывались ли вы о том, чтобы разделить тысячи аудиофайлов на группы, скажем, по 20?

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

1 голос
/ 13 октября 2009

10MB определенно на большой стороне. Большинство приложений <1 МБ, но я думаю, что я видел несколько больших (6-10-15 МБ), например, словари. </p>

Большинство телефонов S60 имеют внутреннее пространство для хранения около 100 МБ, но у них также есть карты памяти, и они обычно 128 МБ +, и 4 ГБ не редкость для телефонов более высокого класса. Вам нужно проверить спецификации ваших целевых телефонов!

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

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

1 голос
/ 13 октября 2009

Рассматривали ли вы объединение всех клипов в один файл и затем поиск в потоке? Я не уверен, насколько высоки издержки MP3 на файл, но это может помочь.

Тем не менее, каждый мобильный телефон S60 должен иметь 1 ГБ или более, поэтому 10 МБ не звучат как "слишком много". Но вы должны доставить приложение в виде файла JAR, который люди могут загрузить с вашего сайта с ПК, а затем установить по кабелю. Во многих частях мира (например, в Швейцарии) загрузка больших объемов данных с помощью телефона обходится довольно дорого.

0 голосов
/ 10 мая 2010
  1. 10 МБ для мобильного приложения не слишком велико при условии, что вы убеждаете пользователя в том, что контент, который он / она собирается передать по радиоканалу, стоит затрат на передачу данных, которые будет нести пользователь.

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

  1. Лучшим вариантом было бы предложить мультимедийные файлы для загрузки через ваш веб-сайт, чтобы пользователь мог загружать и синхронизировать их с помощью передачи PC-Suite / Mass Storage. Разрешить пользователю загружать файлы в папку e: \ Others или какую-либо общедоступную папку и предлагать читать оттуда носители ...

Мои 2цента ...

0 голосов
/ 13 октября 2009

Храните звуковые файлы в базе данных SQLite и обращайтесь к ним только по требованию. Похоже, вы пишете говорящий словарь. Держите само приложение как можно меньше. Это сравнительно быстро загрузит приложение. По мере того, как рынок баз данных стал более зрелым, кажется, что разработчик должен знать больше только о двух механизмах баз данных: SQLite для настольных и портативных приложений с максимальной производительностью и MySQL для огромных многопользовательских баз данных. Не загружайте все эти звуки при запуске, если это не критично. Моим любимым приложением для говорящих словарей по-прежнему является скрипящая Microsoft Bookshelf '96; без шуток.

...