2013-05-06 2 views
0

У меня есть следующие установки трубопровода в GStreamer:GStreamer: Введение задержки/разрыв/переход к аудио

два источник импульсов аудио (pulsesrc) из двух звуковых интерфейсов USB и индивидуального один импульс аудио раковины (pulsesink). Я объединяю два входящих аудиопотока, используя компонент сумматора. К сожалению, между двумя аудиоканалами существует небольшая задержка.

pulsesrc1 --- queue --- audioconvert --- audioresample --- | 
                  | adder --- queue --- | pulsesink 
pulsesrc2 --- queue --- audioconvert --- audioresample --- | 

Я использую системное время/часы для синхронизации. Оба аудиоинтерфейса подключены к одному USB-концентратору. Я предполагаю, что звук уже немного задерживается до того, как его даже подхватят источники (из-за разных часов).

Вот почему я хотел бы представить задержку/пробел/сдвиг на первый аудиоканал (второй отстает чуть ниже), чтобы компенсировать это.

До сих пор я пытался установить свойство «min-threshold-time» первой очереди. К сожалению, трубопровод компенсирует эту задержку, и оба аудиопотока одинаково задерживаются. Я также проверил элемент «audioecho». К сожалению, отсутствует свойство «сухое/влажное». Это означает, что исходный сигнал всегда воспроизводится в свое первоначальное время, а затем после этого задерживает хвост (что мне совсем не помогает).

Любые дальнейшие идеи, как решить эту проблему? Может быть, добавьте пробел молчания? Или другие параметры, которые, возможно, отсутствовали.

Я реализовал этот конвейер с помощью Python. Заранее спасибо!

ответ

0

Вы можете использовать минимальное пороговое время/байты в очереди для задержки отправки данных по остальной части конвейера? Я думаю, это должно сработать. Только если это не идет на это:

http://gentrans.sourceforge.net/docs/head/gst-entrans-plugins/html/gst-entrans-plugins-shift.html

или изменить frie0r плагин задержки для аудио.

+0

Thanks av501! Я пробовал устанавливать минимальное пороговое время раньше. К сожалению, это не работает, потому что автоматическая компенсация задержки GStreamer отражает задержку в другом звуковом пути. Я посмотрю плагин смены. Я дам вам знать, как это работает. –

+0

Вы когда-нибудь работали с элементом shift? Этот простой тестовый конвейер не работает - сдвиг не происходит: gst-launch-0.10 pulsesrc device = alsa_input.usb-Creative_Technology_Ltd_Sound_Blaster_X-Fi_Go__Pro_00201613-00-Pro.analog-stereo! сдвиговая задержка = 2000! очередь ! pulsesink device = alsa_output.usb-Creative_Technology_Ltd_Sound_Blaster_X-Fi_Go__Pro_00201613-00-Pro.analog-stereo –

+0

Никакой хаус не использовал его сам. Возможно, некоторые отладочные отпечатки могут рассказать вам, что происходит? GST_DEBUG = 3 или 4. Кстати, в простом конвейере, как вы знаете, сдвиг произошел? Я не думаю, что это произойдет. Из того, что я прочитал, он сдвигает отметки времени. Поэтому, если вы перемещаете его в контейнер, вы должны увидеть сдвинутую метку времени. Однако в противном случае конвейер не запускается, если только один выход не будет до приемника (если ваш конвейер не находится в режиме реального времени. Если ваш приемник имеет режим реального времени, включите его). – av501

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