gst-launch-0.10 没有与 alsa 和 hdmi 同步的音频
gst-launch-0.10 no syncronized audio with alsa and hdmi
我正在研究 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
正如 Florian 所提到的,我不确定您是否真的能够期望输出自动同步。
但是如果您不介意一些用户干预 and/or 硬编码,您可以试验每个 alsasink 的 render-delay
属性。以纳秒为单位设置值。 (例如,一秒是 1000000000 纳秒)。
这是一个视频示例:
gst-launch-1.0 videotestsrc pattern=ball ! videoconvert ! tee name=t ! queue ! ximagesink t. ! queue ! ximagesink render-delay=1000000000
我通过链接显示的两张卡片找到了一个解决方案(在我的情况下有效):
~ $ 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
}
我正在研究 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
正如 Florian 所提到的,我不确定您是否真的能够期望输出自动同步。
但是如果您不介意一些用户干预 and/or 硬编码,您可以试验每个 alsasink 的 render-delay
属性。以纳秒为单位设置值。 (例如,一秒是 1000000000 纳秒)。
这是一个视频示例:
gst-launch-1.0 videotestsrc pattern=ball ! videoconvert ! tee name=t ! queue ! ximagesink t. ! queue ! ximagesink render-delay=1000000000
我通过链接显示的两张卡片找到了一个解决方案(在我的情况下有效):
~ $ 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
}