[Libav-user] [libavcodec][C] convert audio files

Bradley O'Hearne brado at bighillsoftware.com
Wed Sep 24 20:12:28 CEST 2014

> On Sep 24, 2014, at 1:42 AM, sbwn <*@sbwn.fr> wrote:
> Hello, 
> I'm trying to make a C++ program that convert music files, but it doesn't work. 
> main.cpp : http://pastebin.com/kTN45Fn1 <http://pastebin.com/kTN45Fn1> 
> functions.cpp : http://pastebin.com/aRwdHxy7 <http://pastebin.com/aRwdHxy7> 
> Makefile : http://pastebin.com/BzBEBicH <http://pastebin.com/BzBEBicH> 
> Program output :
> [mp3 @ 0x21eb200] max_analyze_duration reached
> Input #0, mp3, from 'test.mp3':
>   Metadata:
>     major_brand     : mp42
>     minor_version   : 0
>     compatible_brands: isommp42
>     creation_time   : 2013-11-29 03:30:21
>     encoder         : Lavf53.21.1
>   Duration: 00:03:58.15, start: 0.000000, bitrate: 192 kb/s
>     Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 192 kb/s
> Output #0, mp4, to 'out.mp4':
>     Stream #0.0: Audio: libvorbis, 44100 Hz, stereo, s16, 192 kb/s
> [mp4 @ 0x21ee5c0] Codec for stream 0 does not use global headers but container format requires global headers
> audio encode error-22 Invalid argument
> avcodec_encode_audio2 returns -22 and the error string is "Invalid argument", I don't know more about the error

This isn’t going to solve your immediate problem, but I can give you one bit of advice on any audio resampling operations you are performing, which gave me fits for weeks. My problem was that after what appeared to be successful resampling, I had a buzz that had been added to the audio. I tried all sorts of machinations to fix this, to no avail. In the end, the problem was the rounding function used (which was to round up, and which was employed in virtually every resampling example I found in sample code, blogs, etc. on the Internet). Change the function used to round down — this will prevent additives to your audio. The logic behind this is probably self-explanatory if you think of the effect to a sound wave by rounding up (adds data) versus down (removes data, albeit a minimal amount). 

A change of four characters in my code completely resolved the issue. Keep an eye out for this if you are doing heavy resampling. 

Good luck. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20140924/6971ce75/attachment.html>

More information about the Libav-user mailing list