ios - 尝试使用 AirPlay 转换本地视频文件返回 'externalPlaybackNotSupportedForAsset' (-11870)

标签 ios swift video airplay avasset

我目前在使用 AVPlayer 和 AVAsset 时遇到了一些麻烦,以便使用 AirPlay 将视频转换到外部屏幕。

添加 AVRoutePickerView 以获得 AirPlay 按钮后,我能够成功地将视频转换到使用 AirPlay,从远程 URL 创建一个 AVAsset。

如果我对之前从应用程序下载的视频文件(并且它仍在内部应用程序存储中)尝试相同的操作,AVPlayer 会失败并给我一个错误代码 (-11870)。在未启用 AirPlay 的情况下,本地视频仍能正常播放。

经过几次搜索,我发现错误代码指的是 externalPlaybackNotSupportedForAsset ,尽管没有对此或任何提及此错误的进一步解释。

我偶然发现 this issue关于 AVAssetReferenceRestrictions 并认为它可以帮助我解决问题,但即使更改了限制参数或设置了选项:参数为 初始化 AVAsset 对象时不起作用。

值得注意的是,使用 Google Cast 进行转换也不适用于本地文件,而远程视频文件可以正确转换。

有谁知道如何处理这个问题?

我使用的是 XCode 11 和装有 iOS 13.5.1 的 iPhone 6S。

亲切的问候

最佳答案

对于那些只想播放本地音频文件(即音乐)的人,请务必设置 AVPlayer 的 allowsExternalPlaybackfalse .通过设置该标志,AirPlay 可以正常播放本地文件。

关于ios - 尝试使用 AirPlay 转换本地视频文件返回 'externalPlaybackNotSupportedForAsset' (-11870),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62430574/

相关文章:

javascript - HTML5 视频 : Modify http range request headers

ios - 绘制一个真正的1像素线,iOS7

ios - 你可以在应用程序屏幕启动期间运行任何东西吗?

ios - 如何在实体中保存多个人(CoreData)

ios - 使用自定义 tableviewcell 以编程方式初始化 UITableViewController 的子类

swift - WKWebView 需要 URL 吗?

php - 使用 php 检查两个视频是否相同

javascript - 使用 JavaScript 停止所有 HTML5 音频/视频

iphone - 防止在将 XML 转换为字典时创建额外的对象

ios - Swift dismiss modal view on tableView select(控制流的最佳实践)