0

我正在研究 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
4

2 回答 2

0

正如弗洛里安所说,我不确定您是否真的能够期望输出自动同步。

但是,如果您不介意一些用户干预和/或硬编码,您可以试验render-delay每个 alsasink 的属性。以纳秒为单位设置值。(例如,一秒是 1000000000 纳秒)。

这是一个带有视频的示例:

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

于 2019-03-12T21:16:17.267 回答
0

我通过链接使用命令显示的两张卡找到了一个解决方案(在我的情况下它有效):

~ $ 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
}
于 2021-02-24T22:53:48.523 回答