kid3 needs to be built against libmp4v2-devel (as found in the official fedora repo) for images to be correctly stored in mp4 audio files. Specifically -DWITH_MP4V2=ON has to be specified on the cmake command. (See spec file below) Without this, the images will be incorrectly insert in the files and do not display on digital media devices such as sony walkman devices. %global vendor sl Name: kid3 Version: 2.0.1 Release: 1.1.%{vendor}%{?dist} Summary: Efficient KDE ID3 tag editor License: GPLv2+ URL: http://kid3.sourceforge.net/ #http://downloads.sourceforge.net/kid3/ Source0: %{name}-%{version}.tar.gz BuildRequires: kdelibs4-devel BuildRequires: cmake BuildRequires: id3lib-devel BuildRequires: taglib-devel >= 1.4 BuildRequires: flac-devel BuildRequires: libtunepimp-devel BuildRequires: libvorbis-devel BuildRequires: libmp4v2-devel BuildRequires: gettext Requires: xdg-utils %description If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Speex, TrueAudio and WavPack files (e.g. full albums) without typing the same information again and again and have control over both ID3v1 and ID3v2 tags, then Kid3 is the program you are looking for. %package qt Summary: Efficient Qt ID3 tag editor Group: Applications/Multimedia Requires: xdg-utils %description qt If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Speex, TrueAudio and WavPack files (e.g. full albums) without typing the same information again and again and have control over both ID3v1 and ID3v2 tags, then Kid3 is the program you are looking for. The %{name}-qt package provides Kid3 built without KDE dependencies. %prep %setup -q %build mkdir _kid3 ; cd _kid3 %cmake_kde4 -DWITH_MP4V2=ON -DBUILD_SHARED_LIBS:BOOL=OFF .. make %{?_smp_mflags} cd .. mkdir _kid3-qt ; cd _kid3-qt %cmake -DWITH_MP4V2=ON -DBUILD_SHARED_LIBS:BOOL=OFF -DWITH_KDE=OFF \ -DWITH_DOCDIR=share/doc/%{name}-qt-%{version} .. make %{?_smp_mflags} cd .. %install make -C _kid3 install DESTDIR=%{buildroot} make -C _kid3-qt install DESTDIR=%{buildroot} install -dm 755 %{buildroot}%{_mandir}/man1 install -pm 644 deb/kid3{,-qt}.1 %{buildroot}%{_mandir}/man1/ # preserve desktop entry location for upgrades mv %{buildroot}%{_datadir}/applications/{kde*/kid3,fedora-kid3}.desktop rmdir %{buildroot}%{_datadir}/applications/kde* desktop-file-install \ --delete-original \ --vendor %{vendor} \ --dir %{buildroot}%{_datadir}/applications \ %{buildroot}%{_datadir}/applications/fedora-kid3.desktop %find_lang %{name} --with-kde --with-qt grep -vF kid3-qt %{name}.lang > %{name}-kde.lang grep -F kid3-qt %{name}.lang > %{name}-qt.lang install -pm 644 AUTHORS ChangeLog COPYING LICENSE README \ %{buildroot}%{_docdir}/%{name}-qt-%{version} %post -p <lua> posix.utime("%{_datadir}/icons/hicolor") %post qt -p <lua> posix.utime("%{_datadir}/icons/hicolor") %postun if [ $1 -eq 0 ] ; then update-desktop-database %{_datadir}/applications &>/dev/null touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi %postun qt if [ $1 -eq 0 ] ; then update-desktop-database %{_datadir}/applications &>/dev/null touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi %posttrans update-desktop-database %{_datadir}/applications &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %posttrans qt update-desktop-database %{_datadir}/applications &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %files -f %{name}-kde.lang %doc AUTHORS ChangeLog COPYING LICENSE README %{_bindir}/kid3 %{_datadir}/applications/*kid3.desktop %{_datadir}/icons/hicolor/*x*/apps/kid3.png %{_datadir}/icons/hicolor/scalable/apps/kid3.svgz %{_datadir}/dbus-1/interfaces/*.xml %{_kde4_appsdir}/kid3/ %{_mandir}/man1/kid3.1* %files qt -f %{name}-qt.lang %doc %{_docdir}/%{name}-qt-%{version}/ %{_bindir}/kid3-qt %{_datadir}/applications/*kid3-qt.desktop %{_datadir}/icons/hicolor/*x*/apps/kid3-qt.png %{_datadir}/icons/hicolor/scalable/apps/kid3-qt.svgz %{_datadir}/dbus-1/interfaces/*.xml %dir %{_datadir}/kid3-qt/ %dir %{_datadir}/kid3-qt/translations/ %{_mandir}/man1/kid3-qt.1* %changelog * Sun Apr 15 2012 Simon Lewis <simon.lewis> - 2.0.1-1.0.sl - Update to 2.0.1
kid3 can tag mp4 files through taglib. I just grabbed a random mp4 file, tagged it with a random image and some other data, and that data shows just fine in rhythmbox. If there's something wrong with how taglib does the tagging, I suggest filing a bug against taglib, or if kid3 uses taglib incorrectly, filing an upstream kid3 bugs with more information.
Yes, I made the same experience. With the default kid3 package I can embed the cover image in the mp4 files and see the embedded image on the computer. But when the file is transferred to a mp4 player, e.g. sony walkman, the image is not shown in the album menu or track view. When kid3 is built with -DWITH_MP4V2=ON this is not a problem... libtag has only basic functionality for mp4 tagging and this will not change in the near future - so I ask once again for the benefit of all fedora users to build against libmp4v2-devel (as found in the official fedora repo) Simon
I tested building with libmp4v2, and it made things much worse than they're now. The only case where it made no difference was my Nokia E71 which for some reason failed to display cover art no matter whether a m4a file was tagged with taglib or libmp4v2 enabled kid3. But cover art for files tagged with libmp4v2 enabled kid3 would no longer show in nautilus nor totem - in fact the only thing they did display any more was the same kid3 they were tagged with. So as it stands right now, I'm not going to build kid3 with libmp4v2. Maybe when libmp4v2 gets an upgrade to 2.0.0+ (bug 620531) it's time to see if anything's changed.