У меня есть стереомикрофон с фиксированным положением и вращающаяся камера.
Как динамически менять местами аудиоканалы в GStreamer, чтобы в наушниках LEFT / RIGHT выводил либо LEFT / RIGHT, либо RIGHT / LEFT.
В настоящее время я могу поменять их при запуске, но после запуска потока я не могу его изменить.
Мой конвейер в C будет выглядеть так:
gst-launch-1.0 alsasrc device=plughw:1,0 buffer-time=35000 !
audio/x-raw,channels=2 ! audioamplify amplification=10.0 !
deinterleave name=d interleave name=i ! pulsesink d.src_0 !
queue ! volume volume=1 ! i.sink_0 d.src_1 ! queue !
volume volume=1 ! i.sink_1
Это все отлично работает.Теперь, если я хочу поменять приемники, чтобы выходной сигнал ВЛЕВО / ВПРАВО становился ВПРАВО / ВЛЕВО, ничего не происходит.В документации я вижу, что это, вероятно, не сработает, и там сказано: "Смена заглавных букв ввода _ еще не поддерживается".
Если по какой-то причинеВы хотели бы видеть код, в котором он должен измениться:
void cb_interleave_pad(GstElement *element, GstPad *pad, dizzy_elements *data) {
gst_element_unlink(data->volume_1, data->interleave);
gst_element_unlink(data->volume_2, data->interleave);
gst_element_link_pads(data->volume_1, "src", data->interleave, "sink_1");
gst_element_link_pads(data->volume_2, "src", data->interleave, "sink_0");
}
void cb_interleave_pad_reverse(GstElement *element, GstPad *pad, dizzy_elements *data) {
gst_element_unlink(data->volume_1, data->interleave);
gst_element_unlink(data->volume_2, data->interleave);
gst_element_link_pads(data->volume_1, "src", data->interleave, "sink_0");
gst_element_link_pads(data->volume_2, "src", data->interleave, "sink_1");
}
Но, конечно, если эта функция не поддерживается, не имеет смысла следовать по этому маршруту.
Следовательно, есть ли другой плагин / элемент, который позволяет мне динамически менять левый и правый аудиоканалы?