<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi everyone,<br><br></div>I've just finished doing a generation loss test using ffmpeg on the following codecs at 96kbps:<br><br></div>
- AAC (libfdk_aac)<br></div>- Opus (libopus)<br></div>- Vorbis (libvorbis)<br><br></div>I wanted to see what which codec is best to use for sites like YouTube were content is often uploaded and downloaded, edited, then uploaded again in cycles. The results are mildly interesting:<br>
<br></div>AAC was still passable by 10 generations, in subjective terms it just sounds like most YouTube music videos uploaded before HD. Otherwise it took roughly the same amount of time for each decode/encode run. However the resulting filesize steadily grew from about 530 to 580KB, I'm not sure what caused this, but when I attempted the test with a larger example after just 15 runs the filesize had grown from 4MB to 18MB.<br>
<br></div>Opus did subjectively better than either AAC and Vorbis, the quality remained listenable all the way to 100 generations, while it was getting noisy I don't perceive it as being any worse or better than some popular YouTube videos. Everything else is as you might expect, it took less time on average for each encode/decode ctyle and the filesize remained a fairly steady 500KB.<br>
<br></div>Vorbis unfortunately did an appalling job, after just 3 runs there was a noticeable high frequency hiss that grew to unbearable levels by run 5. The filesize was quite literally all over the place, the first encoding was 526KB, the 5th was 436KB and then the 33rd was 510KB. I'm not quite sure was was going on there.<br>
<br></div>You can look at my results here: <a href="https://docs.google.com/a/nbsp.io/spreadsheet/ccc?key=0AgWJk3lK40SgdFhLaWhWOE14ekdYRXM0S2JYUjdzRXc&usp=sharing">https://docs.google.com/a/nbsp.io/spreadsheet/ccc?key=0AgWJk3lK40SgdFhLaWhWOE14ekdYRXM0S2JYUjdzRXc&usp=sharing</a><br>
<br></div>And you can download my source file, scripts and some samples here: <a href="https://drive.google.com/a/nbsp.io/file/d/0BwWJk3lK40SgZlduZDlYQW93RDg/edit?usp=sharing">https://drive.google.com/a/nbsp.io/file/d/0BwWJk3lK40SgZlduZDlYQW93RDg/edit?usp=sharing</a><br>
<br></div><div>It's also available on Github as a gist: <a href="https://gist.github.com/rowan-lewis/8104933">https://gist.github.com/rowan-lewis/8104933</a><br></div><div><br></div>Please take a look over my scripts (one for each codec), a few extra pairs of eyes over them would be good, because I'm not sure if the options I've used are optimal.<br>
<br></div>All of these tests were run using ffmpeg from the Arch Linux ffmpeg-full AUR package built on the 1st of December. I'm not sure exactly how to tell what version of each codec it is using, but hopefully it's representative of what is available to normal users.<br>
<br></div>Any thoughts are welcome,<br></div>Rowan Lewis<br></div>