Audio

’ Gstreamer ’ 流格式錯誤。

  • September 9, 2019

我正在使用帶有藍牙加密狗的 Raspberry pi zero,我正在嘗試將 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 媒體播放器播放它。揚聲器也適用於我的手機。

我能做些什麼來解決這個問題?

事實證明,我正在做的事情有兩個問題:

  • Gstreamer 有時確實支持 mp3 文件,請參閱 此連結了解它支持的格式。替換為filesrc修復audiotestsrc ! convertaudio它,雖然我不確定為什麼需要轉換它。
  • 因為藍牙設備是我需要使用的音頻目標,bluez_sink而不是bluez_source.

這是設法在揚聲器上播放音頻的最終命令。

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

引用自:https://unix.stackexchange.com/questions/335861