You need Microsoft Visual C++ 2010 to build qaac/refalac. AMD64 build is only available for refalac.
nu774 / qaac Goto Github PK
View Code? Open in Web Editor NEWCLI QuickTime AAC/ALAC encoder
License: Other
CLI QuickTime AAC/ALAC encoder
License: Other
Alright, I finally figured out what I did that broke the mono encode that I reported and then retracted previously. I take an AAC file that was encoded in mono using qaac 2.54 and then decode it to WAV. When using that file to try to recompress to ALAC or AAC, I get "Error: No Channel mapping to AAC defined". I get the same error when specifying --chanmap 1. When I use --chanmask 0 I get "ERROR: Not supported channel layout".
If I take the same WAV and try to encode it using qaac 2.54 it works perfectly normal.
All stereo WAV sources work properly, including taking the same Mono WAV, doubling up the track and converting it to a stereo WAV in Audacity.
I've also tried using a stereo AAC that was encoded with qaac 2.48, converting it to mono with Audacity and then encoding. I get the same errors.
The qaac 2.57 executables were created using Microsoft Visual Studio Express 2013 on a Windows 7 machine and also using the default project settings.
My Versions Are As Follows:
qaac 2.57
CoreAudioToolbox 7.10.5.0
libsndfile-1.0.26
libFLAC 1.3.1
wavpackdll 4.75.0
Requested at http://www.hydrogenaudio.org/forums/index.php?showtopic=85135, by twinspex
Hi all,
I just downloaded qaac_2.16.zip from the Google sites cabinet and I found that encoding went smooth but decoding returned an unreadable file. I used the 32-bit version on Windows 7. The returned wave has a fact-chunk instead of a data-chunk. Because of that, is is unreadable even for players like MPlayer.
This problem is also present when I run this on 64-bit linux over Wine, but refalac64.exe over Wine doesn't have this problem.
Is this a known issue?
Would be nice to also have VS2008 project files.
The current VS2010 files work fine (thanks for these) but since VS2010 compiles won't run on Win2k it would be nice to have VS2008 project files.
Windows10 x64
QuickTime is 2016 from https://support.apple.com/kb/DL837?viewlocale=en_US&locale=en_US
QuickTime only got 32 bit. Weired
VC++ installed most version.
CoreAudioToolbox.dll:
Can't Reg like it's not 64bit 4.75M
so tried install a standalone 3.54M like it can be reg.
but CLI backs a message is [dll ERROR: 193: CoreAudioToolbox.dll is not a valid ...]
I hate QuickTime it wont fit with most evriment.
And I used to set all right many yrs ago but it's win7 x86.
——————————
Then I tried to install ITunes and get the dlls ,
the CoreAudioToolbox.dll is 8900k
still not a valid dll for windows.
Reported by Tim Johnston
ffmpeg -y -threads 8 -i "H:\Temp\iId_3_aid_1_DELAY_-44ms_10_47_50_3710_01.ac3" -ac 6 -ar 48000 -c:a alac -f ipod h:\Temp\ffmpeg_alac.m4a
creates multichannel alac
using qaac 2.5.5
ffmpeg -y -threads 8 -loglevel fatal -i "H:\Temp\iId_3_aid_1_DELAY_-44ms_10_47_50_3710_01.ac3" -ac 6 -ar 48000 -acodec pcm_s16le -f wav - | qaac --delay -0.044 --threading --alac --raw - -o "H:\Temp\iId_3_aid_1_aa.m4a"
only creates stereo output
Do I have to specify anything special to create multichannel alac with qaac ?
Encoding of mono source files is broken in version 2.55. It still works in version 2.54 when using all of the same DLLs (wavpack, FLAC, libsndfile, and the latest AppleApplicationSupport). I took a long look at the code but my incredibly basic coding ability did not let me see where the error was.
First let me say, I assume this is a false-positive and I just want to figure out if there's a good way (for all users) to prevent getting a malware warning. Also, if others encounter the malware warning, they can find this issue.
When extracting or copying qaac64.exe
and refalac64.exe
v2.61, Windows Defender is detecting a Trojan it calls Win32/Maltule.C!cl
. Microsoft provides basically no info on it.
I can only find one other reference to another user encountering this warning with qaac, but still, it indicates it isn't just me.
A scan of qaac64.exe
with VirusTotal yielded no malware. I submitted a report of the false positive to Microsoft.
I was updating from qaac 2.59 and didn't encounter this issue with that version. Any ideas on changes that might have triggered the new warning?
Hello
I understand the current behaviour of qaac is to ignore any ReplayGain tags (even if it is specified manually in the command-line), and the rationale provided is that the values may change post-transcoding.
I would like to request to add a command-line option --no-ignore-replaygain-tags
to suppress this behaviour. Specifying this option will cause qaac to copy any existing ReplayGain tags in the source file, or apply them if specified in the command line, thus following the behaviour for other tags.
ISO/IEC 14496-3:2009/Amd 4:2013 (New levels for AAC profiles) specifies the format of 7.1-channel AAC with rear surrounds. According to it, such a file should have audioProfileLevelIndication = 0x50
(i.e., confirming to AAC Profile Level 6) and ChannelConfiguration = 12
. Do the files generated by qaac support this standard?
Also, on a related note, I tried to convert a 7.1-channel WAV file (having a WAVEFORMATEXTENSIBLE
structure with dwChannelMask = 0x63f
) to AAC with qaac, fdkaac, Nero AAC and Winamp fhgaac. QuickTime Player displayed the layout of the file encoded with fdkaac as C,L,R,Ls,Rs,Rls,Rrs,LFE
in the Movie Inspector window. But for the files encoded with qaac, Nero AAC and Winamp fhgaac, it displayed the layout as C,Lc,Rc,L,R,Ls,Rs,LFE
.
Versions:
qaac 2.59, CoreAudioToolbox 7.10.5.0
fdkaac 0.6.2, libfdk-aac 3.4.12
Nero AAC codec 1.5.4.0
foobar2000 Free Encoder Pack 2015-10-24, Winamp fhgaac DLL v03.02.16
QuickTime Player 7.7.9 (Windows), 10.4 (OS X)
Sorry if this is the wrong place to ask. This is quite possible not anything to do with QAAC but may be to do with Quick Time.
In single file mode qaac -help indicates --compilation is available for tagging. I'm not sure how to use this field.
Do you need to supply a value? e.g. --compilation="true" or --compilation="false", or do you supply a boolean value TRUE or FALSE e.g. 0, -1, or is the presence or absence of a compilation tag alone without an associated value the way to use it?
The second query is to do with where QAAC picks up albumgain tags from. Essentially does qaac or the qucktime dlls have the internal facility to perform replay/album gain scan and tagging on submitted files?
I have been producing my own batch files following the example of the REACT2 coding, and trying to extend that into the use of qaac in my batch files to create m4a files. In REACT2 when the object is to produce a single album image wavegain is used to obtain album related ReplayGain values and to place them as REM statements in an EAC generated cuesheet. When I feed such a cuesheet into QAAC does it pick up these values from the cuesheet if they are present or does it automatically generate its own values for the tags by scanning the wave or flac input file? The albumgain values do appear as tags in the output m4a file when an album wave file and cuesheet are used to generate it.
If I want to encode a collection of untagged individual track wave or flac files without a cuesheet to lossy m4a files using qaac, is there a way to get qaac to analyse the files as a group and tag each file with the albumgain tags, or is it best to use qaac to encode and tag each file individually and then use aacgain on the transcoded files as a group to generate album gain tags? Obviously if qaac (or quicktime dlls) do not have the internal facility to generate album gain tags then the second suggestion above is the way I should go.
Thank you for your very rapid responses to previous queries. You have been very helpful.
I am currently using Windows XP SP3 and qaac 0.25a with Quicktime 7.6.8.
Regards,
Twinspex
tried to use:
ffmpeg -threads 8 -v -10 -y -i "test.dts" -acodec pcm_s16le -f s16le - | sox --ignore-length --buffer 2097152 -S -t raw -e signed-integer -2 -c6 -r48000 - -t wav - gain -2 treble +2 | qaac --raw-channels 6 --raw-rate 48000 --cvbr 192 --adts --ignorelength --raw - -o "test.aac"
and got 'Sorry, unacceptable WAVE format'
trying to get at the bottom of the problem I first did:
ffmpeg -threads 8 -v -10 -y -i "test.dts" -acodec pcm_s16le -f s16le - | sox --ignore-length --buffer 2097152 -S -t raw -e signed-integer -2 -c6 -r48000 - -t wav test.wav gain -2 treble +2
and then
qaac --cvbr 192 --adts -o "test.aac" "test.wav"
which gave me:
libmp4v2: mp4v2::impl::MP4File::FindIntegerProperty: no such property - moov.mvhd.modificationTime (....\mp4v2\src\mp4file.cpp,746)
qaac --check shows:
qaac 0.85, QuickTime 7.7.0
MPEG-4 AAC Encoder 1.7.1
AAC HE Encoder 1.2.0
Apple Lossless Encoder 1.1.1
libsoxrate 0.0.7
-> got any idea what it going wrong?
uploaded all the files to: http://www.multiupload.com/DDJ1NUYHB3
as a side note:
ffmpeg -threads 8 -v -10 -y -i "test.dts" -acodec pcm_s16le -f s16le - | sox --ignore-length --buffer 2097152 -S -t raw -e signed-integer -2 -c6 -r48000 - -t wav - gain -2 treble +2 | neroAacEnc -br 192000 -ignorelength -if - -of "test.mp4"
works fine,...
Cu Selur
Hi,
I've identified a possible issue with QAAC 0.23, Quicktime 7.6.8 under windows XP SP3 - but then again it may be my incomplete understanding.
Using QAAC to split a wave image of a 3 track CD single with --alac and --ignorelength switches I have found that the resulting lossless m4a files duration is reported wrongly but with consistent values in Audio Shell 1.3.5, Foobar 2000 v1.1 and Mp3tag 2.64.
The actual duration values are: Total 10min 16 secs, Track01 3min 03 sec, Track 02 4 min 0 sec, Track 03 3 min 12 sec. The reported durations when encoded via QAAC 0.23 are (for one big alac image 10 min 16 sec) but for the individual tracks split out as m4a files using a cuesheet: Track 01 10 min 16 sec, Track 02 9 min 30 sec and track 03 8 minutes 30 sec.
I have also noticed a difference in the filesizes produced.
With --ignorelength switch the three filesizes are reported by Explorer as Track 01 72,330kb, Track 02 67,887 kb and Track 03 60, 371kb. (All have a 49kb cover jpg embedded).
Without --ignorelength the three filesizes reported by Explorer are Track 01 21, 394kb, Track 02 28,334kb and Track 03 22,794kb.
The command line used is invoked from a batch file. %FNAME% is an output filename template common to both settings, as is the cuefile.
qaac %Alac_Tag% %FNAME% cuesheet.cue
Alac_Tag is either "--alac --ignorelength" or "--alac". The --ignorelength switch is what seems to cause the problems.
I thought to use --ignorelength because the wave images being split by QAAC with a cuefile are pretty big, but perhaps I have misunderstood the purpose of the switch. When splitting the wave image to lossy m4a (e.g. --tvbr=125 --quality=2 --ignorelength) the filesize/duration problem does not seem to occur.
On playing back the files in Foobar, both cause foobar to report a similar bitrate of around 1000 kbps and are identified as alac in the status bar. Both sound identical. The key to the problem is that with --ignorelength track 01 is actually track 02 + track 03 + track 03. Track 02 is actually a bit of Track 01 + Track 02 + track 03, and Track 03 is a smaller chunk of track 01+ track 02 + track 03.
My guess is that with --ignorelength active the index points from the cuesheet are not being calculated correctly. I append the cuesheet in case it yeilds any clues.
The obvious workaround is not to use the --ignorelength switch with alac encoding. If it shouldn't be used anyway maybe the documentation could point this out and perhaps the code could ignore the switch if used. If it is a good idea to use this switch please could you have a look at what is going wrong and maybe give more details of how the switch should be used in the documentation?
This is by no means a complaint. QAAC is proving very useful to me, and I am just trying to give something back with this report. Thanks for all your efforts! :-)
Regards, Twinspex
Cuesheet
REM REPLAYGAIN_ALBUM_GAIN -4.55 dB
REM REPLAYGAIN_ALBUM_PEAK 32767
REM REPLAYGAIN_ALBUM_SCALE 0.59224
REM DISCNUMBER 1
REM TOTALDISCS 1
REM GENRE Punk
REM DATE 2001
REM DISCID 1B026803
REM COMMENT "ExactAudioCopy v0.99pb5"
PERFORMER "@"
TITLE "Pretty In Pink"
FILE "@-Pretty In Pink-2001.wav" WAVE
TRACK 01 AUDIO
TITLE "Another Girl Another Planet"
PERFORMER "The Only Ones"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "Pretty In Pink"
PERFORMER "Psychedelic Furs"
INDEX 00 03:01:17
INDEX 01 03:03:10
TRACK 03 AUDIO
TITLE "Lovers of Today"
PERFORMER "The Only Ones"
INDEX 00 07:01:62
INDEX 01 07:03:67
When downloading qaac 0.26 (noted as uploaded "7 hours ago") I noticed in the "old" section a version of aladec (0.25a) also noted as uploaded "7 hours ago". I wondered if this would be the same version as packed with qaac 0.26 and checked in case it superceded the version in qaac v0.26.
The seperate version in the "old" section shows 4CF25448 as date/time stamp in the PE header (using Spybot filealyser), and the version packed in with qaac v0.26 shows 4D089E0C, so I guess the one in qaac v0.26 is the latest version.
As a general rule does a new version number of the qaac package always include all latest versions of component items? That is, can I ignore anything in the "old" list with a lower version number than the newest QAAC package version number?
Thanks,
Twinspex
Reported by Tim Johnston.
Hi Nu!
Not really much of an issue but...question for you. I'm noticing that QAAC is applying delays to things....I'm just curious as to why.
I have several projects I'm working on - a lot of them involve slowdown encoding pipe via eac3to and a lot of others are straight encodes from .wav formats. I notice the .m4a done by QAAC is almost identical to the .wav starting point formation....not noticing anything that would cause delay to go off (I'm not using --no-delay as I heard it can lead to sometimes audio being cut off incorrectly or pops/clicks). Not sure if true...anyways the audio delay is just fine because it didn't seem to add anything to the beginning! (Verified using Audacity)
Source : 23.06.917
Encode: 23.06.905
Yet the merged mkv shows a delay of 22ms...and the file when dragged into audacity shows that it begins 20ms before it should compared to wav and qaac .m4a...im curious as to why? :/
https://user-images.githubusercontent.com/26451301/36822208-ad23b450-1cab-11e8-8173-839b5ed6de73.png
^ Highlighted is equal to delay that mkvmerge puts to the source aka +22 ms (with this delay it would equal the .m4a....which is the same .m4a merged!) So confused :/
Unrelated: how does one calculate the sample count (if divisible by 1024 for AAC) for a specific audio source?
Hi,
QAAC 0.25a, Windows XP SP3, Quicktime v7.6.8. Single source flac file input on QAAC command line.
I have been able to successfully encode m4a files from flac (8) lossless files directly, and I have found that tags present in the source flac file transfer into tags within the m4a file produced. Using the command line below I also find that the tvbr setting is correctly applied and the qaac encoder details stored within the file are correct.
qaac.exe --tvbr 115 --quality 2 %tag_variable% -o output.m4a input.flac
The tag variable may contain the following for example:
--title "%title%" --artist "%cdartist%" --album "%album%" --date "%year%" --track "%tracknumber%" --genre "%genre%" --comment "%comment%" --compilation
I have also tested just a couple of tag fields at a time in case total string length to the QAAC command line made a difference. I additionally used the form --album="%album%" in case it made a difference.
Unfortunately the tags input on the QAAC command line seem to be ignored, and the pre-existing flac tags remain. I have confirmed this by examining a hex dump of one of the files produced. For me, the main problem is that I cannot amend the comment field or set the compilation tag as the other tags would not be different to those I use in my flac files.
I have repeated the test using a wave file as the input file with the following command:
qaac --tvbr 85 --quality 2 --comment="booyah" --title="test title" --compilation -o ".\test.mp4" ".\09-Badfinger-I Can Love You.wav"
and the tags are correctly applied to the m4a file.
While I can decode my archive flac files to wave files before re-encoding them to m4a files this is an extra step I would like to avoid if possible.
Thanks for all the help you have already given me.
Twinspex
since ffmpeg outputs wav channel orders (i.e. for 5.1: FL, FR, C, LFE, SL, SR) and qaac wants other channel orders (I assume aac channel order, i.e. for 5.1: FR, C, FL, SR, LFE, SL) I wanted to add a channel map using:
ffmpeg -threads 8 -v -10 -y -i "test_5-1.ac3" -acodec pcm_s16le -f wav - | qaac --raw-channels 6 --raw-rate 48
000 --chanmask 2,3,1,6,4,5 --cvbr 192 --adts --raw - -o "test_5-1.aac"
but I only get:
Error: -2209: setProperty: scda/icly
I wanted to add qaac support to my little encoding gui (Hybrid) and limit the bitrate choices for qaac to something from this list:
16, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 576, 640, 768, 960
but it seems like the supported bitrates depend on different factors (I guess sample rate, he/lc and channel count, bit-rate mode), but I can't seem to find some sort or overview.
So is there some sort of overview which bitrates qaac supports, which could help me to choose which of the values from my list are valid ?
Cu Selur
I have cross compiled Alpha 1 and Alpha 2 of Wavpack 5.0.0 and successfully used the generated libwavpack-1.dll with qaac 2.59. However qaac will not use the Alpha 3 Wavpack 5.0.0 libwavpack-1.dll for input when cross compiled in the same manner.
I confess I am unsure if it is my compiling technique or an adjustment that needs to be made in qaac. But to eliminate possible user error I have just now retested each build and I can confirm that on my setup:
Thanks for looking at this, and a big thanks for qaac :)
Andrew
I use "-v 256 -q 2" to match iTunes Plus. However the files show "268 kbps" in iTunes. They do not even say "VBR". The iTunes Plus encoded files say "256 kbps (VBR)". What is the reason for this?
Doesn't CVBR mean the upper limit is very important?
The first sound is the source, the second one is an aac using -V 82 --no-delay --no-smart-padding --adts
, the third one is an aac using -V 82 --no-smart-padding --adts
https://vgy.me/StER9g.png
So it doesn't really matter if I use --no-delay or not, the outputs even have the same md5sum.
When I run the following command:
.\qaac.exe -A '.\MyMusic.flac'
I get this error:
qaac 1.39, CoreAudioToolbox 7.9.7.9
MyMusic.flac
ERROR: Not available input file format
Any ideas?
早速のリリースありがとうございます。
うまく変換できました。
ただし、WAVPACK-DSDからAACに変換すると、タグが継承されてない模様です。
修正可能でしょうか。
Any chance of being able to use qaac to normalize an aac/mp3 input without encoding?
AACgain can do this but it's very slow compared to qaac, has some bugs and not maintained anymore.
1st of all, I known that converting to 32kbps will cause audio degradation, that is not of I'm reporting.
When converting a flac file to 32kbps CVBR HE the resulting file ends with pop and skips that are absent from the original. I used Foobar2000 as a frontend with the following settings: qaac 2.47, CoreAudioToolbox 7.9.9.6, AAC-HE Encoder, CVBR 32kbps, Quality 96. I used another frontend with the same settings and the same thing happened.
It should be noted that I converted a batch of files with the same settings and that one is the only one until now that presented problems.
I then decided to convert to 40kbps and the resulting file is clean without the skips and pops.
I also tested the FhG converter at 32kbps and the those files are clean.
So, the corruption only occurs with that specific file, with qaac, with that specific settings.
libsndfile needs to be checked at the compiling stage for existence. Otherwise qaac will build and not encode audio.
requested by Tim Johnston
There should be an option to convert AC-3 style channel maps to AAC on the fly.
For example: http://dl.dropbox.com/u/2701213/qaac/surround.wav
This encodes as: http://dl.dropbox.com/u/2701213/qaac/out.aac
Hi nu774
Thank you very much for your help. I had become confused by all the various documentation and forum discussions for the many different utilities I have been looking at. I now realise --compilation is a flag. I will use that in my m4a files.
I had hoped to use the same set of tags in all formats but that was very naive!
There isn't much point in my trying to include such a field in my flac archives because there idoesn't appear to be a standard for multi-artist albums outside of iTunes formats. I will simply use "various" in an "Album Artist" field which will otherwise be set the same as the [track]artist field in single artist albums. I have discovered that using "Album Artist" can itself be problematical because of the internal space character but have found a work around.
My second question was foolish. I now realise having Replay Gain fields in REM statements in an embedded cuesheet is not the same as having Replay Gain values in tags inside the file. (I found the freeware "fileAlyser" utility from the Spybot company useful for viewing tag strings inside my encoded files). As a result of this realisation I will insert Replay Gain tags after encoding using metaflac and aacgain. This really wasn't about QAAC at all, and I apologise for wasting your time. I was pleasantly surprised by how good QAAC is at tagging with data from a cuesheet and should not have expected QAAC to look to tag data fields held in non-compliant REM statements.
Your point about gain values possibly being different after lossy encoding is now understood. It is more sensible for me to scan the encoded set of files with aacgain. I haven't studied "Sound Check" yet, but as I don't want to use the iTunes program or a similar database I will probably stick with Replay/AlbumGain tags against possible use of slingbox type of equipment in the future. At the moment I have two portable Sony Walkman mp3/m4a player along with a hard disk unit that plays media files. I am pretty sure none of them support "Sound Check". It is sensible that QAAC sidesteps Replay/Album gain issues, and probably the same with cover tagging.
I noticed QAAC inserts an "iTunSMPB" tag which I think is something to do with gapless playback. Whether this is supported outside of Apple players and iTunes I don't currently know, but it will be a pleasant surprise if I find my Sony Walkman players can use it. Is it possible to detail in the documentation what tags QAAC or the Quicktime DLLS insert automatically into files being encoded if there are any others? For example iTunesplus seems to insert personal information fields into download files. It would be reassuring to know that self-encoded files will not contain any personal information that a future trojan infection on my computer or mobile phone might send out to the internet. (For example, user names and email addresses).
Thank you once more for being so helpful. I am now well on the way to being able to automate the ripping and trancoding of my CD collection while being able to avoid iTunes and Windows Media Player.
I don't expect you to reply to this message and you should delete it from the issues once read. I just thought you might like to know a little more about how your work is being used.
Best wishes,
Twinspex
I used this in cmd:
qaac64 -V127 --no-optimize *.flac
I have DLLs of libsndfile and libflac in the same folder. But output does not retain the embedded artwork from input files. Please help. Really appreciate your efforts..
Reported at http://www.hydrogenaudio.org/forums/index.php?showtopic=85135, by twinspex.
root@seedbox:/tmp/c/Gustav Holst, John Williams; Los Angeles Philharmonic, Zubin Mehta - Holst: The Planets & Williams: Star Wars Suite [2011]# /media/bin/qaac --tvbr 91 -o "./aa: aa: a.m4a" "/tmp/01 - Holst - The Planets, Op.321. - Mars, the Bringer of War.flac"
qaac 2.64, CoreAudioToolbox 7.10.9.0
a.m4a
AAC-LC Encoder, TVBR q91, Quality 96
[100.0%] 7:12.826/7:12.826 (18.4x), ETA 0:00.000
19087656/19087656 samples processed in 0:23.486
Overall bitrate: 204.881kbps
Optimizing...done
root@seedbox:/tmp/c/Gustav Holst, John Williams; Los Angeles Philharmonic, Zubin Mehta - Holst: The Planets & Williams: Star Wars Suite [2011]# ls
01 - The Planets, op. 32:/ 02 - The Planets, op. 32: II. Venus, the Bringer of Peace.m4a
01 - The Planets, op. 32: I. Mars, the Bringer of War.m4a aa: aa:/
02 - The Planets, op. 32:/ aa: aa: a.m4a
root@seedbox:/tmp/c/Gustav Holst, John Williams; Los Angeles Philharmonic, Zubin Mehta - Holst: The Planets & Williams: Star Wars Suite [2011]#
As you can see, -o "aa: aa: a.m4a"
results in a folder called aa: aa:/
being created.
I'm not sure if this is a supported use case, since I don't think Windows supports colons in the filename?
Unless I have something misconfigured or similar, there does not seem to be Opus file input support. Are there plans on adding this? I can always just brute force a temp WAV conversion, but Opus is becoming widely used in volume.
Since ADTSSink uses fopen() and fwrite() the output will be buffered. This is fine for file based output, but it causes problems for pipe based output which will be delayed until the buffer is full.
As a fix, can you add a fflush() after each sample when the output is piped?
Concerning Encoding from pipeline, I believe that it is more versatile to use ffmpeg instead of flac:
ffmpeg -i foo.tak -f wav -c pcm_s32le -v 0 - | qaac -V 100 --ignorelength - -o foo.m4a
The option "-c pcm_s32le" is added because ffmpeg always uses pcm_s16le codec when converting to wav format, regardless of the original audio bit depth.
Given that foo.tak is a audio file with 24 bit depth,
takc -d foo.tak - | qaac -V 100 --ignorelength - -o tak.m4a
ffmpeg -i foo.tak -f wav -c pcm_s24le -v 0 - | qaac -V 100 --ignorelength - -o ffmpeg24.m4a
ffmpeg -i foo.tak -f wav -c pcm_s32le -v 0 - | qaac -V 100 --ignorelength - -o ffmpeg32.m4a
The above codes yield the bit-exact same track, verified by Binary Comparator component of foobar2000. In addition, the output file will have no difference if the output format is ADTS or CAF.
not sure if it is intended but the qaac_1.24.zip only includes a qaac.exe in the x86 folder.
I also wanted to know if the .dlls included are needed requirementsfor qaac and/or refalac and if you could also provide static builds for download.
requested by Catalin NC.
First of all thanks for this great util!
Creating transcoded single tracks from cue file (+flac) is working great with --fname-format
switch and ${artist} variable.
I wanted to create just one file (mix) from cue file with --concat
switch and I noticed that Artist tag is missing from the resulted track info:
Although when I edited the missing Artist tags with mp3tag, Aimp still didn't recognise them (so it can be an Aimp bug).
I am not sure if it is an integrated part of the specification or not, but I wanted to let you know that the AAC-HE encode mode does not create a mono file when using a mono 16-bit WAV source. Tested QAAC version was compiled from today's master source code.
I did not try manually specifying the channel numbers in the QAAC command line.
Cheers!
(Reported by [email protected])
I downloaded new qaac and found that it adds a small amount of null samples at the beginning of a file (96000->44100 resampling).
And... it looks like you don't call speex_resampler_skip_zeros() function. It should be called right after speex_resampler_init() or speex_resampler_reset_mem().
Is there any chance of somebody creating a Windows Media Foundation source filter so that Microsoft application (like Windows Media Player) can natively read and play M4A ALAC files?
There are already of course many codecs based on old technology DirectShow filters. However Microsoft has committed itself to the new Media Foundation technology, and some of its newer applications (like the Windows 7 Network Streaming Service / NSS) only work with Media Foundation codecs and no longer with DirectShow ones. So a Media Foundation M4A ALAC would be highly desirable.
The solution would be to merge the M4A ALAC code from QAAC with Microsoft's Windows Media Foundation WAV Source sample DLL. Called WavSource.Zip on the following page: http://archive.msdn.microsoft.com/mediafoundation
According to this wiki page https://github.com/nu774/qaac/wiki/Encoder-configuration
q64 is not one of the functional quality steps. However, "q64" gets written to the tool tag even though I specify "--tvbr 63".
WAVPACK-DSDを入力ファイルにしたらNot Available input file formatになります。
多分WAVPACKのライブラリを使用すると正しくPCMにデコードできると思うんので、
修正お願いいただけませんか。
Im calling qaac with:
ffmpeg -threads 8 -v -10 -y -i "\dataserver\Share\Test-AAC-5__aid_4352__00_13_15_431_10.aac" -ac 6 -acodec pcm_s16le -f s16le - | qaac --raw-channels 6 --raw-rate 48000 --cvbr 576 --adts --raw - -o "\dataserver\Share\test_00_13_15_43110.aac"
which gives me:
_wfopen: ?\dataserver\Share\test_00_13_15_43110.aac: Invalid argument
(there are to backslashes before the question mark)
since
ffmpeg -threads 8 -v -10 -y -i "\dataserver\Share\Test-AAC-5__aid_4352__00_13_15_431_10.aac" -ac 6 -acodec pcm_s16le -f s16le - | qaac --raw-channels 6 --raw-rate 48000 --cvbr 576 --adts --raw - -o "D:\test_00_13_15_43110.aac"
does work I think the problem is that:
a. I need to format the UNC path in another way for qaac to handle it properly
or
b. qaac does not support UNC formated paths
So the questions is:
What is the problem a. or b.?
if a. who to format it properly
if b. would be nice if this could be fixed
Cu Selur
Hello,
I noticed that, even when using --limiter, some of the encoded material clips.
$ sox -n -e float -b 32 -t wav - synth 5 sin 2000 >out.wav
$ ./maxsample out.wav
1.000000
So this is a sine wave with max amplitude which I now try to encode.
$ qaac out.wav -o out.m4a && qaac --decode out.m4a -o dec.wav && ./maxsample dec.wav
...
1.041306
So the decoded content clips by quite an amount.
Adding --limiter to the encoder does not help:
$ qaac --limiter out.wav -o out.m4a && qaac --decode out.m4a -o dec.wav && ./maxsample dec.wav
...
1.048307
And it gets worse when adding --gain:
$ qaac --gain 10 --limiter out.wav -o out.m4a && qaac --decode out.m4a -o dec.wav && ./maxsample dec.wav
1.119114
$ cat maxsample.c
double maxsample(const char *f)
{
SF_INFO sfinfo;
SNDFILE *sf = sf_open(f, SFM_READ, &sfinfo);
double max = 0;
sf_command(sf, SFC_CALC_MAX_ALL_CHANNELS, &max, sizeof max);
return max;
}
int main(int argc, char *argv[])
{
printf("%f\n", maxsample(argv[1]));
return 0;
}
Currently (v2.64), when converting WAV files to AAC, like this: qaac64 example.wav
The tags/metadata in the WAV file are lost/ignored.
Can you please add support for them?
Hey,
the program appears to use --bites-per-sample instead of --bits-per-sample
Hi, I have just updated from QAAC 0.27 to QAAC 1.39 and have updated all the necessary externals as detailed in the installation wiki. so far everything is working well for me but I have noticed a few trivial points which I couldn't find detailed on github. I pass the details on with my thanks for your continuing work.
I haven't found anyway to embed cuesheets into m4a files so I am using chapters points to let me seek to tracks within the m4a file. VLC media player supports the use of the internal chapters to move between tracks, although I don't think foobar 2000 supports chapters. I can just as easily use trackwise m4a files so this is all really just an exercise to see what is possible!
I am encoding an m4a file from a OBF (One Big File) flac file containing multiple tracks. The obf flac file has an embedded CUESHEET and I am using the --concat option in order to produce a OBF m4a file with embedded chapter points that QAAC takes from the embedded cuefile. I am adding various other tags supplied on the same command line.
The encoding works fine but while encoding the following output line is seen on the console window:"AAC-LC Encoder, TVBR q118, Quality 96" although the values I supplied are --tvbr=118, --quality=2.
Hopefully this is cosmetic. Although I am actually using Quicktime 7.7.2 now from documentation for Quicktime 7.6.6 that I have I am aware TVBR actually has only 15 levels and input values 114-122 will actually all produce the same results. However in earlier versions of QAAC and from the current documentation, this QAAC encoder only supports q=1 or q=2, so I don't know where the 96 comes from. I guess there may be a similar principle at work as with the TVBR values.
Point 2:
May I politely suggest the qaac -help output is made into a page in the QAAC WIKI? It doesn't seem to be in the WIKI index at the moment. It would save having to open a cmd window to run QAAC -help if I can just click to see it in my browser. I know I am lazy :-)
Point 3:
I have used the --artwork tag successfully. Is it possible to add multiple cover art to the same m4a file? For example; cover[Back].jpg, Cover[CD].jpg as well as the cover[Front].jpg I use by default? There is probably to much disk overhead for trackwise m4a files, but maybe not for OBF m4a files or ALAC album archives.
Point 4:
I personally would find it useful to have a QAAC supported m4a tag field for OriginalReleaseYear. With the multitude of remaster and deluxe editions these days I need a "current release date" field for which I usually use YEAR/DATE but I need another tag field for the year of the original release. I can insert an OriginalReleaseYear tag as a user defined tag in QAAC but it would be nice to see the QAAC supported equivalent of the TORY extended tag in id3v2.3 which some tag related software seems to support as an Original Release Year field already. But it isnt universal. I can use TORY in flac and mp3 (via lame) but it isn't a part of the standard QAAC supported tag list. for m4a files It would be nice to see support for this usage formalised somewhere for m4a files. I will understand if you are not keen as practical extension of tag standards seems to be problematic and inconsistent in implementation by developers.
(A specific problem I have with m4a files is that my Sony mp4 player seems to read its "YEAR" value from the TORY tag in an mp4 file but ignores the id3 "year/date" tag in an mp3 file. To see and use the Sony player "YEAR" value for sorting or selection of mp3 files I have to add in a TORY tag into the mp3 file to supplement the normal id3 v1 and v2 Year/Date field most applications use. Unfortunately this misuse(?) by Sony means I have to define a different user-defined "OriginalReleaseYear" tag for my mp3 and m4a files, or else just record the OriginalReleaseYear as part of the supported "comment" tag. This is hardly a QAAC related issue but I mention it because Sony don't document it anywhere and the mention may help someone else resolve their problem without cursing Sony support staff). And let's not mention id3 v2.4 as it seems to be a total morass of contradictions and varying implementation standards. I prefer to avoid it!
Thanks again for all your work on QAAC.
Regards, Twinspex
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.