MusicPlayerDaemon / MPD

Music Player Daemon
https://www.musicpd.org/
GNU General Public License v2.0
2.19k stars 350 forks source link

Ogg flac playback too fast when encoding to Icecast2 server. #1701

Closed DroidU closed 1 year ago

DroidU commented 1 year ago

Bug report

Describe the bug

Ogg flac playback too fast when encoding to Icecast2 server.

Expected Behavior

Like ogg/vorbis or mp3, it should stream to the Icecast2 server at real playback speed.

Actual Behavior

Ogg flac playback is too fast when encoding to the Icecast2 server, as a result of which the log file contains "notification: Speex header too small" error messages.

Version

Music Player Daemon 0.23.11 (0.23.11) Copyright 2003-2007 Warren Dukes warren.dukes@gmail.com Copyright 2008-2021 Max Kellermann max.kellermann@gmail.com This is free software; see the source for copying conditions. There is NO warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins: simple proxy

Storage plugins: local

Decoders plugins: [mad] mp3 mp2 [vorbis] ogg oga [oggflac] ogg oga [flac] flac [opus] opus ogg oga [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2 [faad] aac [wavpack] wv [openmpt] mptm mod s3m xm it 669 amf ams c67 dbm digi dmf dsm dtm far imf ice j2b m15 mdl med mms mt2 mtm nst okt plm psm pt36 ptm sfx sfx2 st26 stk stm stp ult wow gdm mo3 oxm umx xpk ppm mmcmp [pcm]

Filters: libsamplerate

Tag plugins: id3tag

Output plugins: shout null

Encoder plugins: null vorbis opus lame twolame flac

Input plugins: file curl

Playlist plugins: extm3u m3u pls flac

Protocols: file:// ftp:// ftps:// gopher:// http:// https:// rtmp:// scp:// sftp:// smb://

Other features: epoll inotify ipv6 tcp un

Configuration

zeroconf_enabled "no" music_directory "/mscp/users/testuser/media" playlist_directory "/mscp/users/testuser/media" db_file "/mscp/users/testuser/autodj/1/tag_cache" log_file "/mscp/users/testuser/autodj/1/mpd.log" pid_file "/mscp/users/testuser/autodj/1/mpd.pid" bind_to_address "127.0.0.1" port "62503" log_level "default" audio_buffer_size "16384" input { plugin "curl" } audio_output { type "shout" protocol "icecast2" host "127.0.0.1" port "3000" mount "/live.ogg" user "source" password "testpass" encoding "flac" quality "10" compression "8" oggflac "yes" oggchaining "yes" format "44100:16:2" name "" description "" genre "" url "" public "0" mixer_type "software" } audio_output_format "44100:16:2" filesystem_charset "UTF-8"

Log

config_file: loading file /mscp/userstatus/testuser/autodj/mpd-1.conf Dec 25 12:52 : libsamplerate: libsamplerate converter 'Fastest Sinc Interpolator' Dec 25 12:52 : vorbis: Xiph.Org libVorbis 1.3.7 Dec 25 12:52 : opus: libopus 1.3.1 Dec 25 12:52 : sndfile: libsndfile-1.0.31 Dec 25 12:52 : exception: Failed to open '/mscp/users/testuser/autodj/1/tag_cache': No such file or directory Dec 25 12:52 : curl: version 7.74.0 Dec 25 12:52 : curl: with OpenSSL/1.1.1n Dec 25 12:52 : update: spawned thread for update job id 1 Dec 25 12:52 : update: starting Dec 25 12:52 : event: RTIOThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted Dec 25 12:52 : update: reading /A-Mase - I Miss You.mp3 Dec 25 12:52 : update: added /A-Mase - I Miss You.mp3 Dec 25 12:52 : update: reading /Royal Music Paris - Disco Life.mp3 Dec 25 12:52 : update: added /Royal Music Paris - Disco Life.mp3 Dec 25 12:52 : update: reading /Royal Music Paris - Disco Life (Club Mix).mp3 Dec 25 12:52 : update: added /Royal Music Paris - Disco Life (Club Mix).mp3 Dec 25 12:52 : update: reading /Stashion, Flanga - Vibe Check (Extended Mix).mp3 Dec 25 12:52 : update: added /Stashion, Flanga - Vibe Check (Extended Mix).mp3 Dec 25 12:52 : update: reading /20. Jes - Tight Wires (Original Mix).mp3 Dec 25 12:52 : update: added /20. Jes - Tight Wires (Original Mix).mp3 Dec 25 12:52 : update: reading /Stashion, Flanga - Vibe Check (Radio Edit).mp3 Dec 25 12:52 : update: added /Stashion, Flanga - Vibe Check (Radio Edit).mp3 Dec 25 12:52 : update: reading /03-proff-breathedave_storm_remix.mp3 Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97 ") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: LAME track gain found: -6.2000003 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1848 Dec 25 12:52 : update: added /03-proff-breathedave_stormremix.mp3 Dec 25 12:52 : update: reading rovidek/acid chillout.mp3 Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97b") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 2039 Dec 25 12:52 : update: added rovidek/acid chillout.mp3 Dec 25 12:52 : update: reading rovidek/twinkletest2.mp3 Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97b") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1152 Dec 25 12:52 : update: added rovidek/twinkletest2.mp3 Dec 25 12:52 : update: reading rovidek/HappyEnd.mp3 Dec 25 12:52 : mad: detected LAME version 3.96 ("LAME3.96 ") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: LAME track gain found: -8.2 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1472 Dec 25 12:52 : update: added rovidek/HappyEnd.mp3 Dec 25 12:52 : update: reading rovidek/Traymuss-odysea15s.mp3 Dec 25 12:52 : update: added rovidek/Traymuss-_odysea15s.mp3 Dec 25 12:52 : update: reading rovidek/funkyyyy.mp3 Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97b") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1152 Dec 25 12:52 : update: added rovidek/funkyyyy.mp3 Dec 25 12:52 : update: reading rovidek/twinkletest.mp3 Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97b") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1152 Dec 25 12:52 : update: added rovidek/twinkletest.mp3 Dec 25 12:52 : update: reading rovidek/bahhh.mp3 Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97b") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1476 Dec 25 12:52 : update: added rovidek/bahhh.mp3 Dec 25 12:52 : simple_db: removing empty directories from DB Dec 25 12:52 : simple_db: sorting DB Dec 25 12:52 : simple_db: writing DB Dec 25 12:52 : update: finished Dec 25 12:52 : client: [0] opened from 127.0.0.1:40362 Dec 25 12:52 : client: [1] opened from 127.0.0.1:40378 Dec 25 12:52 : client: [1] process command "clear" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "load ".playlist-1"" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "crossfade 5" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "mixrampdelay 1" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "mixrampdb -12" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "repeat 1" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "random 1" Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "play" Dec 25 12:52 : playlist: play 0:"20. Jes - Tight Wires (Original Mix).mp3" Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : client: [1] command returned 0 Dec 25 12:52 : client: [1] process command "close" Dec 25 12:52 : client: [1] command returned 4 Dec 25 12:52 : client: [1] closed Dec 25 12:52 : playlist: queue song 1:"A-Mase - I Miss You.mp3" Dec 25 12:52 : client: [2] opened from 127.0.0.1:40392 Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : client: [2] process command "playlist" Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : client: [2] command returned 0 Dec 25 12:52 : client: [2] process command "close" Dec 25 12:52 : client: [2] command returned 4 Dec 25 12:52 : client: [2] closed Dec 25 12:52 : output: OutputThread could not get realtime scheduling, continuing anyway: sched_setscheduler failed: Operation not permitted Dec 25 12:52 : client: [3] opened from 127.0.0.1:40394 Dec 25 12:52 : client: [3] process command "status" notification: Speex header too small Dec 25 12:52 : output: opened "" (shout) audio_format=44100:16:2 Dec 25 12:52 : output: converting in=44100:16:2 -> f=44100:24:2 -> out=44100:16:2 Dec 25 12:52 : client: [3] command returned 0 Dec 25 12:52 : client: [3] process command "close" Dec 25 12:52 : client: [3] command returned 4 Dec 25 12:52 : client: [3] closed notification: Speex header too small Dec 25 12:52 : client: [0] closed Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 notification: Speex header too small Dec 25 12:52 : player: played "20. Jes - Tight Wires (Original Mix).mp3" Dec 25 12:52 : playlist: queue song 2:"Stashion, Flanga - Vibe Check (Radio Edit).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "A-Mase - I Miss You.mp3" Dec 25 12:52 : playlist: queue song 3:"Royal Music Paris - Disco Life (Club Mix).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Stashion, Flanga - Vibe Check (Radio Edit).mp3" Dec 25 12:52 : playlist: queue song 4:"Royal Music Paris - Disco Life.mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Royal Music Paris - Disco Life (Club Mix).mp3" Dec 25 12:52 : playlist: queue song 5:"Stashion, Flanga - Vibe Check (Extended Mix).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Royal Music Paris - Disco Life.mp3" Dec 25 12:52 : playlist: queue song 6:"03-proff-breathedave_storm_remix.mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97 ") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: LAME track gain found: -6.2000003 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1848 Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Stashion, Flanga - Vibe Check (Extended Mix).mp3" Dec 25 12:52 : playlist: queue song 0:"Stashion, Flanga - Vibe Check (Radio Edit).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "03-proff-breathedave_storm_remix.mp3" Dec 25 12:52 : playlist: queue song 1:"Stashion, Flanga - Vibe Check (Extended Mix).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Stashion, Flanga - Vibe Check (Radio Edit).mp3" Dec 25 12:52 : playlist: queue song 2:"A-Mase - I Miss You.mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Stashion, Flanga - Vibe Check (Extended Mix).mp3" Dec 25 12:52 : playlist: queue song 3:"03-proff-breathedave_storm_remix.mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : mad: detected LAME version 3.97 ("LAME3.97 ") Dec 25 12:52 : mad: LAME peak found: 0 Dec 25 12:52 : mad: LAME track gain found: -6.2000003 Dec 25 12:52 : mad: encoder delay is 576, encoder padding is 1848 Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "A-Mase - I Miss You.mp3" Dec 25 12:52 : playlist: queue song 4:"Royal Music Paris - Disco Life.mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "03-proff-breathedave_storm_remix.mp3" Dec 25 12:52 : playlist: queue song 5:"20. Jes - Tight Wires (Original Mix).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 Dec 25 12:52 : player: played "Royal Music Paris - Disco Life.mp3" Dec 25 12:52 : playlist: queue song 6:"Royal Music Paris - Disco Life (Club Mix).mp3" notification: Speex header too small Dec 25 12:52 : decoder_thread: probing plugin mad Dec 25 12:52 : decoder: audio_format=44100:24:2, seekable=true Dec 25 12:52 : decoder: converting to 44100:16:2 notification: Speex header too small Dec 25 12:52 : player: played "20. Jes - Tight Wires (Original Mix).mp3" Dec 25 12:52 : playlist: queue song 0:"A-Mase - I Miss You.mp3" notification: Speex header too small

MaxKellermann commented 1 year ago

What makes you believe this is a problem with MPD and not with Icecast? The playback speed is not managed by MPD, but by Icecast. MPD sends audio as fast as possible, and it's up to Icecast (or libshout) to throttle for real-time playback.

DroidU commented 1 year ago

The playback speed is not managed by Icecast2 because it cannot. Liquidsoap and RadioBOSS stream well to the same Icecast2 server. In the case of FFmpeg, the -re option must be specified in order for the stream to be good.

MaxKellermann commented 1 year ago

I insist that this is not a MPD problem. See https://github.com/xiph/Icecast-libshout/blob/master/src/format_ogg.c#L172 for the proof.