Предупреждение кодировщика GStreamer vorbis (неверные позиции канала) для более чем 8 каналов - PullRequest
0 голосов
/ 12 марта 2020

У меня есть конвейер appsrc->rawaudioparse->audioconvert->vorbisenc->oggmux->filesink. В appsr c, я pu sh данных в буфере. данные имеют 16 каналов и находятся в массиве с плавающей запятой с чередованием (ch1, ch2, ch3, ....., ch16, ch1, ch2, ...., ch16). rawaudioparse Свойства:

g_object_set(G_OBJECT(parser) , "pcm-format", 28, // f32le: GST_AUDIO_FORMAT_F32LE
                                "num-channels", 16,
                                "sample-rate", 100,
                                "interleaved", TRUE,
                                 NULL);

Кажется, что конвейер работает хорошо, но я получаю предупреждение, которое меня беспокоит. Это предупреждение появляется только тогда, когда я устанавливаю количество каналов более 8.

** (encoder:3785): WARNING **: 07:56:10.576: Invalid channel positions.

В rawaudioparse есть свойство, называемое channel-позиции , но я не знаю, как установить его.

Кто-нибудь знает, почему существует это предупреждение для более чем 8 каналов и как его исправить?

1 Ответ

0 голосов
/ 12 марта 2020

Проверьте https://gstreamer.freedesktop.org/documentation/audio/gstaudiochannels.html?gi-language=c#GstAudioChannelPosition для GstAudioChannelPosition.

Поскольку для стольких каналов больше нет смысла для позиций, я бы попытался добавить их к g_object_set:

"channel-positions", GST_AUDIO_CHANNEL_POSITION_NONE,

Интересно, почему он не установил бы это автоматически, хотя, если вы установите число каналов больше 8 ..

Если предупреждение не исчезнет, ​​я бы дважды проверил заглавные буквы, согласованные элементами. channel-mask должно быть 0x0, если оно установлено.

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

...