Gstreamer“流格式错误。”

Gstreamer“流格式错误。”

我正在使用带有蓝牙适配器的 Raspberry pi 0,并尝试将 mp3 文件播放到蓝牙扬声器。经过多次尝试,我设法将它们连接起来,这是我为使一切正常工作而执行的命令的完整列表:

rfkill unblock 0
sudo hciconfig hci0 up
sudo hciconfig hci0 piscan
pulseaudio -k
pulseaudio -D
bluetoothctl -a
  scan on
  connect 30:95:E3:95:46:F7
  exit

现在,我使用以下 gstreamer 命令将音频流式传输到扬声器:

gst-launch-1.0 filesrc location=song.mp3 ! pulsesink device=bluez_source.30_95_E3_95_46_F7

这会导致以下错误:

pi@raspberrypi:~ $ gst-launch-1.0 filesrc location=song.mp3 ! pulsesink device=bluez_source.30_95_E3_95_46_F7
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0: The stream is in the wrong format.
Additional debug info:
gstaudiobasesink.c(1119): gst_audio_base_sink_preroll (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0:
sink not negotiated.
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

song.mp3是一个普通的音频文件,我可以用我的手机、vlc 和 Windows Media Player 播放它。该扬声器也可以与我的手机配合使用。

我可以做什么来解决这个问题?

答案1

事实证明,我所做的事情有两个问题:

  • Gstreamer 有时确实支持 mp3 文件,请参阅 这个链接对于它支持的格式。替换filesrcaudiotestsrc ! convertaudio修复它,尽管我不确定为什么需要转换它。
  • 因为蓝牙设备是音频目标,所以我需要使用bluez_sink而不是bluez_source.

这是设法在扬声器上播放音频的最终命令。

gst-launch-1.0 audiotestsrc ! pulsesink device=bluez_sink.FC_58_FA_68_B4_8B

相关内容