You are not logged in.

#1 2010-06-27 23:15:06

dafart
Member
Registered: 2007-01-06
Posts: 21

[SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

I had a perfect running mpd setup before I tried to fiddle around with some dependancies to get xbmc-svn to compile without errors. I installed some AUR packages (ffmpeg-svn, x264-git, libva-sds, libvpx, libid3tag).
After that I started to experience trouble with mpd, it start fine and says it plays audio files just fine but whenever i play a mp3 or flac file the progress bar just looks like it's playing the file but I hear no sound. Whenever I play a .dts file i hear the sound correct.
I'm very curious to why this happends.
I rolled back the packages mentioned above but the issue remains unsolved.
My setup: pc is connected to receiver by hdmi cable using the latest alsa version with digital passthrough over hdmi, currently using mpd-git from AUR

mpd -v --no-daemon shows the following:

# mpd -v --no-daemon /etc/mpd.conf
config: loading file /etc/mpd.conf
listen: binding to address for 192.168.1.3
listen: binding to socket address 192.168.1.3:6600
path: path_set_fs_charset: fs charset is: UTF-8
database: reading DB
disabling the last.fm playlist plugin because account is not configured
daemon: opening pid file
daemon: writing pid file

snippet from mpd.log:

Jun 28 00:54 : client: [0] process command "playlistfind filename "Lossy - Tagged and Sorted/Wild Oats/WO-0001 - Kyle Hall - Worx Of Art EP 1 - 2008/Kyle Hall - 01 - Fuse N Me .mp3""
Jun 28 00:54 : client: [0] command returned 0
Jun 28 00:54 : client: [0] process command "addid "Lossy - Tagged and Sorted/Wild Oats/WO-0001 - Kyle Hall - Worx Of Art EP 1 - 2008/Kyle Hall - 01 - Fuse N Me .mp3""
Jun 28 00:54 : add to playlist: Lossy - Tagged and Sorted/Wild Oats/WO-0001 - Kyle Hall - Worx Of Art EP 1 - 2008/Kyle Hall - 01 - Fuse N Me .mp3
Jun 28 00:54 : database: get song: Lossy - Tagged and Sorted/Wild Oats/WO-0001 - Kyle Hall - Worx Of Art EP 1 - 2008/Kyle Hall - 01 - Fuse N Me .mp3
Jun 28 00:54 : client: [0] command returned 0
Jun 28 00:54 : client: [0] process command "playid "7""
Jun 28 00:54 : playlist: play 7:"Lossy - Tagged and Sorted/Wild Oats/WO-0001 - Kyle Hall - Worx Of Art EP 1 - 2008/Kyle Hall - 01 - Fuse N Me .mp3"
Jun 28 00:54 : decoder_thread: clearing mixramp tags
Jun 28 00:54 : decoder_control: mixramp_start = NULL
Jun 28 00:54 : decoder_control: mixramp_prev_end = NULL
Jun 28 00:54 : client: [0] command returned 0
Jun 28 00:54 : client: [0] process command "status"
Jun 28 00:54 : client: [0] command returned 0
Jun 28 00:54 : client: [0] process command "idle"
Jun 28 00:54 : client: [0] command returned 1
Jun 28 00:54 : client: [0] process command "playlistid "7""
Jun 28 00:54 : client: [0] command returned 0
Jun 28 00:54 : mad: detected LAME version 3.97 ("LAME3.97 ")
Jun 28 00:54 : mad: LAME peak found: 0.000000
Jun 28 00:54 : mad: LAME track gain found: -5.000000
Jun 28 00:54 : mad: encoder delay is 576, encoder padding is 1818
Jun 28 00:54 : decoder: audio_format=44100:24:2, seekable=true
Jun 28 00:54 : alsa: default period_time = buffer_time/4 = 185759/4 = 46439
Jun 28 00:54 : client: [0] process command "plchangesposid "2""
Jun 28 00:54 : client: [0] command returned 0
Jun 28 00:54 : alsa: buffer_size=8192 period_size=2048
Jun 28 00:54 : output: opened plugin=alsa name="My ALSA Device" audio_format=44100:32:2
Jun 28 00:54 : output: converting from 44100:24:2
Jun 28 00:54 : Failed to open mixer for 'My ALSA Device': no such mixer control: PCM

mpd.conf:

# An example configuration file for MPD
# See the mpd.conf man page for a more detailed description of each parameter.


# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This 
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory "/media/media9/Muziek/"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use 
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
playlist_directory "/var/lib/mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the 
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file "/var/lib/mpd/mpd.db"
# 
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
#
log_file "/var/log/mpd/mpd.log"
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
pid_file "/var/run/mpd/mpd.pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server 
# state will be reset on server start up.
#
state_file "/var/lib/mpd/mpdstate"
#
# The location of the sticker database.  This is a database which
# manages dynamic information attached to songs.
#
#sticker_file            "~/.mpd/sticker.sql"
#
###############################################################################


# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
user "mpd"
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
#group                "nogroup"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon.
#
# For network
bind_to_address        "192.168.1.3"
#
# And for Unix Socket
#bind_to_address        "~/.mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
port                "6600"
#
# This setting controls the type of information which is logged. Available 
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
log_level            "verbose"
#
# If you have a problem with your MP3s ending abruptly it is recommended that 
# you set this argument to "no" to attempt to fix the problem. If this solves
# the problem, it is highly recommended to fix the MP3 files with vbrfix
# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
# point gapless MP3 playback can be enabled.
#
#gapless_mp3_playback            "yes"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists    "no"
#
# This setting defines a list of tag types that will be extracted during the 
# audio file discovery process. Optionally, 'comment' can be added to this
# list.
#
#metadata_to_use    "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This setting enables automatic update of MPD's database when files in 
# #music_directory "path_to_your_music_collection"
#
auto_update    "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself.  There is no limit by default.
#
#auto_update_depth "3"
#
###############################################################################


# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following 
# symbolic links outside of the configured #music_directory "path_to_your_music_collection"
#
#follow_outside_symlinks    "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured #music_directory "path_to_your_music_collection"
#
#follow_inside_symlinks        "yes"
#
###############################################################################


# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled        "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network.
#
#zeroconf_name            "Music Player"
#
###############################################################################


# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# can setting can be specified multiple times for different password profiles.
#
#password                        "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in. 
#
#default_permissions             "read,add,control,admin"
#
###############################################################################


# Input #######################################################################
#

input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}

#
###############################################################################

# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple 
# audio outputs at the same time, through multiple audio_output settings 
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of 
# other audio outputs.
#
# An example of an ALSA output:
#
audio_output {
    type        "alsa"
    name        "My ALSA Device"
    device        "hw:0,3"    # optional
##    format        "44100:16:2"    # optional
##    mixer_type      "hardware"    # optional
##    mixer_device    "default"    # optional
##    mixer_control    "Master"    # optional
##    mixer_index    "0"        # optional
}
#
# An example of an OSS output:
#
#audio_output {
#    type        "oss"
#    name        "My OSS Device"
##    device        "/dev/dsp"    # optional
##    format        "44100:16:2"    # optional
##    mixer_type      "hardware"    # optional
##    mixer_device    "/dev/mixer"    # optional
##    mixer_control    "PCM"        # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
#    type        "shout"
#    encoding    "ogg"            # optional
#    name        "My Shout Stream"
#    host        "localhost"
#    port        "8000"
#    mount        "/mpd.ogg"
#    password    "hackme"
#    quality        "5.0"
#    bitrate        "128"
#    format        "44100:16:1"
##    protocol    "icecast2"        # optional
##    user        "source"        # optional
##    description    "My Stream Description"    # optional
##    genre        "jazz"            # optional
##    public        "no"            # optional
##    timeout        "2"            # optional
##    mixer_type      "software"        # optional
#}
#
# An example of a recorder output:
#
#audio_output {
#    type        "recorder"
#    name        "My recorder"
#    encoder        "vorbis"        # optional, vorbis or lame
#    path        "/var/lib/mpd/recorder/mpd.ogg"
##    quality        "5.0"            # do not define if bitrate is defined
#    bitrate        "128"            # do not define if quality is defined
#    format        "44100:16:1"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
#    type        "httpd"
#    name        "My HTTP Stream"
#    encoder        "vorbis"        # optional, vorbis or lame
#    port        "8000"
##    quality        "5.0"            # do not define if bitrate is defined
#    bitrate        "128"            # do not define if quality is defined
#    format        "44100:16:1"
#    max_clients    "0"            # optional 0=no limit
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
#audio_output {
#    type        "pulse"
#    name        "My Pulse Output"
##    server        "remote_server"        # optional
##    sink        "remote_server_sink"    # optional
#}
#
## Example "pipe" output:
#
#audio_output {
#    type        "pipe"
#    name        "my pipe"
#    command        "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
#    command        "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
#    command        "nc example.org 8765"
#    format        "44100:16:2"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
#    type        "null"
#    name        "My Null Output"
#    mixer_type      "none"            # optional
#}
#
# This setting will change all decoded audio to be converted to the specified
# format before being passed to the audio outputs. By default, this setting is
# disabled.
#
#audio_output_format        "44100:16:2"
#
# If MPD has been compiled with libsamplerate support, this setting specifies 
# the sample rate converter to use.  Possible values can be found in the 
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter        "Fastest Sinc Interpolator"
#
###############################################################################


# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "off", "album" or "track". See <http://www.replaygain.org>
# for more details. This setting is off by default.
#
#replaygain            "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp        "0"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has 
# equal "loudness". This setting is disabled by default.
#
#volume_normalization        "no"
#
###############################################################################


# MPD Internal Buffering ######################################################
#
# This setting adjusts the size of internal decoded audio buffering. Changing
# this may have undesired effects. Don't change this if you don't know what you
# are doing.
#
#audio_buffer_size        "2048"
#
# This setting controls the percentage of the buffer which is filled before 
# beginning to play. Increasing this reduces the chance of audio file skipping, 
# at the cost of increased time prior to audio playback.
#
#buffer_before_play        "10%"
#
###############################################################################


# Resource Limitations ########################################################
#
# These settings are various limitations to prevent MPD from using too many
# resources. Generally, these settings should be minimized to prevent security
# risks, depending on the operating resources.
#
#connection_timeout        "60"
#max_connections        "10"
#max_playlist_length        "16384"
#max_command_list_size        "2048"
#max_output_buffer_size        "8192"
#
###############################################################################


# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you 
# may need to modify this setting.
#
#filesystem_charset        "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
#id3v1_encoding            "ISO-8859-1"
#
###############################################################################


# SIDPlay decoder #############################################################
#
# songlength_database:
#  Location of your songlengths file, as distributed with the HVSC.
#  The sidplay plugin checks this for matching MD5 fingerprints.
#  See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq
#
# default_songlength:
#  This is the default playing time in seconds for songs not in the
#  songlength database, or in case you're not using a database.
#  A value of 0 means play indefinitely.
#
# filter:
#  Turns the SID filter emulation on or off.
#
#decoder {
#    plugin            "sidplay"
#    songlength_database    "/media/C64Music/DOCUMENTS/Songlengths.txt"
#    default_songlength    "120"
#    filter "true"
#}
#
###############################################################################

Whenever I run xbmc using the hdmi digital output it just plays mp3 and flac files without problems.

Anyone any clues on how to solve this issue?

TIA, dafart
Since

Last edited by dafart (2010-07-01 00:38:09)

Offline

#2 2010-06-28 00:05:09

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

It's possible that the FFmpeg upgrade broke MPD. On my system, MPD uses FFmpeg (from subversion) for everything except vorbis. I'd recommend grabbing the tarball for mpd-git from AUR, building, installing, then restarting MPD.

Offline

#3 2010-06-28 02:45:51

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

I'm bumping instead of editing because I'm seeing this too. I rebuilt MPD and it's still broken with mp3 files. Wow! There's a mystery.

--EDIT--

It's not FFmpeg directly. It may be an API mismatch between MPD and FFmpeg. I didn't notice a major version bump in FFmpeg.

Offline

#4 2010-06-28 05:47:31

dafart
Member
Registered: 2007-01-06
Posts: 21

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

thanks for your reply.
mpd-git gives me the same trouble, it looks like the files are playing but no sound for mp3 or flac files while .dts plays just fine.
I also tried rolling ffmpg back to a previous version.. but to no avail..
what exactly is the problem you are having with mp3's ?
Weird that no errors are being displayed.
xbmc-svn uses external ffmpeg as well without a problem..

tia, dafart

Last edited by dafart (2010-06-28 05:50:56)

Offline

#5 2010-06-28 20:06:02

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

I misunderstood your problem and I don't want to bother here with my problems. So, have you seen this:

http://mpd.wikia.com/wiki/Alsa

It addresses ALSA with digital out specifically.

Offline

#6 2010-06-28 22:59:33

dafart
Member
Registered: 2007-01-06
Posts: 21

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

Well sound works fine on my system, just not with mpd.
Could it be that .dts is being passed through directly to my receiver where mp3 and flac have to be decoded (most likely by ffmpeg) and that something goes whrong there.
I just don't know how to debug that.

Any help would be highly appreciated

Offline

#7 2010-06-28 23:06:29

hokasch
Member
Registered: 2007-09-23
Posts: 1,461

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

From your log, it seems there is a problem with mpd/alsa config:

Jun 28 00:54 : Failed to open mixer for 'My ALSA Device': no such mixer control: PCM

Have you tried setting another mixer_control in mpd.conf?

Offline

#8 2010-06-28 23:09:09

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

I don't know anything about dts, but I'm guessing yes: Whatever decoding backend that you're using is passing directly to the digital outs; The rest is going through the regular ALSA channels and failing because MPD on your system is not set up to use them. The "ALSA select digital audio out" section of the link that I posted above seems to cover this.

Offline

#9 2010-06-29 06:02:09

dafart
Member
Registered: 2007-01-06
Posts: 21

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Which correspondents fine with the

device        "hw:0,3"

in my mpd.conf alsa section.
Also sound worked fine withh this config before I started installing ffmpeg-svn and alikes

hokasch:
I tried changing the mixer to "Master" but that did not change much.

Offline

#10 2010-07-01 00:37:20

dafart
Member
Registered: 2007-01-06
Posts: 21

Re: [SOLVED] unable to play mp3 or flac files in mpd, .dts files play fine

Solved by creating an .asounrc file in the home directory a user, running mpd as this user and also changing the device to "hdmi" instead of hw0,3 makes everything work fine again.
Funny though that it worked perfectly fine before and that some fiddling with ffmpeg, x264 ea borked it..

pcm.hda-intel {
   type hw
   card 0
}
 
pcm.!default {
   type plug
   slave.pcm "hdmi"
   slave.rate 48000
}

ctl.hda-intel {
   type hw
   card 0
}

Offline

Board footer

Powered by FluxBB