Red Hat Bugzilla – Bug 665130
gstreamer applications cannot listen some .m4a (aac) files anymore
Last modified: 2011-06-03 17:30:32 EDT
Description of problem:
Message "This file is invalid and cannot be played." when I try to listen some .m4a files with gstreamer applications (totem, rhythmbox).
Version-Release number of selected component (if applicable):
This problem is only occurring with last version of gstreamer-plugins-good package.
I am not encountering this problem with previous version of gstreamer-plugins-good package (gstreamer-plugins-good-0.10.25-1.fc14.x86_64)
Try to listen some aac .m4a files.
Not all .m4a files are impacted.
I don't know if some .aac files could also be impacted.
When I replace "/usr/lib64/gstreamer-0.10/libgstqtdemux.so" library with the version found in gstreamer-plugins-good-0.10.25-1.fc14.x86_64.rpm package, the problem is solved
No problem to listen impacted .m4a files with vlc.
When I inspect impacted .m4a files with Nautilus, all fields, in Audio/Video tab, are filled out with "Unknown" or 0 or N/A.
32 bit edition (i686 harware) is also concerned about this problem
I do not have example of free impacted .m4a file for the moment. I will try to find one
Finally, here are debugging messages when totem is trying to open a file named "test.m4a" :
$ totem --gst-debug-level=1
** Message: pygobject_register_sinkfunc is deprecated (GstObject)
** (totem:2995): WARNING **: chapters: failed to load CMML file file:///tmp/test.cmml: Error opening file: No such file or directory
0:00:03.234853530 2995 0x1ac3240 ERROR totem bacon-video-widget-gst-0.10.c:411:bvw_error_msg: message = This file is invalid and cannot be played.
0:00:03.234910601 2995 0x1ac3240 ERROR totem bacon-video-widget-gst-0.10.c:413:bvw_error_msg: domain = 3344 (gst-stream-error-quark)
0:00:03.234944956 2995 0x1ac3240 ERROR totem bacon-video-widget-gst-0.10.c:414:bvw_error_msg: code = 9
0:00:03.234974252 2995 0x1ac3240 ERROR totem bacon-video-widget-gst-0.10.c:415:bvw_error_msg: debug = qtdemux.c(1852): gst_qtdemux_loop_state_header (): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstQTDemux:qtdemux0:
Header atom '
0:00:03.235013673 2995 0x1ac3240 ERROR totem bacon-video-widget-gst-0.10.c:416:bvw_error_msg: source = <qtdemux0>
0:00:03.235072170 2995 0x1ac3240 ERROR totem bacon-video-widget-gst-0.10.c:417:bvw_error_msg: uri = file:///tmp/test.m4a
** Message: Error: This file is invalid and cannot be played.
qtdemux.c(1852): gst_qtdemux_loop_state_header (): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstQTDemux:qtdemux0:
Header atom '
It seems to be a tag issue. With faad, I can see some strange characters in the tag fields of an impacted .m4a file.
Here is an example :
$ faad -i 02\ The\ Heart\ At\ Rest.m4a
*********** Ahead Software MPEG-4 AAC Decoder V2.7 ******************
Build: Mar 26 2009
Copyright 2002-2004: Ahead Software AG
Floating point version
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License.
02 The Heart At Rest.m4a file info:
LC AAC 238.422 secs, 2 ch, 44100 Hz
title: The Heart At Rest
artist: Robin Frederick
album_artist: Robin Frederick
album: How Far? How Fast?
unknown: ℗ 1992 Higher Octave Music, Inc.
unknown: 2007-08-06 21:07:36
After an opening and a saving with easytag, I can listen the file with a gstreamer appication, (for ex totem). But faad is freezing when I try to inspect the file again.
I guess the file is broken. Maybe it's possible to improve the handling of broken files in GStreamer, If you could make one of those files available - ideally by filing a bug in the GStreamer bugtracker - they could try to improve the situation.
I have not found a broken .m4a file without copyright yet, but I have succeeded to play my .m4a files with gstreamer like that :
gst-launch filesrc location="My broken file.m4a" ! ffdemux_mov_mp4_m4a_3gp_3g2_mj2 ! faad ! pulsesink
When I try to play my broken files with "qtdemux" instead of "ffdemux_mov_mp4_m4a_3gp_3g2_mj2", I meet the problem again.
It seems to me "qtdemux" plugin has replaced "ffdemux_mov_mp4_m4a_3gp_3g2_mj2" plugin. Could you confirm ?
The problem is solved with Fedora 15 :
$ gst-launch filesrc location="My broken file.m4a" ! qtdemux ! ffdec_aac ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 397054444 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
So, I think this report can be closed.