Mopidy not playing, but manual gst-launch commands do


#1

Hi all,

For a recent project I’ve had to port our mopidy (2.1.0) player to a docker container on an aarch64 system (running Linux 3.14.29). For some weird reason, which I can’t find, Mopidy only plays the tracks (local files as well as remote streams) when making the following adjustment to the [audio][output] config var:

  • alsasink buffer-time=100

It stops working when I remove the ‘buffer-time=100’ part… I’ve been trying to find the cause, but so far without any luck. What I’ve tried:

  • Run gst-launch-1.0 playbin uri=file:///data/songs/89d0e7ea42f86b762520f839933fd7a5 audio-sink="alsasink" volume="0.1"
  • Run gst-launch-1.0 filesrc location=/data/songs/011d56f9a4ff26b87068a7ec7c4115cc ! mad ! alsasink
  • Run gst-launch-1.0 -v audiotestsrc ! audioconvert ! alsasink

All of the commands above produce output as I would expect: normal playback with a normal CPU utilization.

Below you’ll find the debug logs from Mopidy when running with GST_DEBUG=3:

obj, end = self.scan_once(s, idx)
ValueError: Unterminated string starting at: line 1 column 36855 (char 36854)
0:00:12.965400997    21   0x7f8c05e360 WARN                 basesrc gstbasesrc.c:3470:gst_base_src_start_complete:<source> pad not activated yet
0:00:12.974942663    21   0x7f8c05e360 WARN                 basesrc gstbasesrc.c:3470:gst_base_src_start_complete:<source> pad not activated yet
0:00:12.975852670    21   0x7f8c0614a0 WARN                typefind gsttypefindelement.c:798:gst_type_find_get_extension:<typefind> could not find uri extension in file:///data/songs/89d0e7ea42f86b762520f839933fd7a5
0:00:12.986277552    21   0x7f8c0614a0 WARN                    alsa conf.c:4705:snd_config_expand: alsalib error: Unknown parameters {AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
0:00:12.986375136    21   0x7f8c0614a0 WARN                    alsa pcm.c:2239:snd_pcm_open_noupdate: alsalib error: Unknown PCM default:{AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
0:00:13.016386312    21   0x7f681db630 FIXME                  id3v2 gstid3tag.c:142:gst_tag_from_id3_tag: Cannot map ID3v2 tag 'TDRL' to GStreamer tag
0:00:13.052614416    21     0x24c1b140 WARN                playsink gstplaysink.c:2862:gen_audio_chain:<playsink> warning: No volume control found
0:00:13.052718459    21     0x24c1b140 WARN                playsink gstplaysink.c:2862:gen_audio_chain:<playsink> warning: Volume/mute is not available
WARNING  GStreamer warning: gst-stream-error-quark: No volume control found (3)
0:00:13.084155939    21   0x7f5405a800 WARN                    alsa gstalsasink.c:496:set_hwparams:<alsasink0> warning: Unable to set buffer time 200000 for playback: Invalid argument
0:00:13.085917746    21   0x7f5405a800 WARN                    alsa pcm_hw.c:1209:snd_pcm_hw_get_chmap: alsalib error: Cannot read Channel Map ctl
: No such file or directory
WARNING  GStreamer warning: gst-resource-error-quark: Could not get/set settings from/on resource. (13)

Comparing that with the logs from my manually ran commands it all looks quit the same:


Setting pipeline to PAUSED ...
0:00:00.096269653    48      0xd3372f0 WARN                 basesrc gstbasesrc.c:3470:gst_base_src_start_complete:<source> pad not activated yet
0:00:00.100070012    48      0xd3372f0 WARN                 basesrc gstbasesrc.c:3470:gst_base_src_start_complete:<source> pad not activated yet
Pipeline is PREROLLING ...
0:00:00.102216735    48      0xd3174a0 WARN                typefind gsttypefindelement.c:798:gst_type_find_get_extension:<typefind> could not find uri extension in file:///data/songs/89d0e7ea42f86b762520f839933fd7a5
0:00:00.113443603    48      0xd3174a0 WARN                    alsa conf.c:4705:snd_config_expand: alsalib error: Unknown parameters {AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
0:00:00.113604896    48      0xd3174a0 WARN                    alsa pcm.c:2239:snd_pcm_open_noupdate: alsalib error: Unknown PCM default:{AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
0:00:00.140715455    48   0x7f7c06b8f0 FIXME                  id3v2 gstid3tag.c:142:gst_tag_from_id3_tag: Cannot map ID3v2 tag 'TDRL' to GStreamer tag
0:00:00.180083556    48      0xd24c590 WARN                    alsa gstalsasink.c:496:set_hwparams:<alsasink0> warning: Unable to set buffer time 200000 for playback: Invalid argument
WARNING: from element /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstAlsaSink:alsasink0: Could not get/set settings from/on resource.
Additional debug info:
gstalsasink.c(496): set_hwparams (): /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstAlsaSink:alsasink0:
Unable to set buffer time 200000 for playback: Invalid argument
0:00:00.182093111    48      0xd24c590 WARN                    alsa pcm_hw.c:1209:snd_pcm_hw_get_chmap: alsalib error: Cannot read Channel Map ctl
: No such file or directory
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock

Anyone who has any idea what could be going on? I’ve reached a dead-end at the moment…

Thanks!