gst-launch-0.10 нет синхронизированного звука с alsa и hdmi

#gstreamer #gst-launch #gstreamer-0.10

#gstreamer #gst-запуск #gstreamer-0.10

Вопрос:

Я работаю над imx 6DualLite.

Я не могу добавлять или редактировать системные библиотеки.

Я должен воспроизвести аудиофайл с hdmi и динамиков.

Это конвейер, который я использую:

 gst-launch-0.10 filesrc location=/home/root/beep.wav ! wavparse ! audioconvert ! audioresample ! tee name=t ! queue ! alsasink t. ! queue ! volume volume=1 ! alsasink device=sysdefault:CARD=imxhdmisoc
  

Проблема в том, что звук динамиков не синхронизирован со звуком hdmi

Я уже пытался добавить

 ... alsasink device=sysdefault:CARD=imxhdmisoc sync=TRUE
  

Комментарии:

1. Это зависит от задержки устройства HDMI. Эта информация неизвестна GStreamer, поэтому было бы чистой удачей, если бы он мог их синхронизировать.

Ответ №1:

Как упоминал Флориан, я не уверен, что вы реально сможете ожидать автоматической синхронизации выходных данных.

Но если вы не возражаете против некоторого вмешательства пользователя и / или жесткого кодирования, вы могли бы поэкспериментировать с render-delay свойством каждого alsasink. Установите значение в наносекундах. (например, одна секунда равна 1000000000 нано).

Вот пример с видео:

gst-launch-1.0 videotestsrc pattern=ball ! videoconvert ! tee name=t ! queue ! ximagesink t. ! queue ! ximagesink render-delay=1000000000

Ответ №2:

Я нашел решение (в моем случае оно сработало), связав две карты, которые отображаются с помощью команды:

 ~ $ cat / proc / asound / cards
  0 [DWHDMI]: dw-hdmi-ahb-aud - DW-HDMI
                       DW-HDMI rev 0x0a, irq 22
  1 [sgtl5000audio]: sgtl5000-audio - sgtl5000-audio
                       sgtl5000-audio
  2 [tda1997xaudio]: tda1997x-audio - tda1997x-audio
                       tda1997x-audio
  

Следуя этому руководству:
https://www.alsa-project.org/wiki/Asoundrc#Virtual_multi_channel_devices

Я отредактировал файл /etc/asound.conf . Я цитирую не весь файл (он очень длинный), а только последнюю часть, которую я изменил:

 ...

pcm.!default{
type plug
route_policy "average"
slave.pcm "asymed"
}

ctl.!default{
type hw
card 0
}

ctl.mixer0{
type hw
card 0
}
  

стало

 ...

pcm.!default{
type plug
route_policy "average"
slave.pcm "asymed"
}

ctl.mixer0{
type hw
card 0
}

pcm.primary{
        type hw
        card 0
        device 0
}

ctl.primary {
  type hw
  card 0
}

pcm.secondary{
        type hw
        card 1
        device 0
}

ctl.secondary {
  type hw
  card 1
}

pcm.multi {
  type multi
  slaves.a.pcm "primary"
  slaves.a.channels 2
  slaves.b.pcm "secondary"
  slaves.b.channels 2
  bindings.0.slave a
  bindings.0.channel 0
  bindings.1.slave a
  bindings.1.channel 1
  bindings.2.slave b
  bindings.2.channel 0
  bindings.3.slave b
  bindings.3.channel 1
}