问题标签 [avassetreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
537 浏览

ios - 来自 AVAssetReader 的 PCM 样本中的奇怪数据

我正在从 iOS 设备上的音乐中提取样本,使用AVAssetReader. 在每首曲目结束时,我都会遇到一些奇怪的数据:

这两个数字总是接近曲目的结尾(可能在最后几千个样本中),并且在它们之间总是有 2 个看似正常的样本。

这是我编写的设置代码AVAssetReader

这是我以某种方式错误地阅读的某种签名吗?

0 投票
1 回答
2535 浏览

ios - 使用 AVAssetReader 按时间值获取特定帧

我已经检查了这个http://www.7twenty7.com/blog/2010/11/video-processing-with-av-foundation以逐帧获取视频。但我真正的要求是在特定时间获得一个框架。我知道这应该是可能的AVAssetReader,我想知道是否有任何直接的方法可以做到这一点AVAssetReader。请就如何在特定时间获得框架提供任何指导。

我检查了AVAssetImageGenerator但这不是我真正想要的东西。

最后我找到了答案,你必须使用 timeRange 属性。这是唯一的办法。

0 投票
1 回答
469 浏览

ios - 在 AVAssetReader 中获取 Exc_Bad_access

使用 AVAssetReader 读取文件时出现 Exc_bad_Access 异常。该文件位于文档目录中,格式为 m4a。这是我正在使用的代码。无法弄清楚我在哪里弄错了:

我在最后一行遇到异常,即

0 投票
1 回答
1553 浏览

ios - 使用 AVAssetWriter 和 AVAssetReader 进行音频录制和播放

我的应用程序使用 AVAssetReader 播放 iPOD 库中的歌曲。现在我想添加录音功能。

我使用 AVAssetWriter 录制了音频。我通过使用 AVAudioPlayer 成功播放来检查生成的音频文件(MPEG4AAC 格式)。我的目标是使用 AVAssetReader 播放音频。但是当我为文件创建 AVURLAsset 时,它没有轨道,因此 AVAssetReader 失败(错误代码:-11828 文件格式无法识别)。

我应该怎么做才能让 AVAsset 识别文件格式?AVAsset 是否需要一些特殊的文件格式?

以下是录制代码:

0 投票
2 回答
4749 浏览

ios - AVAsset 无法识别 NSURL - 崩溃 - iOS

我正在制作一个 iOS 应用程序。它的功能之一是它可以保存记录和保存音频文件。

为了保存录制的音频文件的 URL,我将它们作为 filePaths 存储在 NSUserDefaults 中,如下所示:

file:///var/mobile/Containers/Data/Application/17F8E799-D7E1-4B3C-9DFE-7BA48E346314/Documents/recordName.aif

我正在使用一个名为“FVSoundWaveDemo”的库来尝试显示录制文件的声波。但是我的网址有问题...

“FVSoundWaveDemo”中的示例加载一个本地导入的文件,如下所示:

您会看到带有“song1.m4a”的位,我想替换它并让应用程序改用 filePath URL。就像我在上面的问题中显示的 filePath URL 一样。

我已经尝试过各种各样的事情,比如尝试将 filePath “转换”为普通 URL 并尝试使用 AVAssets 等等。但我尝试的一切都出现了这个错误:

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArrayM objectAtIndex:]:索引 0 超出空数组的范围”

这是因为我正在使用的库使用 AVAssets,如下所示:

那么我如何才能让 AVAsset 只与 filePath URL 一起工作呢?

请记住,我试图让它查看应用程序保存的录制音频文件,而不是开发人员可以添加到 Xcode 项目中的本地导入的音频文件。

我已经坚持了好几天了,如果你能帮助我,那将不胜感激,谢谢。

谢谢你的时间,丹。

0 投票
0 回答
205 浏览

ios - iOS中如何读取碎片化的媒体数据

我开发了一个 iOS 应用程序,可以长时间录制视频,我曾经AVCaptureSesssion使用录制

但是现在我想根据时间戳拆分记录的媒体数据,我想按照以下步骤进行操作

AVAssetWriter1)使用(已经实现)将媒体数据写入文件2)分配movieFragmentInterval记录的数据以每 5 秒创建片段原子 3)读取媒体数据片段
4)从分割的媒体片段创建电影文件

我浏览了以下链接,我明白制作块并阅读它会很容易,

http://stackoverflow.com/questions/11473360/is-it-possible-to-do-video-file-chunking-segmenting-while-still-recording-usin

我想从保存的片段中读取时间戳数据,是否有任何 api 来读取媒体片段?并从中创建一个单独的电影

0 投票
1 回答
459 浏览

ios - 如何使用 AVAssetReader 同时解码多个视频?

我正在尝试从多个视频文件中解码帧,并将它们用作 opengl 纹理。

我知道如何使用 AVAssetReader 对象解码 h264 文件,但似乎你必须startReadingwhile循环调用statusis时读取帧AVAssetReaderStatusReading。我想做的是打电话,startReading然后copyNextSampleBuffer随时随地打电话。通过这种方式,我可以从 AVAssetReader 创建一个新的视频阅读器类,并在我想将它们用作 opengl 纹理时从多个视频文件中加载视频帧。

这是可行的吗?

0 投票
0 回答
582 浏览

macos - MAC - 用于 TRIM 的 AVAssetReader - 无序读取样本

我正在尝试在特定的起点和终点从视频文件中读取和写入样本以修剪视频。我正在使用 AVAssetReader 和 AVAssetWriter。

这里使用的逻辑是 -

步骤一:

  • 使用指定的资产创建资产读取器实例。
  • 根据起点和终点设置阅读器的时间范围。(例如 - 起点 = 5,终点 = 15,文件长度 = 55 秒)
  • 开始阅读样本。
  • 获取样本相对于我们传入的起点的确切时间戳。
  • 存储与起点准确的样本时间戳。(可能是5.13左右)。说 ta = 5.13
  • 释放阅读器。

步骤 B:

  • 使用指定的资产创建一个新的阅读器实例。
  • 根据起点和终点设置阅读器的时间范围。(例如 - 起点 = 5,终点 = 15,文件长度 = 55 秒)
  • 开始阅读样本。
  • 创建一个新的样本缓冲区,其样本时序信息更改为(从步骤 A 获取的样本缓冲区的时间戳 t1-ta) - 这从 0 开始写入(从步骤 A 获取的样本缓冲区的时间戳 t2- ta)(样本缓冲区的时间戳 t3 - ta 从 STEP A 获取)等等直到终点。
  • 释放阅读器。

相同的代码示例是:

步骤一:

步骤 B:

由于样本的时间戳是以乱序方式读取的,因此我们最终会收到错误消息

“(kFigFormatWriterError_InvalidTimestamp)(解码时间戳小于前一个样本的解码时间戳)”

时间戳的值是 -

  • 时间戳以毫秒为单位 = 0.000000
  • 以毫秒为单位的时间戳 = 79.999924
  • 时间戳以毫秒为单位 = 39.999962
  • 以毫秒为单位的时间戳 = 119.999886
  • 以毫秒为单位的时间戳 = 200.000092
  • 以毫秒为单位的时间戳 = 160.000137
  • 以毫秒为单位的时间戳 = 280.000031
  • 以毫秒为单位的时间戳 = 240.000061
  • 以毫秒为单位的时间戳 = 319.999969
  • 以毫秒为单位的时间戳 = 399.999908
  • 以毫秒为单位的时间戳 = 359.999939 等等

对演示印章进行的任何操作都会导致样本的无序读取。

寻找一种方法来克服这种无序读取时间戳的问题。请告知。

提前致谢, 占巴

0 投票
1 回答
1779 浏览

ios - 将 AVAsset 读入帧并编译回视频

每个人!我项目中的想法是收集视频,将其拆分为帧,然后逐帧应用特定效果(不是主题),然后将所有内容编译回来。

使用以下代码,我可以将视频读入帧并将它们传递到数组中:

接下来,正如我上面所说,我逐帧读取轨道

我可以将所有内容放入数组中,但我需要将所有内容编译回视频轨道,使用原始轨道中的音频对其进行编译,然后保存。但是,我在网上找不到任何有用的信息。请帮忙!

提前致谢!

0 投票
1 回答
826 浏览

swift - 从 Swift 中的 unSafeMutablePointer Int16 获取价值以用于音频数据

我正在努力将此代码转换为 Swift,这有助于我获取用于可视化的音频数据。我在 Obj C 中使用的运行良好的代码是:

在 Swift 中,我试图写的是这一部分:

但是,当我 println() sampleValue 在控制台中出现(不透明值)时。我不知道如何实际阅读 sampleValue。

我是尝试读取音频数据以进行可视化的新手。任何有关获取音频数据缓冲区的帮助都会有所帮助。谢谢你。