-
Notifications
You must be signed in to change notification settings - Fork 346
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MPD does not play concatenated mp3 files #1200
Comments
I have tested locally with Lastly, I am not sure if the MP3 file combined using |
I've attached 3 mp3 files: Also attached is the output of mpd --version > mpd-version.txt. The attached test-2-songs.mp3 only played the first song in cantata and cycled back to that one when playing test-2-songs.mp3 in repeat mode. Here is the only log output I saw (from the cantata player using mpd):
I believe this is valid and it works without issue for non-mpd players like vlc, as well as every player I have on my Android phone, including merged classical operas with dozens of individual movements. It would not be correct to require a more complex method of joining mp3 just to use mpd; a quick google search shows concatenation is used in both Linux and Windows to merge mp3 files into one large one. |
I could reproduce using a concatenated MP3 from the files provided by @em2jacks. madUsing Log
mpg123Using Log
ffmpegUsing Log
This is just one test case, but it looks like the ability to play MP3 files combined using
|
I ran it with just mad disabled and cantata played both songs, where before it stopped at the first one. Thank you! This was an important issue for playing classical music with mpd. |
The file uploaded by @em2jacks contains a Xing header specifying the total song length and an encoder delay+padding. Delay means ignore this number of frames at the beginning of the file, padding means ignore this number of frames at the end of the file. MPD's "mad" decoder plugin does just that - if the given end position minus the padding is reached, it stops decoding the song. I think MPD's behavior in the presence of a Xing header is correct, and the test file is broken. On the other hand, decoding past the end of the declared song length sounds like a bug - not one that really needs to be fixed, but it's not correct behavior. The fact that some plugins/libraries/programs do play concatenated mp3 files doesn't prove that concatenated mp3 files are valid. It only demonstrates that some software apparently ignores the header settings. Of course, we could hack MPD to scan the whole file for additional headers to support concatenation, but you can imagine that this would add considerable overhead, and since those files are broken, I don't think that's worth anybody's time. Let's not.
Maybe MPD instead needs a feature "random/shuffle mode = any/album" - where consecutive songs belonging to an album remain together. (That, of course, needs a definition of what an "album" is.) |
I hope any remaining discussion of this issue will focus squarely on what is practical, easy to use and provides a valuable feature not easily available otherwise.
Playing concatenated mp3 files meets the last 3 criteria brilliantly.
> I think MPD's behavior in the presence of a Xing header is correct, and the test file is broken.
I think the test file of concatenated mp3 is a common, easy to create, extremely useful example and any decoder that plays it to the end has great applicability.
The fact that some plugins/libraries/programs do play concatenated mp3 files doesn't prove that concatenated mp3 files are valid.
programs that play concatenated mp3, not only decoders like ffmpeg and mpg123 but also music players on Android, allow much greater flexibility and prove that concatenated mp3 files are very useful.
Maybe MPD instead needs a feature "random/shuffle mode = any/album" - where consecutive songs belonging to an album remain together.
So it would be impossible with this feature to create a single album with all 5 of Beethoven's Piano Concertos, each concerto played in correct order but the next concerto chosen at random.
No doubt other bells, whistles, pulleys and levers can be added to this proposed MPD feature to make the above case work, but concatenated mp3 + decoders that work with them are a much simpler solution (and one that is indeed proven to work even as I type this).
thanks,--jack
On Thursday, August 5, 2021, 7:41:24 AM EDT, Max Kellermann ***@***.***> wrote:
The file uploaded by @em2jacks contains a Xing header specifying the total song length and an encoder delay+padding. Delay means ignore this number of frames at the beginning of the file, padding means ignore this number of frames at the end of the file. MPD's "mad" decoder plugin does just that - if the given end position minus the padding is reached, it stops decoding the song.
I think MPD's behavior in the presence of a Xing header is correct, and the test file is broken. On the other hand, decoding past the end of the declared song length sounds like a bug - not one that really needs to be fixed, but it's not correct behavior.
The fact that some plugins/libraries/programs do play concatenated mp3 files doesn't prove that concatenated mp3 files are valid. It only demonstrates that some software apparently ignores the header settings.
Of course, we could hack MPD to scan the whole file for additional headers to support concatenation, but you can imagine that this would add considerable overhead, and since those files are broken, I don't think that's worth anybody's time. Let's not.
Each symphony will then be played completely but the next symphony to play can be a shuffle choice (but without shuffling the individual movements within each symphony).
Maybe MPD instead needs a feature "random/shuffle mode = any/album" - where consecutive songs belonging to an album remain together. (That, of course, needs a definition of what an "album" is.)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
|
I'm forwarding a bug reported on bugs.debian.org/990160.
Bug report
I've noticed that music players that use mpd,like cantata, do not play
concatenated mp3 files to the end but stop after the first part of the
concatenated file.
For example: cat mvmt1.mp3 mvmt2.mp3 mvmt3.mp3 > symph1.mp3
will play only mvmt1.mp3 on an mpd-based player when symph1.mp3 is
played.
This does NOT happen on music players that do not use mpd, like vlc or
elisa (or any android music player).
The only work-around is to use a non-mpd player for this.
Concatenated mp3 files are useful when one wants to create a single mp3 for
a classical piece composed of many movements, as above, and create a
playlist of several of these. Each symphony will then be played
completely but the next symphony to play can be a shuffle choice (but
without shuffling the individual movements within each symphony).
Version
Debian package from bullseye 0.22.6-1+b1
Log
No log provided
The text was updated successfully, but these errors were encountered: