GNU/Linux >> Znalost Linux >  >> Ubuntu

Ubuntu 14.04 a přehrávání skladeb z Cronu?

Nedávno jsem upgradoval svůj počítač na Ubuntu 14.04.

Po upgradu už systém nepřehrává těch pár skladeb, které jsem si nechal přehrát přes crontab.

Řádky crontab vypadají takto:

0 9   *   *   1-5       /usr/bin/mpg123 -q //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3

Při spuštění příkazu nedostanu žádnou chybu z cronu. Pokud příkaz spustím ručně přes SSH, skladba se přehraje úspěšně.

Před příkaz v crontab jsem přidal ‚env‘, abych lépe pochopil prostředí, ve kterém cron spouští úlohu:

0 9   *   *   1-5       env; /usr/bin/mpg123 //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3

To vygenerovalo následující výstup:

HOME=/home/user
LOGNAME=user
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/user
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
    version 1.16.0; written and copyright by Michael Hipp and others
    free software (LGPL) without any warranty but with best wishes

Directory: /home/user/Music/
Playing MPEG stream 1 of 1: song.mp3 ...

MPEG 1.0 layer III, 320 kbit/s, 44100 Hz stereo
Comment:  00000000 00000210 00000AA0 000000000058C5D0 00000000 00506FD7 00000000 00000000 00000000 00000000 00000000 00000000

[2:11] Decoding of song.mp3 finished

Aby se interaktivní shell mého připojení ssh podobal tomu, pod kterým běží cron, zrušil jsem nastavení všech proměnných prostředí kromě zadaného:

for a in `env | awk -F= '{ print $1 }' | grep -v "HOME\|LOGNAME\|PATH\|LANG\|SHELL\|PWD" | xargs`; do unset $a; done

A po této změně kopírování a vkládání z crontab již nevytváří žádný zvuk. Zdá se však, že program soubor přehraje:

$ /usr/bin/mpg123 //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.16.0; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Directory: /home/user/Music/
Playing MPEG stream 1 of 1: song.mp3 ...

MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

[2:51] Decoding of song.mp3 finished.

Vede mě to k přesvědčení, že zvuk vychází pouze na špatné zařízení.

Přepnutí na přehrávání následujícího nevydává žádný zvuk:

$ aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Ale zadáním tohoto zařízení se přehrává přes HDMI, jak bylo zamýšleno:

$ aplay -D plughw:CARD=NVidia,DEV=3 /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Jak mohu toto zařízení nastavit jako výchozí nastavení systému?
(Jak se zdá, vždy, když mám bohatší prostředí.)

Případně, jak mohu přinutit mgp123, aby používal správné zařízení?
Má zařízení ALSA plughw:CARD=NVidia,DEV=3 korelovat se zařízením v /dev?

mpg123 vám umožní určit konkrétní zařízení takto:

   -a dev, --audiodevice dev
          Specify the audio device to use.  The default is system-dependent (usually /dev/audio or /dev/dsp).  Use this option if  you  have  multiple  audio
          devices and the default is not what you want.

Plughw zařízení v alsa:

$ aplay -L | grep plughw -A2
plughw:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=1
    HDA NVidia, ALC889A Digital
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Hardware device with all software conversions

Zdá se, že se shodují s pcmC0D?p-devices v /dev/snd:

$ ls /dev/snd/ | egrep [013]p
pcmC0D0p
pcmC0D1p
pcmC0D3p

Zdá se však, že jeho použití nepomůže mpg123:

$ /usr/bin/mpg123 -q -a /dev/snd/pcmC0D3p //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3
[oss.c:129] error: Can't reset audio!
[mpg123.c:690] error: ...in decoding next frame: Unable to set up output format! (code 1)

Opravdu nerozumím tomu, co je v tomto ohledu ALSA a/nebo PulseAudio.

Související:Jak vždy zobrazit (nebo automaticky skrýt) položky nabídky v Unity?

Zdá se, že ani jedno nefunguje v omezeném prostředí:

$ pactl list cards
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
$ alsamixer
Error opening terminal: unknown.

Oba příkazy pracují s „normálními“ nastavenými proměnnými prostředí.

Stáhl jsem a spustil alsa-info.sh, nejprve s „normálním“ prostředím:

http://www.alsa-project.org/db/?f=e2be8ceb9ef289ff9ef95557396dd82b88f337e0

Když jsem se to pokusil spustit s nenastavenou většinou proměnných prostředí, došlo k chybě.

Po nastavení:

export TERM=xterm

Znovu jsem spustil skript. Výsledek zde:

http://www.alsa-project.org/db/?f=67fdd80bd55c76cd6dd30c981bf02fe66ba3d9d6

EDIT:

Další zkoumání deaktivace proměnných prostředí ukazuje, že pro přerušení přehrávání musím pouze zrušit nastavení XDG_RUNTIME_DIR.

$ unset XDG_RUNTIME_DIR

EDIT2:

Pokud opustím mgp123 pro cvlc, dostanu zvuk při hraní přes crontab takto:

 0 9  *   *    1-5      /usr/bin/cvlc -q --alsa-audio-device="hw:0,3" --play-and-exit //eadn-wc01-5196795.nxedge.io/home/user/Music/song.mp3 2> /dev/null

Přijatá odpověď:

Na stránce Když používáte připojení ssh , zkuste přidat svého uživatele do skupiny „audio“ :
sudo usermod -aG audio username
restartujte a vyzkoušejte, zda je alsamixer v pořádku, takže můžete nastavit hlasitost:Pravděpodobně budete muset stisknout F6, abyste vybrali 3. zařízení.

Pak v mém případě mohu číst zvuk připojený pomocí ssh na vzdáleném počítači bez X serveru pomocí:

  • cvlc (který je součástí balíčku vlc-nox):
    cvlc --alsa-audio-device="hw:0,3" /usr/share/sounds/alsa/Front_Center.wav
    Pokud to není v pořádku, změňte hw:0,3 na hw:0,0 nebo hw:0,1
    V mém případě to funguje i přes crontab.
  • mpg123:toto funguje také pomocí ssh:
    mpg123 -a hw:0,3 Musique/test.mp3

Všimněte si, že v mém případě je pulseaudio zakázáno na vzdáleném počítači (nejsem si jistý, že je zakázání užitečné, protože pulseaudio se spouští prostřednictvím X a lightdm session). Chcete-li ověřit, že je pulseaudio vypnuto a není automaticky obnoveno, spusťte několikrát killall -9 pulseaudio


Ubuntu
  1. Jak synchronizovat datum a čas z příkazového řádku v Ubuntu

  2. Jak upgradovat na Ubuntu 22.04 LTS z Ubuntu 20.04 LTS a 21.10

  3. Bluetooth po obnovení z režimu spánku nefunguje, Ubuntu 18,04 Lts?

  1. Upgradujte z Ubuntu 13.10 na Ubuntu 14.04

  2. Upgradujte z Ubuntu 13.04 na Ubuntu 13.10

  3. Upgrade z Windows Xp na Windows 7?

  1. Jak upgradovat z Ubuntu 16.04 na Ubuntu 18.04

  2. Jak upgradovat na Ubuntu 15.10 z Ubuntu 15.04

  3. Instalace Ubuntu na USB a spouštění z Destop pomocí Uefi?