问题标签 [avkit]

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 回答
598 浏览

swift - 当我尝试与此 YTVimeoExtractor 一起使用时,AVPlayer 无法正常工作

当我尝试通过 AVPlayer 播放视频时,视频会加载一段时间(加载符号出现在播放器的顶部)然后突然停止并显示带有交叉的播放图标。不知道有什么问题?我可以获取视频信息,但无法播放视频。我会展示我所做的。任何人都可以回答我的问题,非常感谢帮助。

这是我在模拟器上得到的。

在此处输入图像描述

我用这个https://github.com/lilfaf/YTVimeoExtractor one 来做这个示例项目。你可以试一试,然后告诉我。

0 投票
0 回答
466 浏览

ios - NSURLSession 性能 - 可能的竞争条件或阻塞的线程?

我的 iOS 应用程序遇到了一些性能问题,这是我第一次使用 NSURLSession 和 NSURLRequest,虽然我试图尽可能多地通知自己,但我还是碰壁了调试我面临的性能问题。

所以这就是我得到的:我有一个用 Swift 2 编写的 iOS 9 应用程序,我正在通过 Get、Post 和 Put Http 请求与 NodeJS/Express 服务器通信,使用 NSURLRequest 和 NSURLMutableRequest。我正在发送请求以获取一组对象(总共不超过 12000 个字节),但是这些请求需要花费大量时间(有时长达一分钟)。我已将日志记录添加到 nodeJs 服务器,我可以看到处理请求的时间不超过 30 毫秒。

注意:我不确定这是否相关,但我正在使用单例“帮助程序”类来发出我所有的 api 请求并解析结果(保存身份验证令牌,解析 JSON 对象并将它们保存到核心数据,保存用户首选项到 NSUserDefaults 等),我使用的是单例,因此我可以静态访问它,并且我正在解析所有数据,而不在单例的属性中保存除服务器的 URL 和 NSURLSession 之外的任何内容。

这是我的代码的样子。

getRequest 方法返回一个格式化的 NSMutableURLRequest,如下所示:

完成处理程序将解析返回的对象并将解析后的对象通知主线程,如下所示:

我也尝试在主线程上解析结果对象,但这似乎没有什么区别。

如果你好奇,这就是我向主线程发送数据的方式:

我发现了什么: 没有任何意义!我尝试过调试,但我无法确定问题出在哪里,当调试器点击我的“getAllObjects”方法时,服务器记录它接收并处理之前可能需要几秒钟(最多 45 秒)请求(通常需要大约 30 毫秒)。据我所知,所有请求类型都会发生这种情况。此外,一旦应用程序取回数据(超快),解析它需要很长时间(大约 4 秒),并且只有大约 11kbs。

我还尝试更改请求缓存策略,以防应用程序与服务器检查缓存记录的有效性,我使用了 ReloadIgnoringLocalAndRemoteCachedData也不起作用。

现在,这听起来像是内存泄漏 如果我在任何时候暂停应用程序(使用它几分钟后),我可以看到相关数量的线程。老实说,我对 IOS 不太熟悉,所以我不确定这些线程是来自模拟器还是它们都属于应用程序,应用程序在 AVPlayer 类中流式传输视频内容(没有延迟问题),我相信许多这些线程都与此有关,但是我不确定这是否正常,这是我的意思的屏幕截图(注意滚动条 T_T)屏幕截图

可能是我有内存泄漏或一些僵尸线程大大降低了我的应用程序的性能?唯一真正明显的延迟仅发生在 HTTP 请求上,这很奇怪,我的 UI 的其他部分没有滞后,我的应用程序中的其他功能也没有受到性能问题的影响(甚至是来自 url 的流式视频内容)。

分析此性能问题以查明问题根源的最佳方法是什么?

更新 1: 感谢 Scriptable 的建议,我设法解决了线程问题(由多个 AVPlayer 做他们的事情引起)。然而,请求的性能并没有得到解决。

值得指出的是,服务器实际上与我发出请求的国家/地区位于同一国家/地区,当从浏览器发出请求或从命令行发出请求时,请求几乎是立即的。

此外,当我随机暂停应用程序(等待请求发生时)我可以在某些线程中看到“mach_msg_trap”,我对此并不熟悉,但我相信这可能是一种竞争条件?还是僵局?

0 投票
0 回答
293 浏览

tvos - AVPlayerViewController 中的自定义菜单项

在 tvOS 上,是否可以将自定义项目添加到AVPlayerViewController信息/字幕/音频菜单?不仅仅是添加元数据项,而是一个全新的部分。我想在字幕之后提供一个额外的菜单项,用于播放速度选择,可选择 1.0x、2.0x 等选项。

如果这是不可能的AVPlayerViewController,是否可以使用嵌入的自定义视图,AVPlayer就像在 iOS 上一样?

0 投票
3 回答
7178 浏览

ios - 播放完成后如何自动关闭 AVPlayer?

我有一个使用 AVPlayerViewController 播放本地视频的应用程序。但是当视频播放完毕时,我希望它自动关闭(就像 MPMoviePlayerViewController 过去所做的那样)。

发布此问题后,我设法解决了这个问题,这部分归功于下面的答案,部分来自苹果的“指南和示例代码”。

这是对我有用的代码:

0 投票
0 回答
1051 浏览

ios - 致命异常:UIViewControllerHierarchyInconsistency child viewcntrler

我在实时应用程序中面临以下崩溃。在此处发布 Crashlytics 的崩溃报告。你能指导我这件事吗?

.


我们不能强制转换的原因是 Easy Mock 将动态创建一个实现 SqlMapClient 类的类,并且它没有任何关于实现类(SqlMapClientImpl)的信息,所以一个便宜的技巧可以是创建一个实现 SqlMapClient 接口的类和扩展 SqlMapClientImpl 类,这可能有效。

0 投票
1 回答
106 浏览

swift - AVPlayer 自动播放但不应该(Swift)

我在 macOS 应用程序中创建了一个非常简单的 AVPlayer。

它基本上可以正常工作,但是播放器在启动时会自动播放,这是不应该的。即使我playerView.player?.pause()在末尾添加viewDidLoad,它也会自动播放。

我究竟做错了什么?

0 投票
5 回答
10684 浏览

ios - 电影完成后关闭 AVPlayer

我正在制作一个简单的 iPad 应用程序来在按下按钮时播放电影。电影播放,电影结束后我想关闭 AVPlayerView 以便它返回主屏幕。目前,当视频完成时,它会停留在最后一帧。我的 ViewController.Swift 目前。

如您所见,我认为actionAtItemEnd 中可能有一些东西,但我不确定如何实现它。谢谢你。

0 投票
1 回答
52 浏览

swift - 将swift 2视频代码转换成swift 3视频代码

下面的代码显示了一个视频。它在 swift 2 中完美运行,但在 swift 3 xcode 中表明 MPMoivePlayerController 代码已被淘汰。我只是希望我的视频像在 swift 2 中一样显示在 swift 3 中。

0 投票
0 回答
76 浏览

objective-c - swift加水印后视频不清晰

我只是在视频中添加水印。我添加到视频并加载到照片库中。

之后我尝试播放,该视频文件完全模糊。但是,文件播放得很好。添加了水印。

我从https://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos下载了项目并运行它。

我正在模拟器中尝试这个。请指导我。

前:

在此处输入图像描述

后:

在此处输入图像描述

0 投票
1 回答
313 浏览

objective-c - 带有 tvOS 构建目标的 Objective C 中的 AVPlayerItem.externalMetaData

我正在为 tvOS 应用程序实现一项功能,但它不断因无法识别的选择器而崩溃。

该应用程序VideoPlayerBase在 objc 中有一个类,iOSVideoPlayerController.swift和 tvOSVideoPlayerController.swift都继承自基类。加载视频后,我需要设置 AVPlayerItem.externalMetaData 。但是,当我尝试调用 AVPlayerItem.externalMetaData 时,它会崩溃。

如果我在控制台中设置断点BasePlayerController.mpo player.currectItem.externalMetaData在控制台中执行,我会收到此错误

错误:在“AVPlayerItem *”类型的对象上找不到属性“externalMetadata”

error: 1 解析表达式错误

然后它将与这条线崩溃

调用堆栈:

但是,如果我在行之前或行上设置断点self.playerController.player.currentItem?.externalMetadata = episode.metadataItemspo在控制台中执行po self.playerController.player.currentItem?.externalMetadata。我会得到这个

从这条线继续不会崩溃任何东西!!!!!!!

我知道该externalMetadata属性是仅 tvOS 的属性,并且我有AVFoundationAVKit都导入到我的 objc 文件和 swift 文件中。

我昨天花了一整天都没有解决这个问题:(