FFmpeg:编码 PCM 16 音频数据分配错误

2023-12-06

我目前正在尝试使用 avi 容器内的一些视频对一些原始音频数据进行编码。

使用的视频编解码器是 mpeg4,我想使用 PCM_16LE 作为音频编解码器,但我面临着一个问题AVCodec->frame_size音频样本的参数。

完成所有正确的分配后,我尝试分配音频帧,对于 AV_CODEC_ID_PCM_S16LE 编解码器,我没有获取样本缓冲区大小所需的编解码器frame_size。因此样本缓冲区大小很大,我根本无法分配这么大的内存量。 有人知道如何绕过这个问题以及如何手动计算frame_size?

    frame = av_frame_alloc();
    if(!frame)
    {
        return NULL;
    }

    //Problem is right here with the frame_size
    frame->nb_samples = m_pAudioCodecContext->frame_size;
    frame->format = m_pAudioStream->codec->sample_fmt;
    frame->channel_layout = m_pAudioStream->codec->channel_layout;

    //The codec gives us the frame size, in samples, so we can calculate the size of the samples buffer in bytes
    //This returns a huge value due to a null frame_size
    m_audioSampleBufferSize = av_samples_get_buffer_size(NULL,
                                                         m_pAudioCodecContext->channels,
                                                         m_pAudioCodecContext->frame_size,
                                                         m_pAudioCodecContext->sample_fmt,
                                                         0);

感谢您的帮助,

Robert


正如你所看到的pcm_encode_init函数于pcm.c

All pcm编码器有frame_size = 0;. Why?

因为在所有 PCM 格式中“事实上”没有像帧这样的东西,所以本质上不存在压缩PCM.

所以你应该自己决定要在缓冲区中存储多少样本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FFmpeg:编码 PCM 16 音频数据分配错误 的相关文章

  • 如何启动异步任务对象

    我想开始收集Task同时处理对象并等待所有对象完成 下面的代码显示了我想要的行为 public class Program class TaskTest private Task createPauseTask int ms works w
  • Java 声音可视化器

    我正在尝试制作一个java声音可视化工具 但我完全不知道如何在实时处理音频后立即从提取的音频中获取字节 我可以将程序与 wav 文件同步 但这不是我想要做的 我想用程序生成声音 然后播放它 而不将其保存在任何地方 谢谢您的帮助 本文可以帮助
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • C++:将模板参数的模板类型成员添加为好友的正确语法?

    我有一个带有模板类型参数 tTRAIT 的类 我想加一个模板为好友type member aliastTRAIT 但我无法弄清楚语法 这可能吗 template
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • WinForms - 表单大小错误

    我们有以下代码 private void MainForm Shown object sender EventArgs e RepositionForm private void RepositionForm Rectangle rect
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 命名空间“Microsoft”中不存在类型或命名空间名称“Practices”

    我正在使用 Microsoft Visual Studio 2005 for c 我的代码中有以下命名空间 using Microsoft Practices EnterpriseLibrary using Microsoft Practi
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB
  • C++ 错误:从“char”到“const char*”的转换无效

    我对 C 完全陌生 我创建了这个函数 bool guessWord string compWord cout lt lt Guess a letter string userLetter cin gt gt userLetter for u
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 非静态类中的静态方法和静态类中的静态方法有什么区别?

    我有两个班级A级和B级 static class ClassA static string SomeMethod return I am a Static Method class ClassB static string SomeMeth
  • 为什么我不能对普通变量进行多态?

    我是一名Java程序员 最近开始学习C 我对某事感到困惑 据我了解 在 C 中 要实现多态行为 您必须使用指针或引用 例如 考虑一个类Shape与实施的方法getArea 它有几个子类 每个子类都以不同的方式重写 getArea 然后考虑以
  • 从 STL 列表中删除项目

    我想创建一个函数 如果符合特定条件 则将项目从一个 STL 列表移动到另一个列表 这段代码不是这样做的方法 迭代器很可能会被擦除 函数失效并导致问题 for std list
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所
  • 类模板的 C++ 静态成员 - 链接器警告“多重定义”[重复]

    这个问题在这里已经有答案了 假设出于某种原因 我想要一个类模板 MyTemp 和一些静态数据成员 smDummyVar Mytemp h ifndef MY TEMP H define MY TEMP H template

随机推荐

  • 自定义注释 JSF

    我想制作自定义注释来检查 JSF Web 应用程序某些功能的安全性 为了安全起见 我将 Tomcat 安全性与 JaaS 结合使用 因此我没有可用的应用程序管理安全性 实际上想要做的是在 Spring Security Secured ro
  • 如果无法继承QSlider,如何为滑块添加刻度线

    我有一个 Qt 对话框 里面有一个滑块 当对话框初始化时 滑块将被设置一个值 为了提醒用户默认值是什么 我想给滑块添加一个标记 只需在手柄上方画一条线或一个三角形即可 这里 滑块应该是QSlider类型 这意味着我无法实现从QSlider派
  • Neo4j 强制索引的问题

    我遇到了一个问题 我在 Cypher 批量查询中强制使用索引 UNWIND rows AS row MATCH s Entity USING INDEX s Entity uuid WHERE s uuid row source MATCH
  • 如何在postgresql中查找任意大小的数组的所有组合(子集)[重复]

    这个问题在这里已经有答案了 给定一个数组 如何在 postgresql 中查找特定大小的元素的所有组合 子集 例如 给定一个数组 1 2 3 4 大小为 3 的所有组合都是 1 2 3 1 2 4 1 3 4 2 3 4 组合中的顺序并不重
  • NSURLSession:如何增加 URL 请求的超时时间?

    我正在使用iOS 7的新功能NSURLSessionDataTask检索数据如下 NSURLSession session NSURLSession sharedSession NSURLSessionDataTask dataTask s
  • 游戏中的卡牌等级

    我是一名 Java 初学者 因此 任何帮助将不胜感激 我设计了一个卡片类和甲板类 我将在我创建的游戏中使用它们 到目前为止 我的游戏似乎运行得很好 但问题出在我的 Cards 类上 我想利用 getRank 方法为玩家拥有的牌 无论花色如何
  • 如何在数据表列标题的过滤框中添加占位符文本

    我有一个素数面孔数据表 其中只有几列 并且所有列都有 filteryBy 属性 如何添加占位符或水印来为用户提供提示 任何建议 将不胜感激
  • 函数数组<可选> -> 可选<数组>

    这是我想做的 extension Array
  • Woocommerce 禁用自动订单状态更改挂起->处理

    我想禁用这个选项 每当有人在我的网站上制作和订购并且付款成功时 订单状态会自动从待处理 但是 我不想要此功能已启用 相反 我想在处理订单时手动执行此操作 我在 woocommerce 中发现了此功能 这使得此功能成为可能 我不想直接在那里更
  • Gem 安装 ruby​​-audio 失败

    我已经克隆了一个现有的存储库并且现在正在运行bundle install 由于某种原因 它在 ruby audio gem 上失败了 Installing ruby audio 1 6 1 with native extensions Ge
  • 重新格式化列中的日期

    我在 SQLite DB 中有一些以下形式的数据 id column1 date 111 280 1 1 2014 114 275 1 2 2014 日期字段的类型为 TEXT 我已被告知 https www sqlite org lang
  • docker 如何使用带引号的新命令提交 docker

    在制作 docker 的过程中 我必须将其命令从 bin sh 更改为nginx g daemon off 正是如此 I wrote docker commit change EXPOSE 80 change CMD nginx g dae
  • MongoDB:按日期查询

    在 MongoDB 数据库中 我有一个项目集合 每个项目都存储其创建日期 我需要按日期查询这个集合 我试过 db items findOne date new Date 1285947037 1000 但它没有返回任何东西 我使用 PHP
  • FreeType 如何渲染 ü ä ö 等特殊字符?

    我一直坚持使用 FreeType 渲染文本 尤其是非ascii字符让我头疼 经过一番尝试和错误后 我设法呈现一些文本 但我的变音符号没有显示 std string text Hauptmen for std string iterator
  • MVC C# 下拉列表在模型上显示 System.Web.SelectListItem 并且不能盲视控制器

    请帮我 我的下拉列表显示System Web SelectListItem在调试模式下 但不显示我在列表中定义的实际文本 任何人都可以帮忙吗 如何使控制器具有我在列表中定义的文本 而且我的下拉列表在选择时并不盲目 请帮我 这是它的样子 请看
  • 将 JComponent 重置为默认值

    例如 如果组件是一个复选框 则必须设置为 false 或者它是一个文本字段 则必须清除文本 我正在尝试编写一种重置所有组件的方法JPanel 它必须像 HTML 表单中的重置功能一样工作 如何重置JComponent到默认值 作为一名优秀的
  • 当目录名称包含方括号“[ ]”等特殊字符时,Glob 不起作用

    当路径目录带有方括号时 我在使用 glob 函数时遇到问题 Example 1 working path temp DIRECTORY SEPARATOR dir name files glob path DIRECTORY SEPARAT
  • 从 SciPy 稀疏矩阵填充 Pandas SparseDataFrame

    我注意到熊猫现在有支持稀疏矩阵和数组 目前 我创建DataFrame 像这样 return DataFrame matrix toarray columns features index observations 有没有办法创建一个Spar
  • 如何设置图标以获取基础FloatingActionsMenu

    我正在使用 com getbase floatingactionbutton FloatingActionsMenu 作为可扩展的 FAB 但无法在 fab 菜单上设置图标 我尝试过设置背景可绘制 但不起作用 谢谢
  • FFmpeg:编码 PCM 16 音频数据分配错误

    我目前正在尝试使用 avi 容器内的一些视频对一些原始音频数据进行编码 使用的视频编解码器是 mpeg4 我想使用 PCM 16LE 作为音频编解码器 但我面临着一个问题AVCodec gt frame size音频样本的参数 完成所有正确