Лучший способ сжать массив байтов AUDIO? Windows [дублировать]

 private static List list = new ArrayList();

Вы должны указать параметр типа.

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

List определен для поддержки generics: public class List. Это позволяет выполнять много типов безопасных операций, проверенных временем компиляции.

1
задан Amit 16 February 2014 в 23:40
поделиться

3 ответа

Самый простой способ - просто снизить частоту дискретизации от 44100 до более управляемой, например, 22050, 16000, 11025 или даже 8000. Большинство голосовых кодеков в любом случае не превышают 16000 Гц. А старшие оптимизированы для 8 кГц.

Следующим шагом является поиск кодека. Существует несколько кодеков для использования с Windows Audio Compression Manager , но почти все они относятся к Windows 95 и звучат ужасно по современным стандартам после распаковки.

Вы можете всегда конвертируйте в WMA в реальном времени с помощью формата SDK или с API Media Foundation. Или просто запустите библиотеку с открытым исходным кодом MP3, такую ​​как LAME .

3
ответ дан selbie 22 August 2018 в 06:36
поделиться
  • 1
    Поскольку массив теперь имеет длину 24 000, все еще важно сжать его? – Amit 17 February 2014 в 16:43
  • 2
    @Amit - Это на самом деле ваш звонок. Вы никогда не упоминали, насколько велики ваши блоки аудиоданных, требования к производительности или заявленные цели. Поэтому, если вас устраивает производительность, тогда вы все настроены. В противном случае продолжите изучение дополнительных параметров. – selbie 18 February 2014 в 12:04

GSM имеет хорошее сжатие. Вы можете преобразовать блок данных PCM в GSM (или любой другой кодек, который вы установили), используя acmStreamConvert() . Подробнее см. В MSDN:

Преобразование данных из одного формата в другой

1
ответ дан Remy Lebeau 22 August 2018 в 06:36
поделиться

Для речи с качеством телефона вы можете изменить до 8 бит на выборку и частоту дискретизации 8000. Это значительно уменьшит объем данных.

1
ответ дан ScottMcP-MVP 22 August 2018 в 06:36
поделиться
  • 1
    Благодаря! Размер массива теперь составляет 24 000. Достаточно ли он достаточно быстрый для VOIP? или мне все равно сжать? – Amit 17 February 2014 в 16:42
  • 2
    @Amit: вызов для VOIP - это не ваша средняя скорость передачи данных; это гарантирует, что вы получите что-то разумное, когда пакет упадет и , одновременно снижая задержку. – MSalters 17 February 2014 в 22:28
  • 3
    @MSalters Я могу делать это с помощью потоков, получая данные 24/7 и воспроизводя данные через потоки. Это то, что вы имели в виду, нет? – Amit 17 February 2014 в 22:53
  • 4
    @Amit: Нет, совсем нет. Что вы будете делать, когда (а не если) вы потеряете пакет? Вы не можете использовать TCP для VoIP, который вводит заикание. Повторная отправка не является вариантом. Вам нужно что-то вроде Forward Error Correction. – MSalters 17 February 2014 в 23:02
  • 5
    @MSalters Я это вижу. вы имеете в виду, что произойдет, если я отправлю, например, массив звукового звука, а массив поврежден или что-то в этом роде? Спасибо! Я проверю предмет. – Amit 17 February 2014 в 23:22
Другие вопросы по тегам:

Похожие вопросы: