O áudio não funciona no trabalho inicial

3

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!

    
por John 24.03.2014 / 11:18

1 resposta

0

O motivo pelo qual você não pode acessar um dissipador pulseaudio de um trabalho inicial é porque o pulseaudio ainda não está em execução. Por padrão pulseaudio é (e deve ser) iniciado a partir de uma sessão do usuário. Portanto, você não tem problemas de executar após o login.

Para superar isso, devemos executar aplicativos que dependem de um servidor pulseaudio em execução em uma sessão após o login do usuário .

Como alternativa, podemos tentar executar o pulseaudio no modo amplo do sistema , mas como isso pode levar a efeitos colaterais indesejados, não é recomendado:

por Takkat 24.03.2014 / 11:58