Overview
First of all, what is QAAC? QAAC is a command line AAC/ALAC encoder frontend based on Apple encoder. QAAC can convert WAV files into Apple (iTunes, iPhones and others) compatible formats both lossy and lossless.
Why can I download QAAC from?
QAAC is open source, both source and binaries are available here.
Why doesn't QAAC work out of the box?
QAAC depends on a number of Apple DLLs to work. Due to licensing issues, these files cannot be redistributed along with QAAC. To use QAAC you need to:
- Install iTunes
- Copy the correct DLLs to the QAAC folder
Having spent at least a day and still not finding a comprehensive list of these DLLs, I had to resort to using Dependency Walker for each DLL to come up with the final list of required DLLs, so, here they are:
- ASL.dll
- CoreAudioToolbox.dll
- CoreFoundation.dll
- icudt62.dll
- libdispatch.dll
- libicuin.dll
- libicuuc.dll
- objc.dll
Where is iTunes installed?
With the entire Windows App technology, finding installed applications is no longer as simple like it used to be. If you have the Windows App version of iTunes, you should find it in the "C:\Program Files\WindowsApps\" folder. Try running dir "C:\Program Files\WindowsApps\Apple*" in the command prompt. Note: You may have to use an administrative command prompt.
Is there any easy to do this?
Yes, there is a PowerShell script which will automatically detect your iTunes folder and copy the required DLLs to the specified target folder. You can download the PowerShell script from here.
> powershell .\copy-qaac-deps.ps1 F:\Temp\qaac-testing-64If you see an error message regarding running scripts like:
> .\copy-qaac-deps.ps1 : File copy-qaac-deps.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 + .\copy-qaac-deps.ps1 F:\Temp\qaac-testing-64 + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccessYou'll need to enable executing PowerShell script on the system. You can do this by running the following command:
> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUserYou can reset back to the previous status by running:
> Set-ExecutionPolicy -ExecutionPolicy Default -Scope CurrentUser