ffmpeg音频重采样audio_resample疑问
大家好,小弟正在使用ffmpeg对音频进行重采样。现在我有一段单通道的AV_SAMPLE_FMT_S16(也就是short)格式的音频,采样率为44100HZ,想把它下采样到8000Hz,使用了下面的代码
ReSampleContext* resampleEngine = av_audio_resample_init(1, 1, 8000, sampleRateIn, AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, 16, 10, 0, 0.8);
audio_resample(resampleEngine, resampleOut, input, numSamplesIn);
audio_resample_close(resampleEngine);
其中, av_audio_resample_init的最后四个参数是参看网上的例子,设为16, 10, 0, 0.8.
首先,我有一个问题,这里的resampleOut的内存需要提前分配好,大小应该设置多大呢?
第二个问题:我给resampleOut分配了很大的内存,audio_resample顺利执行过了,然后我把重采样的数据写到wav里,发现并不正确,是原音频中的一段,而且重复了多次。后来我把av_audio_resample_init的参数设成了16, 0, 0, 0.8,结果就对了,我参看了ffmpeg的介绍,说第二个参数是log2_phase_count,这个应该设为多少呢?
提前谢谢各位大哥解答!!!