2015-12-01 3 views
1

Я фиксирую звук pcm при некоторой частоте дискретизации, например. 24 кГц. Мне нужно закодировать его, используя некоторый кодек (я использую Opus для этого) для отправки по сети. Я заметил, что при некоторой частоте дискретизации, которую я использую для кодирования с помощью Opus, я часто слышу дополнительный «взломанный» шум на принимающей стороне. С другой стороны, это звучит нормально. Это может быть ошибка реализации, но я, хотя, возможно, есть некоторые ограничения, которые я не знаю.Существуют ли какие-либо ограничения для кодирования аудиосигнала?

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

Поэтому у меня есть 2 вопроса по поводу всего этого:

  1. Существуют ли какие-либо ограничения по частоте дискретизации (или других параметров) аудио кодирования? (Как у меня есть звук с частотой 24 кГц, возможно, существуют определенные частоты дискретизации для использования?)
  2. Существуют ли общие методы для обеспечения одинакового качества звука с обеих сторон при отправке аудиопотока по сети?
+0

Являются ли данные, поступающие со скоростью, обязательно для полного воспроизведения? Пробелы обычно создают трещины/выскакивающие звуки. –

+0

@MatsPetersson, как его проверить? какова скорость, необходимая для полной игры? Я использую локальную сеть, и когда я не использую какую-либо кодировку, звук хорош. Поэтому я понимаю вас правильно, скорость достаточно высокая. Кроме того, при некоторой более низкой частоте дискретизации, без трещин слышен звук. Когда я использую более высокую скорость для opus, я здесь, эти трещины – rightaway717

+0

https://wiki.xiph.org/OpusFAQ#How_do_I_report_a_bug.3F –

ответ

1

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

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

Отправка аудиоданных по сети в режиме реального времени потребует сжатия, несмотря ни на что. Требуемая скорость передачи данных слишком высока. Существуют кодеки, которые обеспечивают сжатие без потерь звука (например, FLAC), но степень их сжатия сравнительно низкая по сравнению с, например, Opus.

+0

'Требуемая скорость передачи данных просто слишком высока' - вы имеете в виду, что 24 кГц слишком высока? Но я могу кодировать его, используя opus при более низкой частоте дискретизации, правильно? Есть ли недостатки в этом? – rightaway717

+0

Снижение частоты дискретизации приведет к снижению требуемой скорости передачи данных, но также значительно снизит пропускную способность аудио. Например. при частоте дискретизации 24 кГц вы можете выбирать частоты до 12 кГц. Этого достаточно для речи, но для музыки уже слышится падение высоких частот (цимбалы и другие шипящие звуки). – mvd

+0

Вы можете рассчитать требуемый datarate для передачи несжатого аудио как _bytes/second = samplerate * количество байтов на выборку * количество каналов (моно/стерео/5.1) _ Таким образом, вы можете настроить любой из этих чисел, чтобы уменьшить скорость несжатого потока данных, но всегда ценой потери качества звука. – mvd

1

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

Смежные вопросы