Я пытаюсь выполнить рендерер gmediarender UPnP медиа как новомодное задание. Когда я выполняю его из командной строки как сам, все хорошо работает. Когда это работает как новомодное задание, я вкладываю сообщения об ошибках /var/log/upstart/gmediarender
и никакой звук. Сообщения об ошибках отличаются, в зависимости от которой audiosink опции я использую. Если я использую --gstout-audiosink=pulsesink
опция сообщения об ошибках похожа:
Assertion 'm' failed at pulse/thread-mainloop.c:166, function pa_threaded_mainloop_lock(). Aborting.
Без этой опции сообщения похожи:
AL lib: alsa_open_playback: Could not open playback device 'default': Connection refused
ERROR [2014-03-23 20:57:12.621940 | gstreamer] playsink2: Error: The autoaudiosink element is not working. (Debug: gstplaysink.c(1906): gen_audio_chain (): /GstPlayBin2:play/GstPlaySink:playsink2)
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
Независимо от приемника я использую и является ли это новомодным заданием или нет, я получаю эти сообщения:
(gmediarender:1146): GStreamer-CRITICAL **: gst_pad_new_from_template: assertion 'GST_IS_PAD_TEMPLATE (templ)' failed
(gmediarender:1146): GStreamer-CRITICAL **: gst_pad_template_get_caps: assertion 'GST_IS_PAD_TEMPLATE (templ)' failed
(gmediarender:1146): GStreamer-CRITICAL **: gst_pad_set_caps: assertion 'GST_IS_PAD (pad)' failed
(gmediarender:1146): GStreamer-CRITICAL **: gst_element_add_pad: assertion 'GST_IS_PAD (pad)' failed
Я предполагаю, что мой настроенный pulseaudio мог быть лучше, но интересно, что выскочка делает по-другому по сравнению с командной строкой. Наблюдение, поскольку это работает из командной строки, я не вижу, почему это не может работать от выскочки. Я попытался использовать setuid
и setgid
строки файла конфигурации в новомодной конфигурации:
# gmediarender - gmediarender job file
description "UPnP renderer"
author "John Reid <john...reid@netscape.net>"
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Expect gmediarender to run as a daemon
#expect daemon
# Run as john
setuid john
setgid pulse
# Start after pulseaudio
#start on started pulseaudio RESULT=ok
# Start the process
exec /usr/local/bin/gmediarender -f HTPC -u 099519151638c684ee01135a43d427ea
#exec /usr/local/bin/gmediarender -f HTPC -u 099519151638c684ee01135a43d427ea --gstout-audiosink=pulsesink
lsb_release -a
дает:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
Поле является настроенным mythbuntu. Я вкладываю эти сообщения syslog
:
Mar 23 20:57:12 htpc pulseaudio[4224]: [pulseaudio] main.c: Module load failed.
Mar 23 20:57:12 htpc pulseaudio[4224]: [pulseaudio] main.c: Failed to initialize daemon.
Mar 23 20:57:12 htpc pulseaudio[4221]: [pulseaudio] main.c: Daemon startup failed.
Mar 23 21:03:38 htpc pulseaudio[4430]: [pulseaudio] socket-server.c: bind(): Address already in use
Mar 23 21:03:38 htpc pulseaudio[4430]: [pulseaudio] module.c: Failed to load module "module-esound-protocol-unix" (argument: ""): initialization failed.
Любая справка ценилась бы!
Причина, почему Вы не можете получить доступ к приемнику pulseaudio от новомодного задания, состоит в том, потому что pulseaudio еще не работает. На значение по умолчанию pulseaudio (и должен быть), начал с сеанса пользователя. Поэтому у Вас нет проблем от погони за входом в систему.
Для преодоления этого мы должны поэтому запустить приложения, полагающиеся на выполнение pulseaudio сервер на сессии после пользовательского входа в систему .
, Кроме того, мы можем попробовать выполнением pulseaudio в режим в масштабе всей системы , но поскольку это может привести к нежелательным побочным эффектам, которые не рекомендуется сделать так: