[Libav-user] Extracting samples from audio file

Paul B Mahol onemda at gmail.com
Tue Aug 15 23:40:59 EEST 2017


On 8/15/17, Philippe Gorley <philippe.gorley at savoirfairelinux.com> wrote:
> On 2017-08-10 01:17 PM, salsaman wrote:
>> Correct, you would first create the swr_context then use it to convert
>> the data.
>>
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/libav-user
>>
>
> I'm still struggling with getting this to work. My code is here:
> https://pastebin.com/arzUw2za
>
> The commented out code at the bottom is the old Sndfile code, which I'd
> like to replace using FFmpeg. What it does is read all the audio samples
> into an array of int16_t. NB: Sndfile calls them frames, while FFmpeg
> calls them samples.
>
> Right now, my code gives me low volume static.
>
> I'm setting up the decoding pipeline, it (seems to, at least) works. I'm
> getting the same number of samples as Sndfile does. I'm guessing the
> problem lies with the resampling code.
>
> I'm calling swr_config_frame and swr_convert_frame for each decoded
> frame, loop through the output frame's extended_data[0] and append those
> samples to an std::vector.
>
> Notes:
> AudioSample is an alias for int16_t.
> AudioBuffer is a container with an std::vector<std::vector<AudioSample>>
> (one for each channel).
> AudioFormat is a POD struct with the sample rate and number of channels.
>
> Can anyone look at this and tell me what I'm doing wrong?

needResamping is triggered only when same sample rate is both ways.
Are you sure that swr resample code works that way, you can not
guarantee it will
give output frame for each input frame. There are nice swr examples in
repo, Have you looked at them?

>
> Thanks,


More information about the Libav-user mailing list