问题标签 [avplayeritem]
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.
ios - AVPlayer 状态 AVPlayerStatusFailed 无法正常工作
我正在实现 AVPlayer(不是 AVAudioPlayer)并尝试从 URL 播放音频。它工作正常。但正如我们所知,有时我们可能会有无效的 URL(没有音频字节的 URL)。当我从任何 URL 播放音频时,AVPlayer 状态总是显示 AVPlayerStatusReadyToPlay这是错误的。例如:在 URL 部分,如果给出无效的 URL,例如:http ://soundx.mp3slash.net/indian/jhankar_beats/1%28mp3pk.com%29.mp3 (即使在您的浏览器中也不起作用) ,即使您给出https://stackoverflow.com/questions/ask 或任何站点 URL(没有音频字节),AVPlayer 始终显示 AVPlayerStatusReadyToPlay。我认为在这种情况下,它的状态必须是 AVPlayerItemStatusUnknown 或 AVPlayerStatusFailed请帮助,如何知道 URL 无效(AVPlayerItemStatusUnknown 或 AVPlayerStatusFailed)表明我可以向用户显示消息。提前致谢
{
}
ios - AVPlayer 和 AVPlayerItem - 确定 NSError 是否为致命错误
有没有办法确定通过通知引发的 NSError 是否是致命错误(结束/阻止视频播放),而不是非致命错误(例如声音丢失,但播放恢复)?
我们之前依赖 player.rate 为 0(表示播放器无法启动)来确定错误是否致命,但事实证明这是不可靠的。
ios - 如何重新初始化 AVPlayerItem?
我正在使用“initWithUrl:”方法初始化 AVPlayerItem。
问题是当初始化被中断时(例如连接丢失)
假设我们有以下内容:
1. 应该怎么做?同时丢失连接时 avPlayerItem 的实例会发生什么情况?是否有一些协议可以实现以确定初始化是否成功?
2.我注意到的是,一旦初始化被中断,那么 avPlayerItem 的下一个“成功”初始化根本没有轨道(它们在之前没有中断时存在)要再次从源用户需要使用轨道初始化 avPlayerItem关闭并再次打开应用程序。
avfoundation - AVPlayer 的视频和音频在暂停然后恢复视频后变得不同步
我AVPlayer
用来在我的应用程序中播放视频。视频播放始终完美无缺,除非您暂停/恢复视频。如果用户按下暂停按钮,然后恢复视频,有时音频会在视频之前。
视频在正确的位置继续播放,但音频在前面。就好像当您按下暂停时,音频会继续运行。
当他们按下暂停按钮时,我所做的就是调用 的pause
方法AVPlayer
,并且我还尝试将它的rate
属性设置0.0
为根据文档应该是完全相同的东西。
我只是在将我的升级iPhone 6
到iOS 9
. 我已经在iPhone 6 Simulator
使用时对此进行了测试iOS 8.4
,但我无法重新创建这种行为,但是AVPlayer
在真实设备和模拟器上使用时通常存在差异,所以我不能说 100% 确定到目前为止无法重新创建错误上iOS 8
为好。
如果您查看iOS 9
发行说明,并搜索“ AVFoundation
”,您会发现有些地方发生了变化:https ://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-9.0/
我认为AVPlayerItem's
新属性canUseNetworkResourcesForLiveStreamingWhilePaused
是此问题的根源,但经过测试,我是否将其设置为YES
或都没有关系NO
,在这两种情况下问题仍然存在。
在这一点上,我不知道为什么会发生这种情况,但到目前为止,我最好的猜测是这是一个iOS 9
错误。
我希望我不是唯一遇到这种情况的人,并且有人已经找到了解决方案,或者可能知道为什么会发生这种情况。我愿意尝试和测试任何东西。
谢谢您的帮助。
ios - 如何使用 AVPlayer 播放 Apple Music 文件(甚至是“离线可用”的文件)?
是否可以使用 AVPlayer 播放 Apple Music 文件——甚至是“可用的离线”文件?我尝试了以下代码来检索 URL,但它返回 nil:
谢谢阅读。
编辑: Apple Developer论坛上的讨论表明这可能是不可能的,除非不使用 AVPlayer。但这会阻止音频处理,因此不幸的是不是一个选择。
ios - KVO 在尝试使用 AV Foundation 流式播放视频时遇到麻烦
目标:
我最终试图读取外部视频文件(.mp4、.mpg ...);在 AVPlayerViewController 的一个实例中。
但是我遇到了各种各样的 KVO 问题。
- AVPlayerViewController 的 KVO 观察者总是在触发,即使我没有像这里的控制台中显示的那样注册它(来源:参见下面代码列表中的 observeForKeyPath().print(key path)):
playerController.status playerController.contentDimensions playerController.playingOnExternalScreen playerController.externalPlaybackType playerController.allowsExternalPlayback playerController.hasEnabledVideo playerController.hasEnabledAudio bounds videoScaled playerController.playingOnExternalScreen view.viewWindowState bounds playerController.playing
- 我的 KVO 观察者(“timedMetadata”)没有注册。显然:
self.playerItem!.addObserver(self, forKeyPath: "timedMetadata", options: NSKeyValueObservingOptions.New, context: nil)
不工作:
a) 'observeValueForKeyPath()' 没有为这个观察者触发;b)我收到以下运行时
错误(在立即删除观察者作为测试之后):
...原因:'无法删除观察者...对于关键路径“timedMetadata”来自...,因为它没有注册为观察者。'
我想要做的就是加载一个视频 URL 并播放它。
如果缺乏补救措施,欢迎提出任何建议。
audio - 控制中心,不会暂停/播放我的音频流
希望问题转到正确的流。
我玩 HLS,即我使用 AVPlayer 从服务器播放混合内容(音频和纯视频)。
将应用程序移至后台后,我继续播放音频:我在 plist 中启用了此类功能,另外我确实存储了 Prev Player,禁用了视觉轨道,并将 AVPlayerLayer 设置为 nil。以下是方法:
和以下一个:
因此,在将应用程序移至后台,按主页按钮并激活控制中心(从按钮向上滑动,计算器、相机、灯光按钮在哪里)后,我可以设置正在播放的项目的标题,但苹果的播放器控件没有'不起作用:按暂停,播放不起作用,滑块也不起作用。当我按下按钮时,我确实收到了事件,但与此同时,尽管我正在调用 [player pause] 或更改速率,但它不会更改按钮。但是,当通过 Internet 访问音频时出现问题,或者声音缓冲区为空时,按钮会更改,它会暂停 UI。下面是设置现在播放媒体中心和添加命令的代码
所以,我的暂停命令被调用了,我调用了AVPlayer的暂停方法。但它不会停止音频流。
而且 Slider 不起作用,因此我的 seekBackwardCommand/seekForwardCommand 没有被调用。
但正如我所说,当流结束时(音频也是),控制中心上的播放器将按钮从播放更改为暂停,即它以某种方式监听音频会话的更改。
AVAudioSessionCategoryPlayback
我通过设置和设置模式调整声音类别:AVAudioSessionModeMoviePlayback
请帮助如何正确处理控制屏幕上的暂停/播放按钮,如何启用滑块?
我在 iOS9、iPhone 6 上运行我的代码。
swift - AVPlayerItem Swift 2 Nil 检查
该代码在 Swift 1.2 中运行良好,但是当我更改 Xcode 7 (Swift 2) 时,出现错误,该错误写在下面的if
语句中。
二元运算符“!=”不能应用于“AVPlayerItem”和“NilLiteralConvertible”类型的操作数
那么,我怎样才能检查AVPlayerItem
实际上是Nil
?
ios - 当 Avplayer 在约 60 秒后暂停缓冲停止时
当我在 Avplayer 实例上调用 pause() 方法时,缓冲继续,但在约 60 秒后停止。我已经在 iOS 9 和 8 上进行了测试。在 iOS 9 上,我已设置为:
在 AvplayerItem 上。我播放 mp4 和带有 m3u8 文件的实时 http 流,但结果是一样的。
ios9 - - copyPixelBufferForItemTime:itemTimeForDisplay: 空值
我遇到的问题是,当我使用 iOS9 sdk 编译我的应用程序时,当我的应用程序尝试CVPixelBufferRef
从一个函数中获取一个时,当加载视频并创建所有实例时AVPlayerItemVideoOutput
,- copyPixelBufferForItemTime:itemTimeForDisplay:
我不时得到一个空值。
使用 iOS 8,我的应用程序运行良好,但使用 iOS9 时出现问题,即使应用商店中可供下载且使用 iOS 8 SDK 编译的应用程序版本在安装时也会出现同样的问题IOS9。
当问题发生并且我得到一个 nullgetCVPixelBufferRef
时,如果我按下主页按钮并且应用程序在我再次打开应用程序并变为活动状态时进入后台,AVPlayerItemVideoOutput
那么给我 null 的实例CVPixelBufferRef
开始正常工作并且问题得到解决。
这是一个 youtube 视频,我在其中复制了该问题:
https://www.youtube.com/watch?v=997zG08_DMM&feature=youtu.be
以下是创建所有项目实例的示例代码:
这是给我空像素缓冲区的示例代码