Лучший способ обработки ключевых точек в аудиофайле - PullRequest
2 голосов
/ 30 марта 2011

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

Я действительно не знаю, какой формат файла мне следует использовать и как хранить метаданные (ключевые точки)

Я думал о

  1. кодирование wav / mp3 и сохранение метаданных в файле .cue (легко сделать, но хранить 2 файла)
  2. хранение данных XMP в mp3-файле (кажется немного сложнее, но стандартные метаданные встроены в 1 файл)
  3. flv / f4v только со звуком и стандартными метками, но я не уверен, что смогу создать их непосредственно из клиента

Что вы думаете?

Ответы [ 3 ]

2 голосов
/ 05 апреля 2011

По моему мнению, лучшим способом было бы сохранить SoundChannel.position пользовательских меток в XML или что-то подобное.Я понимаю, что это выведет два файла, но вы также можете создать свой собственный тип файла и записать аудиоданные + ключевую точку NFO в один файл.Во всяком случае, я говорю это по нескольким причинам.Во-первых, поиск хороших MP3-кодеров для флеш-памяти будет немного сложнее.Большинство из них основаны на алхимии, которая является технологией предварительного просмотра (даже не бета, просто объединенная технология предварительного просмотра).Он также очень подвержен утечкам памяти, вялой производительности (поскольку флеш-кодеры, пытающиеся кодировать C / C ++, обычно не справляются или перегружают процессы), и также трудно найти полнофункциональный полный.Я бы сказал, что то же самое, скорее всего, применимо и к кодированию FLV / F4V на стороне флэш-памяти.Если вы хотите пойти по этому пути, это самое лучшее, что у вас есть (для начала): http://www.zeropointnine.com/blog/simpleflvwriteras-as3-class-to-create-flvs/

Так что, если действительно, все сводится к тому, что будет у вашего проекта.завершите самый быстрый и работающий самый стабильный, перейдите с решением 2 файла.Не поймите меня неправильно, если хотите, существует множество полу-готовых или базовых решений для кодирования MP3 (а также FLV, как указано выше), но для изучения этих форматов файлов потребуются затраченные время и усилия,узнайте, как работают эти существующие классы / структуры, научитесь расширять их, а затем стабилизировать и отлаживать их.Если вы хотите потратить это время, непременно погрузитесь в: http://code.google.com/p/flash-kikko/.

1 голос
/ 09 апреля 2011

Знаете ли вы, что формат файла WAV поддерживает встроенные блоки CUE?

Спецификация говорит:

The <cue-ck> cue-points chunk identifies a series of positions in 
the waveform data stream. The <cue-ck> is defined as follows:
<cue-ck> -> cue( <dwCuePoints:DWORD> // Count of cue points
                 <cue-point>... ) // Cue-point table

<cue-point> -> struct {
    DWORD dwName;
    DWORD dwPosition;
    FOURCC fccChunk;
    DWORD dwChunkStart;
    DWORD dwBlockStart;
    DWORD dwSampleOffset;
}

Для файла WAV с одним чанком данных (стандарт) fccChunk должен иметь значение «data», chunkStart и blockStart равны 0, а SampleOffset - это сэмпл, который вы хотите отметить.

Это может быть самый портативный способ записи ваших сигналов.

1 голос
/ 05 апреля 2011

Один из вариантов - использовать Кодировка Base64 для сохранения аудиоданных в виде текста внутри файла XML вместе с данными ключевой точки.Это было бы действительно неэффективным способом хранения данных и привело бы к созданию большого файла, особенно если это была длинная запись.Однако использование кодировщика / декодера MP3 или может помочь в этом некоторому другому кодировщику .

Кстати, тот Флориан Ф., с которым я работал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...