PDA

View Full Version : M4a (sorry)



Atlantic
2012-05-06, 07:40
First: apologies. There have been countless posts dealing with m4a issues, but the forum search isn't recognising 'm4a' (or mp4).

Does anyone still have a link to a (the?) thread describing how to play m4a files?

Received an m4a file from a performer's website sign-up, and SBS recognises it as an m4a file, recognises performer name, song title, picture, and the lyrics (which surprised me) and reports the file as being:

File format: mp4

Bitrate: 256kbps CBR (Converted to 705.6kbps ABR)

Sample size: 16 bit

But my SBR plays no sound - though its LED is showing bright white (it is receiving) and the SBS web UI shows the track being played - ie, the time-bar moves onwards.

In SBS, the file type settings for MP4 are:

AAC - Native
FLAC - faad/flac
MP3 - faad/lame
PCM - faad

Neither, incidentally, does Squeezeplay play the track, on a (wired) windows PC.

I think I recall seeing something about inserting a transcode in a convert.conf file in previous threads. Could anyone point me to a relevant thread or, maybe, some instructions?

And sorry for asking about something which I think is already solved, if I could only find it.

regards, Atlantic

bpa
2012-05-06, 09:30
LMS supports m4a properly - there is no need to add or change any of the conf file.

Is the file a pure audio file or does it have some video embedded ?
Can you play this file on other PC based players ?

What version of LMS ?

Atlantic
2012-05-06, 11:21
bpa, thanks.


LMS supports m4a properly - there is no need to add or change any of the conf file.


I think I'd read that in one of the threads.


Is the file a pure audio file or does it have some video embedded ?
Can you play this file on other PC based players ?


Not sure about video; VLC plays it with sound only. (Would VLC show video?)



What version of LMS ?

SBS 7.4

One of the previous threads (had) suggested - if I recall correctly - that M4a is served to the player losslessly and that, if PCM was used, a wireless-connected player might struggle. But since the file doesn't play through Squeezeplay, either, on a wired PC, I think I've a more-serious problem.

I'm happy to try to transcode it to, say, Mp3/320. I think I'll search for transcoding and see how to do that.

Atlantic

garym
2012-05-06, 12:11
bpa, thanks.



I think I'd read that in one of the threads.



Not sure about video; VLC plays it with sound only. (Would VLC show video?)



SBS 7.4

One of the previous threads (had) suggested - if I recall correctly - that M4a is served to the player losslessly and that, if PCM was used, a wireless-connected player might struggle. But since the file doesn't play through Squeezeplay, either, on a wired PC, I think I've a more-serious problem.

I'm happy to try to transcode it to, say, Mp3/320. I think I'll search for transcoding and see how to do that.

Atlantic

What computer or nas are you running LMS on. Any reason you haven't updated to 7.7.2?

bpa
2012-05-06, 12:16
There have been a number of m4a related fixes since 7.4 - I'd advise first update to 7.7.2

Atlantic
2012-05-06, 14:50
There have been a number of m4a related fixes since 7.4

bpa, that is a quite-compelling reason to upgrade.

Hadn't done so, Gary, because (i) the system just runs very well, and (ii) upgrades are a little disruptive with plug-ins - some of the extras we use have quite different versions for the later releases. Apart from, as well, the time it takes, and not being entirely sure whether you had to remove the old, etc, so researching the steps, safeguarding a fallback strategy; upgrading is a 'project' in itself, really, in the context that the existing installation is working so well and giving the family good service. I just trust it.

But I can see that upgrading may be necessary, especially if sampler and publicity material is going to be released in the future in m4a files. I'm going to dig around for a transcode solution, though - I'd like to know how to do that, anyway. Thinking about it, I could probably do a conversion offline (it's the only m4a file I have) with any of several utilities already on the box, even if I cannot persuade my SBS to do it 'on the fly'.

regards, Atlantic

garym
2012-05-06, 15:24
Makes sense (not upgrading). I have a number of m4a files and they all play fine with no special settings. But in the distant past I had some issues with a ready nas duo. That's why I asked if you were using a nas or low powered computer. if so, that could be the issue.

bpa
2012-05-07, 00:11
One of the previous threads (had) suggested - if I recall correctly - that M4a is served to the player losslessly and that, if PCM was used, a wireless-connected player might struggle. But since the file doesn't play through Squeezeplay, either, on a wired PC, I think I've a more-serious problem.

Since you are using an SBR (Reciver not Radio), it cannot play AAC/MP4/M4A natively and so LMS uses faad/flac to transcode m4a (actually AAC as m4a is the file not audio format) into a Flac stream (i.e lossless) and the lossless Flac is sent to SBR . Squeezeplay is similar and so you have the same problem with both players - faad cannot decode the file. If you can replace your faad with the version from 7.7.2 , it might fix the problem but I have a nagging feeling that there is still a group of m4a file which cannot be players because of the m4a file structures (e.g. indexes are at the end of the file)



I'm happy to try to transcode it to, say, Mp3/320. I think I'll search for transcoding and see how to do that.
You'd better to tranmscode to Flac - trhat way you won't be losing any qualoity - VLC should be able to do this.

edit:

You can get the faad for 7.7.2 from here http://svn.slimdevices.com/slim/7.7/trunk/server/Bin/MSWin32-x86-multi-thread/ . You mayalso need to copy the cgwin DLLs as well - at some point between 7.3 and 7.6 the faad build changed and they became required.

Atlantic
2012-05-07, 02:09
Since you are using an SBR (Reciver not Radio), it cannot play AAC/MP4/M4A natively and so LMS uses faad/flac to transcode m4a (actually AAC as m4a is the file not audio format) into a Flac stream (i.e lossless) and the lossless Flac is sent to SBR . Squeezeplay is similar and so you have the same problem with both players - faad cannot decode the file. If you can replace your faad with the version from 7.7.2 , it might fix the problem but I have a nagging feeling that there is still a group of m4a file which cannot be players because of the m4a file structures (e.g. indexes are at the end of the file)


You'd better to tranmscode to Flac - trhat way you won't be losing any qualoity - VLC should be able to do this.

edit:

You can get the faad for 7.7.2 from here http://svn.slimdevices.com/slim/7.7/trunk/server/Bin/MSWin32-x86-multi-thread/ . You mayalso need to copy the cgwin DLLs as well - at some point between 7.3 and 7.6 the faad build changed and they became required.

bpa, this was the info I needed.

First, I did an external search for mp4 faad and found these SQ threads - listing them here may help others:

http://forums.slimdevices.com/archive/index.php/t-77834.html

http://www.readynas.com/forum/viewtopic.php?f=22&t=26302 [discussing 7.3 & 7.4]

http://forums.slimdevices.com/showthread.php?82324-Playing-m4a-(AAC)-with-Squeezebox-Server [discussing 7.5]

and also found the wiki entry:

http://wiki.slimdevices.com/index.php/AAC [but only refers to transcoding mov files]

Thanks for the link to the 7.7.2 faad system. I'm running linux but I'll look through the same tree and see what I can find.

In the meantime, I'll try some transcoding on the fly. The strongest advice in those threads seemed to be:



I was able to get AAC/M4A/MP4 file playback working perfectly with the latest nightly build of 7.4.1 by adding the following to my /etc/squeezeboxserver/conver.conf file :

Code: Select all
#---------
mov pcm * *
# F
[mp42aac] $FILE$ -stdout | [aac2wav] -stdin -stdout

mp4 pcm * *
# F
[mp42aac] $FILE$ -stdout | [aac2wav] -stdin -stdout
#-------



And removing (commenting out) this section:

Code: Select all
mp4 pcm * *
# F
[faad] -q -w -f 2 -b 1 -s 44100 $FILE$


This will transcode to wav. I'd prefer to transcode to flac on the fly. I wonder if there's an 'aac2flc' command? (I'll search.)

bpa, thanks for the post, which really helped me dig out some of the historical background, as well as informing about some of the (possibly) remaining issues. I'll try some of this later during the day.

regards, Atlantic

Atlantic
2012-05-07, 07:48
Hmm ... . No luck. Retrieved faad (Jul 2011) from here:

http://svn.slimdevices.com/slim/7.7/trunk/server/Bin/i386-linux/faad?view=log

replaced version that had been located in

/usr/share/squeezeboxserver/Bin/i386-linux

and restarted the machine that SBS runs on.

Still the same problem. Not quite sure why that wouldn't have worked.

Also tried with aac 'disabled' instead of 'native', but no joy.

I'll either have to upgrade, or convert this file externally. But I am a little surprised that this fix did not work.

regards, Atlantic

bpa
2012-05-07, 08:13
One possibility, in the updated faad there are new command line options which many not be invoked by the 7.4 LMS.

First I suggest to check that the faad can decode your file - use faad from a shell prompt to create WAV file. Assuming there are no error messages, then see can you play the generate Wqav file with VLC.
If it the file is decoded properly then faad is OK using file. Next from a shell prompt, try converting the file with faad being fed the file from STDIN.

Atlantic
2012-05-07, 08:42
First I suggest to check that the faad can decode your file - use faad from a shell prompt to create WAV file.

Curious.



root@SBS741:/usr/share/squeezeboxserver/Bin/i386-linux# faad
bash: faad: command not found


When I had first copied the new faad, Squeezeplay 'couldn't open the file'. I then made the new faad executable (permissions are now 100777, as reported by mc, and rwx by all users). Presumably just typing faad should invoke it? (Even if only for it to complain about no params.) I saw an example command-line usage here:


Need some m4a audio guru assistance - Hydrogenaudio Forums

"Seems just moov box missing. Probably file was not finalized properly, due to premature termination of writing software or hardware. The following worked. If you want rescued file, I can upload it and will let you know.

$ dd ibs=1 skip=44 if='your broken file.m4a' of=raw.aac
$ faad -a adts.aac raw.aac"


http://www.hydrogenaudio.org/forums/index.php?showtopic=93865&hl=faad

Atlantic

bpa
2012-05-07, 09:30
I guess you are not familiar with linux - unless the directory is on the path you need to give directory as well as executable name. In this case if you have "cd" to the directory use "./faad"

Atlantic
2012-05-07, 10:39
I guess you are not familiar with linux - unless the directory is on the path you need to give directory as well as executable name.

Not enough. Thanks.

Curiouser:



root@Sbs741:/usr/share/squeezeboxserver/Bin/i386-linux# ./faad
*********** Ahead Software MPEG-4 AAC Decoder V2.7 ******************

Patched for Squeezebox Server:
* ALAC decoder integrated
* Seeking support with -j and -e switches
* STDIN support
* Source at http://svn.slimdevices.com/repos/slim/7.5/trunk/vendor/faad2

Build: Apr 14 2010
Copyright 2002-2004: Ahead Software AG
http://www.audiocoding.com
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.

************************************************** ************************


Usage:
./faad [options] infile.aac
Options:
-h Shows this help screen.
-i Shows info about the input file.
-a X Write MPEG-4 AAC ADTS output file.
-t Assume old ADTS format.
-o X Set output filename.
-f X Set output format. Valid values for X are:
1: Microsoft WAV format (default).
2: RAW PCM data.
-b X Set output sample format. Valid values for X are:
1: 16 bit PCM data (default).
2: 24 bit PCM data.
3: 32 bit PCM data.
4: 32 bit floating point data.
5: 64 bit floating point data.
-s X Force the samplerate to X (for RAW files).
-l X Set object type. Supported object types:
1: Main object type.
2: LC (Low Complexity) object type.
4: LTP (Long Term Prediction) object type.
23: LD (Low Delay) object type.
-d Down matrix 5.1 to 2 channels
-w Write output to stdio instead of a file.
-g Disable gapless decoding.
-q Quiet - suppresses status messages.
-j X Jump - start output X seconds into track (MP4 files only).
-e X End - end output X seconds into track (MP4 files only).
Example:
./faad infile.aac
./faad infile.mp4
./faad -o outfile.wav infile.aac
./faad -w infile.aac > outfile.wav
./faad -a outfile.aac infile.aac
root@sbs741:/usr/share/squeezeboxserver/Bin/i386-linux# ./faad -w test.m4a > outfile.wav
*********** Ahead Software MPEG-4 AAC Decoder V2.7 ******************

Patched for Squeezebox Server:
* ALAC decoder integrated
* Seeking support with -j and -e switches
* STDIN support
* Source at http://svn.slimdevices.com/repos/slim/7.5/trunk/vendor/faad2

Build: Apr 14 2010
Copyright 2002-2004: Ahead Software AG
http://www.audiocoding.com
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.

************************************************** ************************

[.. 40 mins later ..]

^Z
[2]+ Stopped ./faad -w test.m4a > outfile.wav
root@sbs741:/usr/share/squeezeboxserver/Bin/i386-linux#



faad hung, for over 40 mins. The test file is 6.6MB. outfile.wav is created, but zero length. No error message from faad. I'd posted the 'intro', above, so that the CLI options would be visible in the post; none looked to me to be relevant. And the faad version is the latest one from svn, as far as I can tell (it looks later than the one in my SBS 741 installation) - a 2010 release (?) from upstream, and a 2011 patch before adding to svn (judging from the log). I also ran faad with -i but nothing more was printed, and it hung in the same way.

But I doubt that this file is 'anything special'; my guess is that, since LMS 7.7 works fine with m4a, that what I'm doing here isn't quite compatible with the patches used for Squeezebox.

Atlantic

bpa
2012-05-07, 12:25
The version of faad is up to date.

The problem is with your file as LMS 7.7 can play many m4a/mp4/aac files. faad is an "official" decoder but I think there are some files which it can't handle and I suspect your file is one.

What info do you get when you run the file with the "-i" option ?

edit:

What type of processor and speed is on your LMS server ?

Atlantic
2012-05-08, 02:32
The problem is with your file as LMS 7.7 can play many m4a/mp4/aac files. faad is an "official" decoder but I think there are some files which it can't handle and I suspect your file is one.


Beginning to look possible.



What info do you get when you run the file with the "-i" option ?


I ran with -i; just a hang. ^C exited.



What type of processor and speed is on your LMS server ?

Celeron 2200. Server only runs SBS; library is on internal SATA drives. It's a reasonably modern, unstressed, machine.

bpa, I guess we've pretty much exhausted the options - to say nothing of exhausting everyone else reading the thread. I'll just convert the file offline. But I would like to say thank you, very much indeed, for your help and insights (and for the hint about running programs not on a path).

regards, Atlantic

bpa
2012-05-08, 02:39
I suggest sending a PM to andyg (LMS developer) as he is interested in unplayable files. He may have an explanation or give you instructions on how to upload so he can analyse the file.

sherington
2012-05-09, 00:51
It is really easy to do using DBPowerAmp's Convertor facility - can convert to MP3 of any kind, FLAC of any level of compression etc etc etc. I would recommend that as a relatively easy and speedy way of getting the sound!!!