AVCaptureSession 音频不适用于长视频

2024-03-28

我正在使用 AVCaptureSession 录制带有音频的视频。对于短视频来说一切似乎都正常,但由于某种原因,如果我录制的视频长度超过 12 秒左右,音频就不起作用。


Edit (因为这个答案仍然得到点赞):这个答案可以缓解问题,但问题的可能根本原因已在@jfeldman 的回答 https://stackoverflow.com/a/38666844/2226732.


我找到了解决方案一个完全不同的问题的答案 https://stackoverflow.com/questions/10543180/weird-bug-with-avcapturesession#answer-25997260.

问题是movieFragmentIntervalAVCaptureMovieFileOutput 中的属性。

该属性的文档解释了这些片段是什么:

QuickTime 影片由媒体样本和样本表组成 确定它们在文件中的位置。没有样本的电影文件 表不可读。

在处理过的文件中,示例表通常出现在 文件的开头。它也可能出现在文件的末尾,在 在这种情况下,标头包含指向示例表的指针 结尾。当录制新的动画文件时,无法 由于文件的大小尚不清楚,因此写入示例表。 相反,必须在记录完成时写入该表。如果 不采取其他行动,这意味着如果录音不 成功完成(例如,发生崩溃时),文件 数据无法使用(因为没有示例表)。通过定期 在电影文件中插入“电影片段”,示例表可以 逐步建立起来。这意味着如果文件没有被写入 完全地,电影文件仍然可以使用(直到 最后一个片段被写入)。

它还说:

默认值为 10 秒。设置为 kCMTimeInvalid 以禁用电影 片段写作(通常不推荐)。

因此,由于某种原因,每当写入片段时,我的录音就会变得混乱。我刚刚添加了这一行movieFileOutput.movieFragmentInterval = kCMTimeInvalid; (where movieFileOutput是我添加到 AVCaptureSession 中的 AVCaptureMovieFileOutput)以禁用片段写入,并且音频现在可以工作。

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

AVCaptureSession 音频不适用于长视频 的相关文章

随机推荐

  • 是否可以在 pytest_generate_tests() 中使用固定装置?

    我有一些固定装置conftest py在实际测试功能中运行良好 但是 我想使用参数化一些测试pytest generate tests 基于其中一些装置的数据 我想做的 简化 conftest py my fixture returns a
  • 如何让WCF客户端使用与WCF服务相同的数据类型

    我有一个 NET WCF 服务 仅为 NET WCF 客户端提供服务 所有 NET 3 5 无互操作性 通过 TCP 二进制编码 使用 svcutil exe 服务的数据成员使用的复合类型将作为客户端使用的 proxy cs 类的一部分生成
  • 如何在node.js Express中获取IP地址

    我们如何从node js获取IP地址我尝试了很多方法但它不起作用并返回 ffff 127 0 0 1请给我一些建议 这是我的代码 app put update user info function req res it s doesn t
  • 撒克逊 Xpath 命名空间

    给定以下 xml
  • 为什么 3 > 2 > 1 返回 false,而 1 < 2 < 3 返回 true? [复制]

    这个问题在这里已经有答案了 为什么3 gt 2 gt 1 return false while 1 lt 2 lt 3回报true console log 1 lt 2 lt 3 console log 3 gt 2 gt 1 Since
  • Resharper 多重属性生成

    这可能是一个懒惰的请求 但是有没有办法同时生成多个类属性呢 目前 我有一个很大的清单未定义的属性我可以简单地逐一浏览列表 并生成一个属性 但最好突出显示所有这些属性并为每个属性生成一个属性 如下所示的示例图 你可以在这里看到prop1 pr
  • 如何确定使用Delphi的系统中是否安装了MSXML6?

    我有一个应用程序取决于MSXML6 http www microsoft com download en details aspx id 3988 overview 在大多数机器上 当部署应用程序时 这个包已经安装了 但在少数情况下 MSX
  • iPhone:如何判断线程是否为主线程? [复制]

    这个问题在这里已经有答案了 如何确定方法内的当前线程是主线程 还是只是异步创建的线程 身份证能告诉我吗 像这样 NSThread isMainThread
  • Python,如何将 statuses/update_with_media 发布到 Twitter?

    我能够在 Python 中成功发布状态更新 推文 import urllib import oauth2 as oauth token oauth Token access token access token secret consume
  • 如何在 Android 上将 2D 图像转换为 3D? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要将 2D 图像显示为 3D 图
  • Flask 应用程序中的 js 文件保存在哪里?

    我是 Flask 的新手 并使用它在 localhost 5000 处提供 index html 目前我只有 3 个文件 index html angular js 和 app js 它们都在同一个文件夹中 我将 index html 提供
  • 通过 Google Apps API 创建电子邮件

    我想从我的代码动态创建电子邮件地址 并在一段时间后处理它们 我在整个网络上进行了搜索 但没有找到任何允许人们创建新电子邮件帐户的 API 端点 我正在使用 Google Apps for Businesses 因此他们的文档制作得非常好并由
  • 从 jQuery 集合中获取每个元素的属性值,放入数组中

    我怎样才能获得所有属性 例如href 匹配 jQuery 选择器的所有元素 就像是 var idArray someClass map function return this id get join 工作演示 http jsfiddle
  • Rmarkdown 中评论的快捷方式?

    简单的问题 有人知道 Rmd 中评论的快捷键吗 在 Knit 中 这可以使用 CTRL C 来完成 它会在编写和编码环境中生成注释行 不幸的是 这在 Rmd 中不起作用 目前我必须输入 我正在使用 R studio 在 markdown 部
  • Python Shell:写入一个字节并从串口读取十进制数据

    问题描述 我正在尝试使用 rs232 检索存储在设备上的所有数据 How 对于这个特定设备 我需要 Step 1 发送一个字节 0x80 uInt8 8 位无符号整数 通过串行端口 COM5 并期望收到 0x81 作为响应 Step 2 发
  • C++ 中向量 的 ArgMin?

    我想找到indexC 中的最小值std vector
  • 禁用警报(); [复制]

    这个问题在这里已经有答案了 我无法控制的页面上生成的代码包含警报 有没有 jQuery 或其他方法来禁用alert 工作 我想要禁用 修改的正在生成的 JavaScript 是 function fndropdownurl val 1317
  • SendGrid 发送的密码重置电子邮件链接缺少点(域名上)

    我在 Ruby 和 Rails 框架上使用 SendGrid 邮件程序 在密码重置电子邮件模板中 我们发送一个密码重置链接 其格式如下 https subdomain domainname com password reset token
  • 更改 Exoplayer 中的播放速度

    我正在寻求实现一个具有变速播放 1 0x 1 25x 1 5x 的音频播放器 就像目前市场上典型的有声读物播放器一样 我想使用 Google 的 Exoplayer 库作为我的音频播放器库 但它们似乎不支持变速播放 关于如何实现这个的任何想
  • AVCaptureSession 音频不适用于长视频

    我正在使用 AVCaptureSession 录制带有音频的视频 对于短视频来说一切似乎都正常 但由于某种原因 如果我录制的视频长度超过 12 秒左右 音频就不起作用 Edit 因为这个答案仍然得到点赞 这个答案可以缓解问题 但问题的可能根