У меня есть скрипт Python на Raspberry Pi, который транслирует радио. Долгое время все работало отлично, а сегодня не очень. Вот воспроизводимый пример, который выдает сообщение об ошибке:
import pygst
import gst
import time
import subprocess
def on_tag(bus, msg):
taglist = msg.parse_tag()
print 'on_tag:'
for key in taglist.keys():
print '\t%s = %s' % (key, taglist[key])
#our stream to play
music_stream_uri = "http://streams.kqed.org/kqedradio"
##
###creates a playbin (plays media form an uri)
player = gst.element_factory_make("playbin", "player")
##
###set the uri
player.set_property('uri', music_stream_uri)
##
###start playing
player.set_state(gst.STATE_PLAYING)
#listen for tags on the message bus; tag event might be called more than once
bus = player.get_bus()
bus.enable_sync_message_emission()
bus.add_signal_watch()
bus.connect('message::tag', on_tag)
#wait and let the music play
raw_input('Press enter to stop playing...')
И вот сообщение об ошибке:
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
** (test.py:2844): WARNING **: Cannot autolaunch D-Bus without X11 $DISPLAY
Press enter to stop playing...Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
В этом ответе говорится, что часть об отображении безвредна, и я думаю, что видел это сообщение перед тем, как без проблем воспроизводить радиопоток. Я попробовал этот ответ, но он также возвращает ошибку об отображении (не уверен, что такое пульсрадио, но я попробовал его как по ответу).
pi@raspberrypi ~ $ pulseaudio --kill
-bash: pulseaudio: command not found
pi@raspberrypi ~ $ jack_control start
Traceback (most recent call last):
File "/usr/bin/jack_control", line 374, in <module>
main()
File "/usr/bin/jack_control", line 135, in main
bus = dbus.SessionBus()
File "/usr/lib/python2.7/dist-packages/dbus/_dbus.py", line 211, in __new__
mainloop=mainloop)
File "/usr/lib/python2.7/dist-packages/dbus/_dbus.py", line 100, in __new__
bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 122, in __new__
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Стоит отметить, что здесь нет дисплея, я получаю доступ к Raspberry Pi через PuTTY. Этот вопрос имеет очень похожую проблему, но я не понимаю, как этот ответ относится к моему сценарию. Этот ответ (также на очень похожий вопрос) подавляет ошибку X11, но я все равно получаю ошибку о jackbus:
Press enter to stop playing...Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
Наконец, я сбросил alsamixer безрезультатно sudo /etc/init.d/alsa-utils reset
Обновить
Я гений. Оказывается, я случайно подключил кабель аудиовыхода к разъему для наушников моих динамиков вместо разъема аудиовхода. По-видимому, я всегда получал это сообщение об ошибке и никогда не замечал его, потому что у меня все еще нет проблем со звуком (по крайней мере, пока я не облажаюсь с кабелями!). Меня все еще интересовало бы объяснение этого сообщения об ошибке, потому что оно оказалось совершенно ошибочным, и Raspberry Pi действительно выводит звук.