связь между качеством кодирования vorbis, частотой дискретизации и данными - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть 32-битные данные потока с плавающей запятой с одним каналом и 20 выборками в секунду. Я хочу сжать данные (каждые х часов) и декодировать их, когда это необходимо, и получить данные. Я выбрал алгоритм Vorbis (я знаю, что это с потерями). Я использовал gstreamer-1.0 vorbisen c для кодирования и vorbisde c для декодирования.

конвейер кодирования

appsrc->rawaudioparse->audioconvert->vorbisenc->oggmux->filesink

Я установил rawaudioparse свойства, подобные этому:

 g_object_set(G_OBJECT(parser) , "pcm-format", GST_AUDIO_FORMAT_F32LE,
                                "num-channels", 1,
                                "sample-rate", ?, 
                                 NULL);

и vorbisen c качество, подобное этому:

g_object_set(G_OBJECT(vorbisenc), "quality", ?, NULL);

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

Не удалось установить конвейер декодирования

filesrc->oggdemux->vorbisdec->audioconvert->audioresample->appsink

любое свойство или ограничение для конвейера декодирования.

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

, например:

частота дискретизации: 8000, качество: 0,6 => отлично работает

образец скорость: 8000: 0,8 => бессмысленные данные

частота дискретизации: 16000: 0: => отлично работает

частота дискретизации: 16000: 0,9 => отлично

частота дискретизации: 16000, качество: 0,9 данных * 5,1 => бессмысленные данные

Я не могу понять связь между качеством кодирования, частотой дискретизации и данными. Кто-нибудь может объяснить это?

...