从AudioRecord 提取pcm 转码为aac swr_convert 的使用 ffmpegswr_convertpcmaac 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我看官方例子的out_count 是根据in _count 用av_rescale_rnd函数来计算的,其实我的应该都不用 因为我的pcm的sample rate是44100 channels 为1 我的aac的也是44100 channels也为1 唯一的不同是pcm的sampe fmt 是AV_SAMPLE_FMT_S16 而aac的是AV_SAMPLE_FMT_FLTP ,可是重点是我怎么求得in _count啊 ffmpeg示例直接就是1024 然后根据这个生成的源数据。 还有stream的time_base 和 AVCodecContext 的time_base又是什么关系 我也在在研究这个问题,好象是说in_count=AVCodecContext.frame_size的。就是下面这个 ,我也不是很明白。而且我用vorbis编码的话发现这个值很少,只有64src_nb_samples = c->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE ? 10000 : c->frame_size; dst_nb_samples = av_rescale_rnd(swr_get_delay(swr_ctx, c->sample_rate) + src_nb_samples, c->sample_rate, c->sample_rate, AV_ROUND_UP); if (dst_nb_samples > max_dst_nb_samples) { av_free(dst_samples_data[0]); ret = av_samples_alloc(dst_samples_data, &dst_samples_linesize, c->channels, dst_nb_samples, c->sample_fmt, 0); if (ret < 0) exit(1); max_dst_nb_samples = dst_nb_samples; dst_samples_size = av_samples_get_buffer_size(NULL, c->channels, dst_nb_samples, c->sample_fmt, 0); } /* convert to destination format */ ret = swr_convert(swr_ctx, dst_samples_data, dst_nb_samples, (const uint8_t **)src_samples_data, src_nb_samples);自带demo,转出来是杂音 我最后也是用的这个demo的自己生成的音频测试的,最后同事从底层硬编码拿的aac数据,自己加头就可以了 如果知道codecContext,in_count是可以直接从codecContext->frame_size取的,我的那个是从android层传下来的数据,没有codecContext Rockchip方案 RK3066 sdk4.1 预装系统apk功能 模拟位置 android虚拟机 貌似不起作用 求高手指点下 SDK tools 跟新不了 纠结。。 android Binder具体是干什么用的? 动态添加Layout Activity 回收 android sms备份怎么实现? 请问怎么及时更新用户头像 camera PictureCallback问题 在实现两个activity之间数据传输的时候出现了bug,新人求助 cocos2dx是如何实现非规则精灵的碰撞检测的。。。。 关于activity binder service 线程未结束 finish 生命周期
就是下面这个 ,我也不是很明白。而且我用vorbis编码的话发现这个值很少,只有64src_nb_samples = c->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE ?
10000 : c->frame_size;
c->sample_rate, c->sample_rate, AV_ROUND_UP);
if (dst_nb_samples > max_dst_nb_samples) {
av_free(dst_samples_data[0]);
ret = av_samples_alloc(dst_samples_data, &dst_samples_linesize, c->channels,
dst_nb_samples, c->sample_fmt, 0);
if (ret < 0)
exit(1);
max_dst_nb_samples = dst_nb_samples;
dst_samples_size = av_samples_get_buffer_size(NULL, c->channels, dst_nb_samples,
c->sample_fmt, 0);
} /* convert to destination format */
ret = swr_convert(swr_ctx,
dst_samples_data, dst_nb_samples,
(const uint8_t **)src_samples_data, src_nb_samples);
自带demo,转出来是杂音
我最后也是用的这个demo的自己生成的音频测试的,最后同事从底层硬编码拿的aac数据,自己加头就可以了
如果知道codecContext,in_count是可以直接从codecContext->frame_size取的,我的那个是从android层传下来的数据,没有codecContext