IPB

Welcome Guest ( Log In | Register )

caudec: a multiprocess audio converter for Linux and OS X, Leverages multi-core CPUs with lots of RAM
skamp
post Feb 15 2012, 19:40
Post #1





Group: Members
Posts: 1150
Joined: 4-May 04
From: France
Member No.: 13875



I'd like to introduce a little program I wrote.

Caudec is a BASH script that transcodes audio files from one format (codec) to another. It leverages multi-core CPUs with lots of RAM by copying input files to a tmpfs mount, and running multiple processes concurrently (one per file and per codec).
  • Supported input codecs: WAV, FLAC, WavPack, Monkey's Audio, TAK, Apple Lossless.
  • Supported output codecs: WAV, FLAC, Flake, WavPack, Monkey's Audio, TAK, lossyWAV, LAME, Ogg Vorbis, Nero AAC.
  • Optimized I/O: input files are copied onto a tmpfs mount sequentially, so as to get the best performance out of the underlying medium (e.g. a hard drive). Transcoding however is done concurrently. Example: file 1 gets copied. When that's done, transcoding of file 1 starts. Meanwhile, file 2 gets copied, etc… Very little time is lost reading the files.
  • Transcoding to several different codecs at once is possible. In that case, decoding of input files is done only once.
  • Metadata is preserved (as much as possible) from one codec to another.
  • Uses existing, popular command line encoders/decoders.

Tested under Arch Linux. Download here. I tried my best to make sure that it'll run properly outside of my own environment, but I might have missed a couple of things. Please use the issues tracker to report any bugs. Feedback is most welcome!


--------------------
caudec -c lossyTAK -q S *.flac
Go to the top of the page
+Quote Post
 
Start new topic
Replies
skamp
post Jun 2 2012, 11:22
Post #2





Group: Members
Posts: 1150
Joined: 4-May 04
From: France
Member No.: 13875



I dug up an old version (before 1.0) that didn't copy input files to a tmpfs. Here are the results when transcoding FLACs from my hard drive to Ogg Vorbis, with 8 processes, on a 2 CD album with 37 files (same external encoders):
  • old version: 71.41 seconds (15.0 MB/s) (124.3x)
  • latest caudec: 58.71 seconds (18.2 MB/s) (151.1x)

That's roughly a 21% speed increase. Maybe not quite as dramatic as one could hope, but substantial nonetheless.

Obviously I dropped filesystem caches before each run.

This post has been edited by skamp: Jun 2 2012, 11:29


--------------------
caudec -c lossyTAK -q S *.flac
Go to the top of the page
+Quote Post
skamp
post Jun 4 2012, 11:48
Post #3





Group: Members
Posts: 1150
Joined: 4-May 04
From: France
Member No.: 13875



QUOTE (skamp @ Jun 2 2012, 12:22) *
That's roughly a 21% speed increase. Maybe not quite as dramatic as one could hope, but substantial nonetheless.


The benefit gets more obvious as CPU time decreases (the HDD becomes more of a bottleneck). Here's a case where the difference becomes "dramatic": encoding WAVs to FLAC (-q 5, FLAC's default compression level).
  • old version: 70.63 seconds (22.2 MB/s) (125.7x)
  • latest caudec: 38.33 seconds (40.9 MB/s) (231.4x)

That's a 84% speed increase smile.gif YMMV of course.


--------------------
caudec -c lossyTAK -q S *.flac
Go to the top of the page
+Quote Post

Posts in this topic
- skamp   caudec: a multiprocess audio converter for Linux and OS X   Feb 15 2012, 19:40
- - skamp   I just released version 1.1.0, which adds support ...   Feb 15 2012, 22:45
- - Dario   Excuse my ignorance, but does TAK actually work un...   Feb 16 2012, 00:34
- - skamp   The encoder/decoder (Takc.exe) works with wine. Li...   Feb 16 2012, 00:38
- - skamp   It just occurred to me that I left out one of caud...   Feb 17 2012, 08:21
- - skamp   I just released version 1.3.0 of caudec, that adds...   Feb 23 2012, 01:35
- - Takla   Hi skamp. I tried your caudec script and it is de...   Jun 2 2012, 00:31
- - Canar   While encoding is a parallel task, reading from a ...   Jun 2 2012, 00:40
- - Takla   I can see the logic, but disk reads are very high ...   Jun 2 2012, 08:08
|- - skamp   QUOTE (Takla @ Jun 2 2012, 09:08) I'd...   Jun 2 2012, 12:41
- - skamp   What Canar said. Hard drives don't like concur...   Jun 2 2012, 10:49
- - lvqcl   somewhat related: http://www.hydrogenaudio.org/for...   Jun 2 2012, 10:57
- - skamp   I dug up an old version (before 1.0) that didn...   Jun 2 2012, 11:22
|- - skamp   QUOTE (skamp @ Jun 2 2012, 12:22) That...   Jun 4 2012, 11:48
- - Takla   Thanks for the info. If I ever get an i7 I'll...   Jun 2 2012, 11:48
- - skamp   I'm guessing your hard drive is less of a bott...   Jun 2 2012, 12:06
- - Takla   I got my Core 2 Duo 1.6 GHz running 64-bit Debian ...   Jun 2 2012, 12:08
- - Takla   I saw the info on wine and win binaries in your do...   Jun 2 2012, 13:20
- - Takla   btw I booted my XP install to see what foobar2000 ...   Jun 4 2012, 00:04
- - punkrockdude   I am glad more Linux stuff is being done since I u...   Jun 4 2012, 20:14
- - skamp   I was curious, so I implemented a switch for disab...   Jun 5 2012, 12:49
- - skamp   I released version 1.4.0, with many changes (prett...   Jun 27 2012, 09:11
- - skamp   Latest version (1.4.3) brings support for Opus and...   Jul 10 2012, 12:22
- - Manlord   Excelent, thank you skamp. Going to test it on Deb...   Jul 10 2012, 22:08
- - skamp   I released caudec 1.5.0. Changes: Replaygain scan...   Jul 30 2012, 11:16
- - skamp   caudec 1.6.0 was released two weeks ago, with many...   Mar 17 2013, 11:52
- - skamp   I just released version 1.6.3 (see the changelog)....   Apr 16 2013, 18:52
- - edwardar   Thanks for this. I'm using it on my Shuttle X...   Apr 19 2013, 21:28
- - skamp   Yeah, I've used caudec on my netbook a lot, to...   Apr 20 2013, 16:02
- - skamp   Version 1.6.4 has a pretty cool feature for dealin...   May 1 2013, 11:10
- - skamp   Version 1.7.0 is out, with the longest changelog t...   Jun 17 2013, 11:13
- - BearcatSandor   Thanks Scamp, that's just awesome and useful...   Jun 18 2013, 01:46
- - skamp   That's always nice to hear Edit: you shouldn...   Jun 18 2013, 09:07
- - BearcatSandor   And it just gets better and better! Thank you...   Jun 18 2013, 09:51


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 20th June 2013 - 12:39