ffmpeg音频重采样audio_resample疑问

zjupli 2012-07-11 11:23:49
大家好,小弟正在使用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,这个应该设为多少呢?

提前谢谢各位大哥解答!!!
...全文
2271 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
明月惊鹊 2013-07-26
  • 打赏
  • 举报
回复
dst_bufsize = av_samples_get_buffer_size(&dst_linesize, dst_nb_channels,dst_nb_samples, dst_sample_fmt, 1);
rxf_mpg 2013-07-24
  • 打赏
  • 举报
回复
可以根据swr_convert()的返回值计算出长度
rxf_mpg 2013-07-24
  • 打赏
  • 举报
回复
我一般使用swr_convert()来重采样,out buffer一般设为28800
lsq8178 2013-07-22
  • 打赏
  • 举报
回复
重采样之后的长度怎么知道呢 写文件的时候要用啊
ibingow 2013-07-05
  • 打赏
  • 举报
回复
没找到av_audio_resample_init函数。可以用ff的swresample进行重采样的
Leric_Lee 2013-05-27
  • 打赏
  • 举报
回复
同问呐,FFMPEG的文档就是少的不能再少了,说去看源码一堆不知道是干什么的结构体和函数,对我等初学者就是一坑。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧