[Libav-user] Extracting samples from audio file

Tuukka Pasanen pasanen.tuukka at gmail.com
Thu Aug 17 11:08:32 EEST 2017


Hello,

I have written example how to extract PCM from data with FFMpeg. It's 
not a bible how to make it but and example..

https://github.com/illuusio/ffmpeg-example

Tuukka


Philippe Gorley kirjoitti 16.08.2017 klo 00:06:
> On 2017-08-15 04:40 PM, Paul B Mahol wrote:
>> 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?
>
> Even when commenting out the else block and forcing the resampling, I 
> get the problem. But yes, that might be a future problem. Thanks for 
> flagging it.
>
> I have looked at docs/examples/resampling_audio.c (but does not use 
> AVFrame), the code in libswresample, and have read the docs (at least, 
> whatever I could find).
>
> Maybe I should use swr_convert instead of swr_convert_frame and 
> directly append the out samples to my vector?
>
>>
>>>
>>> Thanks,
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/libav-user
>>
>
> Thanks,
>



More information about the Libav-user mailing list