ffmpeg - ffmpeg 如何使用 AV_SAMPLE_FMT_FLT 从 AVFrame 获取 PCM 浮点数
问题描述
我有一个通过解码器获得的 AVFrame,其格式为AVSampleFormat::AV_SAMPLE_FMT_FLT
. 我的问题是我想转换存储在里面的数据
avFrame->data; // returns uint8_t *
到 [-1, +1] 之间的浮点数组。我看到avFrame->data;
返回uint8_t *
如何使用它来获取音频每个通道的浮点 pcm 数据?
我尝试了以下方法:
auto *floatArrPtr = (float *)(avResampledDecFrame->data[0]);
for (int i = 0; i < avResampledDecFrame->nb_samples; i++) {
// TODO: store interleaved floats somewhere
floatArrPtr++;
}
但我不确定这是否是获取数据的正确方法
解决方案
auto *floatArrPtr = (float *)(avResampledDecFrame->data[0]);
for (int i = 0; i < avResampledDecFrame->nb_samples * avResampledDecFrame->channels; i++) {
// TODO: do as you please with data
floatArrPtr[i];
}
推荐阅读
- r - R 多轴图表
- r - 为什么 ggplot geom_area 在尝试根据聚合数据绘制堆积面积图时为空?
- python - 提交登录表单后,Flask Login 重定向 bask 以登录
- python - Map-reduce 功能概述
- excel - 如何从 Outlook 电子邮件中提取文本表到 Excel
- powershell - PowerShell Compare-Object 可以进行二进制比较吗?
- asp.net - 如果我使用的是 Net Core 3.1,如何在互联网上发布我的 react 网页?
- react-table - 反应表工具栏AllRowsExpanded 不起作用
- ng-zorro-antd - NzDropdown 中的 NzTree 无法正确渲染
- video - 如何使用 FFmpeg 平铺视频