Estou tentando executar o gmediarender renderizador de mídia UPnP como um trabalho inicial . Quando eu corro da linha de comando como eu, tudo funciona bem. Quando ele é executado como um trabalho inicial, recebo mensagens de erro em /var/log/upstart/gmediarender
e não há som. As mensagens de erro são diferentes dependendo de qual opção de áudio usada. Se eu usar a opção --gstout-audiosink=pulsesink
, as mensagens de erro serão semelhantes:
Assertion 'm' failed at pulse/thread-mainloop.c:166, function pa_threaded_mainloop_lock(). Aborting.
Sem essa opção, as mensagens parecem:
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
Independentemente do coletor que eu uso e se é um trabalho iniciante ou não, recebo essas mensagens:
(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
Eu estou supondo que minha configuração pulseaudio poderia ser melhor, mas eu me pergunto o que o upstart está fazendo de forma diferente da linha de comando. Vendo como funciona a partir da linha de comando, não vejo por que não funciona desde o início. Eu tentei usar as sub-rotinas setuid
e setgid
na configuração inicial:
# gmediarender - gmediarender job file
description "UPnP renderer"
author "John Reid <[email protected]>"
# 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
dá:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
A caixa é um mito do Ubuntu configurado. Eu recebo essas mensagens em 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.
Qualquer ajuda seria apreciada!