问题标签 [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 投票
0 回答
498 浏览

iphone - AVAssetReaderAudioMixOutput 有多个文件?

我有 2 个 WAV 文件(单声道)我想合并。

我想将它们合并成一个立体声 WAV 文件,其中第一个文件将使用左声道,而第二个文件将使用右声道(如果可能,我还想控制音量并稍微降低第二个文件)。

我尝试使用AVAssetReaderAudioMixOutput,但出现以下错误:

[AVAssetReaderAudioMixOutput initWithAudioTracks:audioSettings:] 音轨必须全部属于同一个 AVAsset

我不确定如何合并 2 个不同的文件。

0 投票
1 回答
180 浏览

ios - 是否可以使用不同的视频播放 2 个不同的 avplayer?

现在我要制作一个视频应用程序。

1)在一个屏幕(UIview)中,是否可以播放2个独立的avplayer?

例如,在左侧面板中,一个 avplayer 播放一个视频文件,而在右侧面板中,另一个 avplayer 播放另一个视频。

我用自己的视频资产制作了 2 个 avplayer,但是出现了错误。即当一个视频结束时,另一个视频也停止......

请帮我。

2) 我将使用 AVAssetReader 将一些视频帧提取到图像文件中。

起初,一旦我成功了,但在下一次尝试这样做时,我无法读取任何框架。

有人说 AVFoundation 是,所以在我的这种情况下,可能会有不便......

这是正确的吗?

在应用程序中,我可以使用两次 AVAssetReader 对象吗?

如果有人知道,请帮助我...谢谢大家。

0 投票
3 回答
13070 浏览

ios - 如何使用 AVAssetReader 在 iOS 上正确读取解码的 PCM 样本——当前解码不正确

我目前正在开发一个应用程序,作为我计算机科学学士学位的一部分。该应用程序会将来自 iPhone 硬件(加速度计、gps)的数据与正在播放的音乐关联起来。

该项目仍处于起步阶段,仅工作了 2 个月。

我现在需要帮助的时刻是从 iTunes 库中的歌曲中读取 PCM 样本,并使用音频单元播放它们。目前,我想要执行以下操作:从 iTunes 中选择一首随机歌曲,并在需要时从中读取样本,并将其存储在缓冲区中,我们称之为 sampleBuffer。稍后在消费者模型中,音频单元(具有混音器和 remoteIO 输出)有一个回调,我只需将所需数量的样本从 sampleBuffer 复制到回调中指定的缓冲区中。然后我通过扬声器听到的不是我所期望的。我能认出它正在播放这首歌,但它似乎被错误解码并且有很多噪音!我附上了一张图片,显示了前半秒(24576 个样本 @ 44.1kHz),这不像一个正常的输出。在进入列表之前,我检查了文件是否损坏,同样我已经为缓冲区编写了测试用例(所以我知道缓冲区不会改变样本),尽管这可能不是最好的方法(有些人会争论走音频队列路线),我想对样本进行各种操作,以及在歌曲完成之前更改歌曲,重新安排播放的歌曲等。此外,音频中可能存在一些不正确的设置但是,显示样本的图形(显示样本解码不正确)是直接从缓冲区中获取的,因此我现在只想解决为什么从磁盘读取和解码无法正常工作的问题。现在我只是想通过工作来玩。http://i.stack.imgur.com/RHjlv.jpg

清单:

这是我设置用于 AVAssetReaderAudioMixOutput 的 audioReadSettigns 的地方

现在下面的代码清单是一个接收带有歌曲persistant_id的NSString的方法:

下面介绍函数 -(void)copyEnoughSamplesToBufferForLength:

现在 sampleBuffer 将有错误解码的样本。谁能帮助我为什么会这样?这发生在我的 iTunes 资料库中的不同文件(mp3、aac、wav 等)。任何帮助将不胜感激,此外,如果您需要我的代码的任何其他列表,或者输出听起来像什么,我会根据请求附上它。过去一周我一直坐在这个上面试图调试它并且在网上没有找到任何帮助 - 每个人似乎都在按照我的方式进行操作,但似乎只有我有这个问题。

非常感谢您的帮助!

彼得

0 投票
0 回答
2420 浏览

ios - AVAssetReaderTrackOutput copynextsamplebuffer || 从后台返回后始终为 NULL

这对我的问题很熟悉,但我不明白答案:应用程序从 iPhone 上的后台返回后的 copyNextSampleBuffer

我只是想使用 AVAssetReaderTrackOutput 来阅读视频:

一切正常,但是当我的应用程序从后台返回时,sampleBuffer 始终为 NULL,并且assetReader 处于状态 3,我猜这是失败状态。读取状态将为 1。

如何解决这个问题?

0 投票
2 回答
1622 浏览

ios - iOS 从相机捕获视频并与音频文件实时混合

我正在尝试从 iPhone 相机捕获视频并将电影与音频文件混合保存。我可以毫无问题地捕获带有音频(来自麦克风)的视频。我想要做的是捕获视频,而不是麦克风音频,而是使用音乐曲目(.caf 文件)。我正在使用 AVAssetWriter 捕获视频。我试图设置一个 AVAssetReader 来读取音频文件,但我无法让它与 AVAssetWriter 一起工作(可能是因为音频的解码发生得非常快)。另外,我不想保存没有音频的电影,然后将其与 AVAssetExportSession 混合。为了我的目的,这将是缓慢的。有任何想法吗 ?提前致谢。

0 投票
1 回答
727 浏览

ios - 在 iOS 上以 30fps 播放 200fps 视频

我正在寻找在 iPhone 上以慢动作 (30fps) 播放视频 @200fps 的可能性。MPMediaPlayer 不是解决方案。视频(600 帧 ~3 秒)在 2 秒内播放。我想要 30fps ~ 20 秒。

我已将 currentplaybackrate(myMPMoviePlayerController) 设置为 0.2 和 0.1,但视频仅持续 5 秒……我不知道为什么。

是否可以在 iPhone 上播放 @200 fps 的视频?兼容吗?在本文档中,仅提到了 30 fps 的最大帧数。如果我将视频转换为 30 fps(所以我得到 20 sec@30 fps),我无法实时播放(快 6 倍)

我可以在 AVFoundation 框架中实现它吗?

有什么建议么?

多谢

0 投票
1 回答
2174 浏览

objective-c - 在 AVAssetReader 中设置时间范围会导致冻结

因此,我正在尝试对先前录制的音频(来自 AVAsset)进行简单计算,以创建波形视觉效果。我目前通过平均一组样本来做到这一点,其大小是通过将音频文件大小除以我想要的波形分辨率来确定的。

这一切都很好,除了一个问题......它太慢了。在 3GS 上运行,处理一个音频文件大约需要播放它所需时间的 3%,这很慢(例如,处理一个 1 小时的音频文件大约需要 2.5 分钟)。我试图尽可能优化该方法,但它不起作用。我将发布用于处理文件的代码。也许有人可以提供帮助,但我真正想要的是一种无需遍历每个字节即可处理文件的方法。因此,假设分辨率为 2,000,我想访问该文件并在 2,000 个点中的每一个点进行采样。我认为这会快很多,尤其是在文件较大的情况下。但我知道获取原始数据的唯一方法是以线性方式访问音频文件。有任何想法吗?这里'

所以我完全改变了这个问题。我姗姗来迟地意识到 AVAssetReader 有一个用于“寻找”的 timeRange 属性,这正是我正在寻找的(参见上面的原始问题)。此外,这个问题已经被问到并得到了回答(我只是之前没有找到),我不想重复问题。但是,我仍然遇到问题。我的应用程序冻结了一段时间,然后当我尝试时最终崩溃copyNextSampleBuffer。我不确定发生了什么事。我似乎没有处于任何递归循环中,它只是永远不会从函数调用中返回。检查日志显示给我这个错误:

我在应用程序上使用了时间分析器,是的,它只是以最少的处理量就坐在那里。无法完全弄清楚发生了什么。需要注意的是,如果我不设置 AVAssetReader 的 timeRange 属性,则不会发生这种情况。我已经检查并且 timeRange 的值是有效的,但是由于某种原因设置它会导致问题。这是我的处理代码:

0 投票
1 回答
1046 浏览

iphone - 在 iphone 上以相反的顺序导出视频文件

我一直在尝试以相反的顺序导出视频文件(从头到尾播放)。知道如何有效地完成它吗?

我能找到的最好的方法是创建视频帧的 JPEG 文件(AVASSETREADER),然后以相反的顺序重写它(AVASSETWRITER)。但这很慢。

谢谢阿米特

0 投票
1 回答
1582 浏览

objective-c - 来自 iPod 库的 .m4a 原始数据未播放

所以我面临一个非常奇怪和奇怪的问题,想知道是否有其他人遇到过这个问题。我从手机音乐库中获取 MPMediaItem 的原始数据,然后通过 HTTP 将其发送到其他地方播放。我的问题出现的地方是,当我从 .m4a 类型的文件中获取原始数据时,它似乎缺少部分。例如,如果我从 iTunes 检查的原始文件是 7.4mb,那么从我的代码中得到的大小是 7.3mb。我做了一些研究,发现 .m4a 文件实际上是一个封装,我认为我没有得到文件的封装,只是原始音乐数据,因此它是不可识别的。这是我的代码,它为我提供了来自 MPMediaItem 的原始音乐数据

我会并且将获得手机库中 .mp3 文件的正确数据,但是当涉及到 .m4a 时,它似乎缺少某些部分。

再次感谢您抽出宝贵时间帮助我。

0 投票
0 回答
350 浏览

iphone - 如何在 iphone sdk 中使用 AVAssertWriter 和 AVAssertReader 录制和播放捕获的视频

我在预览层上显示相机数据(视频)。现在我想录制视频并将其存储在本地文件中并访问它以在屏幕上播放。

我看过一些网站可以使用AVAssertWriterAVAssertReader。我很难理解。任何人都可以用明确的方式或任何示例代码给我建议。

任何人的帮助将不胜感激。

谢谢大家,莫尼什。