GNOME Bugzilla – Bug 710928
MPEG Audio Version tagged as 2.5 has distorted audio output
Last modified: 2013-10-30 19:50:55 UTC
I have experienced audio distortion on playback with files downloaded from blogtalk radio. Audio plays back fine with Audacity. However, under GNOME, using gstreamer, the audio is distorted on playback. There is audible distortion on playback which is very distracting. I can use ffmpeg and move to another audio format and all is okay. I think its due to the MPEG Audio Version. ExifTool Version Number : 9.27 File Name : show_5539311.mp3 Directory : . File Size : 41 MB File Modification Date/Time : 2013:10:25 22:08:07-05:00 File Access Date/Time : 2013:10:26 10:11:47-05:00 File Inode Change Date/Time : 2013:10:26 10:11:47-05:00 File Permissions : rw-rw-r-- File Type : MP3 MIME Type : audio/mpeg MPEG Audio Version : 2.5 Audio Layer : 3 Audio Bitrate : 32 kbps Sample Rate : 8000 Channel Mode : Single Channel MS Stereo : Off Intensity Stereo : Off Copyright Flag : False Original Media : True Emphasis : None ID3 Size : 128 Title : Nathan Leal on The Hagmann ' H Artist : Hagmann and Hagmann Report Album : BlogTalkRadio.com Year : 2013 Comment : The Hagmann 'amp; Hagma Genre : None Date/Time Original : 2013 Duration : 3:00:09 (approx)
Can attach a short sample? Or add a public URL of one?
http://www.blogtalkradio.com/cfp-radio/2013/10/26/the-hagmann-hagmann-report.mp3
Works just fine here with 1.2.0. Which MP3 plugin are you using? If in doubt, what's the output of gst-launch-1.0 -v playbin uri=file:///path/to/the-hagmann-hagmann-report.mp3
It plays for me too but there is audio distortion in the background. The only way to describe it would be a background sound of someone changing the channels on a radio. If I convert this to ogg this distortion is not present. gst-launch-1.0 -v playbin uri=http://www.blogtalkradio.com/cfp-radio/2013/10/26/the-hagmann-hagmann-report.mp3 Setting pipeline to PAUSED ... /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: ring-buffer-max-size = 0 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-size = -1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: buffer-duration = -1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: use-buffering = false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: download = false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: uri = http://www.blogtalkradio.com/cfp-radio/2013/10/26/the-hagmann-hagmann-report.mp3 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: connection-speed = 0 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: source = "\(GstSoupHTTPSrc\)\ source" Pipeline is PREROLLING ... /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstTypeFindElement:typefindelement0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind: force-caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0: sink-caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMpegAudioParse:mpegaudioparse0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstMpegAudioParse:mpegaudioparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)3, layer=(int)3, rate=(int)8000, channels=(int)1, parsed=(boolean)true /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstFluMp3Dec:flump3dec0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)3, layer=(int)3, rate=(int)8000, channels=(int)1, parsed=(boolean)true /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstFluMp3Dec:flump3dec0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstInputSelector:inputselector0.GstSelectorPad:sink_0: always-ok = false /GstPlayBin:playbin0/GstInputSelector:inputselector0.GstSelectorPad:sink_0: active = true /GstPlayBin:playbin0/GstInputSelector:inputselector0: active-pad = "\(GstSelectorPad\)\ sink_0" /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0.GstGhostPad:src_0: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstInputSelector:inputselector0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink.GstGhostPad:audio_sink.GstProxyPad:proxypad3: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstTee:audiotee.GstTeePad:src_0: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstStreamSynchronizer:streamsynchronizer0.GstPad:src_0: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin.GstGhostPad:sink.GstProxyPad:proxypad6: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstQueue:aqueue.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstQueue:aqueue.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin.GstGhostPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstStreamSynchronizer:streamsynchronizer0.GstPad:sink_0: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstTee:audiotee.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink.GstGhostPad:audio_sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstInputSelector:inputselector0.GstSelectorPad:sink_0: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0.GstGhostPad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:sink.GstProxyPad:proxypad4: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstQueue2:queue2-0: max-size-bytes = 8000 /GstPlayBin:playbin0/GstInputSelector:inputselector0.GstSelectorPad:sink_0: tags = "taglist\,\ audio-codec\=\(string\)\"MPEG\\\ 3\\\ Audio\\\,\\\ Layer\\\ 3\\\ \\\(MP3\\\)\"\,\ nominal-bitrate\=\(uint\)32000\,\ has-crc\=\(boolean\)false\,\ channel-mode\=\(string\)mono\;" /GstPlayBin:playbin0/GstInputSelector:inputselector0.GstSelectorPad:sink_0: tags = "taglist\,\ audio-codec\=\(string\)\"MPEG\\\ 3\\\ Audio\\\,\\\ Layer\\\ 3\\\ \\\(MP3\\\)\"\,\ nominal-bitrate\=\(uint\)32000\,\ has-crc\=\(boolean\)false\,\ channel-mode\=\(string\)mono\,\ minimum-bitrate\=\(uint\)32000\,\ bitrate\=\(uint\)32000\,\ maximum-bitrate\=\(uint\)32000\;" /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioConvert:conv.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioResample:resample.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:src.GstProxyPad:proxypad5: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioResample:resample.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv/GstAudioConvert:conv.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPlaySinkAudioConvert:aconv.GstGhostPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock /GstPlayBin:playbin0/GstPlaySink:playsink: volume = 0.21597363388536905 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0: volume = 0.21597363388536905 /GstPlayBin:playbin0/GstPlaySink:playsink: mute = false /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0: mute = false /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0: current-device = alsa_output.pci-0000_00_1b.0.analog-stereo /GstPlayBin:playbin0/GstPlaySink:playsink: volume = 0.21597363388536905 /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0: volume = 0.21597363388536905 /GstPlayBin:playbin0/GstPlaySink:playsink: mute = false /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0: mute = false /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:abin/GstPulseSink:pulsesink0: current-device = alsa_output.pci-0000_00_1b.0.analog-stereo ^Chandling interrupt. Interrupt: Stopping pipeline ... Execution ended after 0:00:56.185634280 Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ...
You're using the Fluendo MP3 decoder. Please report this bug to Fluendo, or reopen this bug report if you can reproduce it with another MP3 decoder (e.g. mad or mpg123audiodec or avdec_mp3). Here it works fine with those.