问题标签 [avqueueplayer]
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.
cocoa-touch - 从队列中删除项目时,AVQueuePlayer 播放冻结
我成功地使用AVQueuePlayer来排队和播放AVPlayerItems。但是,当我通过调用removeItem:方法更改玩家队列时,问题就开始了。我的假设是,只要不触摸当前播放的项目,我就可以自由修改此队列,但似乎每次调用removeItem:都会冻结播放片刻。
考虑以下代码片段:
你可以从中猜到,它是一个动态的音乐播放器,可以播放来自不同分支的音乐。所以基本上,当我评论删除项目的行时,一切正常,但显然分支并没有按照我的意愿更改。冻结恰好发生在删除发生时,因此当前播放的项目被中断,但实际项目之间的过渡是无缝的。另请注意,队列中的项目永远不会超过 2 个,因此在循环中我基本上只删除一个项目。
所以,我的问题是:有什么办法可以避免这种冻结?首先是什么导致冻结?
编辑所以对于遇到同样问题的人来说,我的解决方案是停止使用 AVFoundation 并改用OrigamiEngine。
ios - 如何在IOS最上面的屏幕上播放电影?
我正在尝试从视图控制器播放电影。我正在使用下面的代码来做到这一点:
通常它工作正常。但有时,电影开始了,但我看不到视频,我只能听到声音。
在一切之上播放视频的最佳方式是什么?
iphone - AVQueuePlayer 太早开始下一个项目
我有一个AVQueuePlayer
,并且在特定情况下,它会在上一个曲目完成之前开始播放下一首曲目。它不会同时播放它们,它只是提前切断第一首曲目并开始下一首曲目。当两个轨道都是http流时肯定会发生这种情况,我在本地播放文件时没有尝试过。此外,并非每条轨道都会发生这种情况。只有特定的两个轨道放在一起时会导致问题。大多数曲目没有这个问题,但有很多曲目有。其他媒体播放器在输入这些曲目时不会出现这些症状。显示症状的曲目必须是 AAC 编码的,我在播放 MP3 版本时没有这样的问题。AAC 文件使用编码libfaac
,VBR 90%。对曲目进行编码的确切命令行:
我认为这个问题与积极编辑:确定不是原因,见下文。AVQueuePlayer
尝试无间隙播放曲目有关,因为我知道 AAC 中包含一些元数据,允许连续播放两首曲目而没有间隙(在电子混音中特别有用)——这些文件不应该有这个元数据但是,AVQueuePlayer
当播放两个不相关的曲目时,肯定不会引起恐慌吗?
如果你想自己重现问题,只需要极少的代码,只需创建一个基本项目,包含AVFoundation
,然后执行以下操作:
让第一首曲目播放到几乎完成(它将运行大约 100 秒左右),你会听到它突然结束,第二首曲目将继续播放。
我认为有一些解决方法,例如在下一首曲目开始时截取一条消息并检查上一首曲目的播放状态,或者仅在前一首曲目开始后将下一个项目添加到队列中......但我担心这些方法的可靠性,特别是当应用程序在后台运行时。如果这个客户端没有修复,我可以调查是否有办法去除这个元数据服务器端(假设这是问题),或者只是让自己使用更大、听起来更糟糕的 MP3 版本。
AVFoundation
只是一场骚乱——我敢肯定,任何害怕使用它的人都会同意。我正在争论是否将此作为 Apple 的错误提出来,但由于它在两次主要的 iOS 更新中幸存下来,我觉得这些东西对于AVQueuePlayer
. 从我对这个问题的研究来看,我显然不是唯一一个在这个框架上苦苦挣扎的人:
- AVQueuePlayer 挫折(缓冲区欠载处理)
- 由于间隙,AVPlayer 流在后台停止
- AVQueuePlayer 有时会移动到其项目队列中的下一个 AVPlayerItem 而不发送 AVPlayerItemDidPlayToEndTimeNotification
- AVQueuePlayer 在 iOS5 后台播放多个音轨
- 检测 AVQueuePlayer 中的当前项目并知道它何时更改?
全面披露:我的应用程序实际上是用 RubyMotion 编写的,但我已经能够用更少的代码在 Objective-C 中重现该问题(因此可能的故障点也更少),所以我相当肯定 RubyMotion 或我的使用 ofAVFoundation
不是这里的罪魁祸首。
编辑:刚刚使用链接使用本地文件对其进行了测试file://
,问题仍然存在,因此绝对不是流引擎或网络服务器的问题。
编辑 2:我研究了 MP4 规范以及 iTunes 和 AVFoundation 如何确定 MP4 中的无间隙。结果在moov.udta.meta.ilst.---
原子中应该有三个原子,mean
,name
和data
,它们告诉解码器需要重新创建 gapless 的各个位。但是,导致问题的文件没有这些原子,因此绝对不是无间隙播放的结果。我决定通过 CoreAudio 的 AAC 编码器运行原始文件(一个是 FLAC,另一个是 MP3),生成的文件可以完美播放AVQueuePlayer
(即使我用 去掉了所有无缝标签AtomicParsley
),所以它看起来像一个错误处理非 Apple AAC 比特流时libfaac
的输出或解码器。AVFoundation
ios - 奇怪的 RTC 报告错误
我正在开发一个 iOS 应用程序,而我的 AVQueuePlayer 引起了问题。在播放时,会出现此错误:
我完全不知道这意味着什么。我还注意到,使用我的 AVQueuePlayer,第一项播放正常,第二项在开始前等待一秒钟,然后从 1 秒标记开始,第三项根本不播放。这些可能是相关的。有没有人对错误或播放问题有任何见解。
ios - 应用程序因 malloc 崩溃:*** mmap(size=2147483648) failed (error code=12)
我AVQueuePlayer
通过添加 AVPlayerItems 创建一个对象。所有播放器项目都指向不同的音频 URL,播放器应在缓冲后立即播放。
当我在模拟器中启动应用程序时,我遇到了非常奇怪的内存问题。控制台说
和堆栈跟踪点在框架内部的一些地方。它突出了功能#0 MP3AudioStream::GeneratePackets(AudioFileStreamContinuation&) ()
我无法理解问题所在。
即使在 中添加断点malloc_error_break
,也不会提供任何信息。
有人可以帮我解决这个问题。
谢谢
ios - 在应用程序处于后台时播放音频或声音
嗨,我有一个计步器应用程序,它使用定位服务留在后台,现在我需要每 1000 步播放一次哔声。
我正在尝试这样玩:
但它不播放,如果我在应用程序处于前台时运行此代码,它会播放,但我在后台运行它时它什么都不做。
任何想法?
谢谢!
ios - iOS:如何使用 AVPlayer 在两个通道上播放单声道音频文件
我目前正在使用AVQueuePlayer
播放从 URL 下载的单声道 mp3 文件。当它在扬声器上播放时,音频听起来不错,但是当我戴上耳机时,音频只从一侧出来。
确保AVPlayer
在两个通道上播放单声道音频文件的最简单方法是什么?
ios - Airplay 与 AVQueuePlayer 有差距
我的应用程序使用 AVQueuePlayer 背靠背显示视频剪辑。在我的 AppleTV 上进行测试时,似乎当我切换到队列中的下一个视频时,Apple TV 会“接管”屏幕并显示 Apple TV 的主屏幕的时间间隔很小。有什么办法可以防止这种差距的发生,即使是黑屏或加载指示器也会是更好的体验。
ios - 有时在使用 AVQueueplayer 时状态栏上的播放图标会消失
我想在应用程序播放音频时在 iOS 的状态栏上显示播放图标。我使用 AVQueuePlayer 播放音频项目。一切正常,但我面临的问题是播放图标有时不会显示在状态栏上。
该应用程序必须支持播放/暂停。当用户点击暂停时,我会暂停队列播放器,点击播放按钮将再次开始播放队列。当用户再次点击播放时,我会寻找播放器项目,以便它与当时应该播放的内容同步。但是有时在再次点击播放后,队列会寻找适当的时间并播放,但播放图标不会出现在状态栏中。
我尝试通过注释掉搜索代码并只是播放/暂停。播放图标正确显示/隐藏,但我不确定 seekTime API 发生了什么。如果我用它来寻找,有时图标不显示时间。
这是在 seekTime: API 中发生的问题吗?我正在使用以下代码进行搜索 [self.player.currentItem seekToTime:seekTime];
请在这个问题上帮助我。
谢谢
ios - AVQueuePlayer 仅在第一次单击按钮时播放我的声音序列
我在我的方法中设置了一个AVQueuePlayer
命名播放器。viewDidLoad
我也有一个UIbutton
播放该序列的方法。
这是我的观点确实加载方法
这是我的按钮方法
当视图首次加载时,按下按钮只会产生一次声音序列。当我再次单击该按钮时,没有任何反应。但是,如果我导航到另一个视图控制器并返回到该视图控制器,它将在我第一次再次按下按钮时起作用,但和以前一样,它仅适用于第一次单击。
更新:在按钮而不是 viewDidLoad 方法中进行设置是根据第一个答案解决我的问题的关键。
我的 mp3 文件很小,每个文件只有一个单词。我有一个包含 3 列的 UIPickerView 设置,根据选择的行,当按下按钮时,它将按顺序播放这些特定的单词。关于我如何做到这一点有什么好的建议吗?
我目前正在尝试执行此操作,但出现错误
我收到以下错误 * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSURL initFileURLWithPath:]: nil string parameter”
firstRowWord 的描述与我要播放的 mp3 文件的名称完全相同