GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu 14.04とCronからの曲の再生?

最近、コンピューターをUbuntu14.04にアップグレードしました。

アップグレード後、システムはcrontabを介して再生していたいくつかの曲を再生しなくなりました。

crontabの行は次のようになります:

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

コマンドを実行してもcronからエラーは発生しません。 SSH経由でコマンドを手動で実行すると、曲が正常に再生されます。

crontabでコマンドの前に「env」を付けて、cronがジョブを実行する環境をよりよく把握できるようにしました。

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

これにより、次の出力が生成されました:

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

ssh接続のインタラクティブシェルを、1つのcronが実行されているようにするには、指定された環境変数を除くすべての設定を解除します。

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

その後、crontabからcopy+pasteを変更しても音が出なくなります。ただし、プログラムはファイルを再生しているようです:

$ /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.

音が間違ったデバイスに出力されているだけだと私を信じさせます。

次の再生に切り替えると、音が出なくなります:

$ 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

ただし、このデバイスを指定すると、意図したとおりにHDMIで再生されます:

$ 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

そのデバイスをシステムのデフォルトとして設定するにはどうすればよいですか?
(より豊かな環境がある場合はいつでもそうです)

または、mgp123に正しいデバイスを使用させるにはどうすればよいですか?
ALSAデバイスはplughw:CARD =NVidia、DEV =3 ですか? / dev内のデバイスと相関しますか?

mpg123を使用すると、次のように特定のデバイスを指定できます。

   -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.

alsaのplughwデバイス:

$ 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

/ dev / sndのpcmC0D?p-devicesと一致しているようです:

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

しかし、それを使用しても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)

これに関してALSAやPulseAudioが何であるかはよくわかりません。

関連:Unityでメニュー項目を常に表示(または自動非表示)するにはどうすればよいですか?

どちらも限られた環境では機能しないようです:

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

どちらのコマンドも、「通常の」環境変数セットで機能します。

最初に「通常の」環境でalsa-info.shをダウンロードして実行しました:

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

ほとんどの環境変数を設定せずに実行しようとすると、エラーが発生しました。

設定後:

export TERM=xterm

スクリプトを再度実行しました。ここでの結果:

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

編集:

環境変数の設定解除をさらに調査すると、再生を中断するにはXDG_RUNTIME_DIRの設定を解除するだけで済みます。

$ unset XDG_RUNTIME_DIR

EDIT2:

cvlcのmgp123を放棄すると、crontabを介して再生すると次のように音が鳴ります:

 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

承認された回答:

でssh接続を使用するときに、「audio」グループにユーザーを追加してみてください:
sudo usermod -aG audio username
再起動して、alsamixerに問題がないことをテストします。これで、音量を設定できます。おそらく、F6キーを押して3番目のデバイスを選択する必要があります。

次に、私の場合、次を使用して、XサーバーなしでリモートPC上のsshによって接続されたサウンドを読み取ることができます。

  • cvlc(vlc-noxパッケージに付属):
    cvlc --alsa-audio-device="hw:0,3" /usr/share/sounds/alsa/Front_Center.wav
    問題がない場合は、hw:0,3をhw:0,0またはhw:0,1に変更します
    私の場合、crontabでも機能します。
  • mpg123:これはssh経由でも起動されます:
    mpg123 -a hw:0,3 Musique/test.mp3

私の場合、pulseaudioはリモートPCで無効になっていることに注意してください(pulseaudioはXおよびlightdmセッションを介して開始されるため、無効にすることが役立つかどうかはわかりません)。 pulseaudioがオフで自動リスポーンしていないことを確認するには、killall -9 pulseaudioを何度も実行します。


Ubuntu
  1. Ubuntu13.10からUbuntu14.04にアップグレードする

  2. Ubuntu13.04からUbuntu13.10にアップグレードします

  3. Ubuntuのコマンドラインから日付と時刻を同期する方法

  1. Ubuntu20.04LTSおよび21.10からUbuntu22.04LTSにアップグレードする方法

  2. Ubuntu15.04からUbuntu15.10にアップグレードする方法

  3. WindowsXPからWindows7にアップグレードしますか?

  1. Ubuntu16.04からUbuntu18.04にアップグレードする方法

  2. USBにUbuntuをインストールし、Uefiを使用してDestopから起動しますか?

  3. スリープから再開した後、Bluetoothが機能しない、Ubuntu 18.04 Lts?