根本问题
在iOS中搜索时,我们的视频会缓冲很多.它比我们的网络播放器缓冲得更多,它可以在临时存储中保存已经观看的片段的副本.
期望的解决方案
在设备的磁盘上本地缓存视频片段.我们很好地缓存单一质量并且总是重播它.
拦截器
我们找不到在AVFoundation/AVPlayer中执行缓存的方法.
我们尝试过什么
使用AVPlayer拦截网络请求的两种方法.
不适用于HLS.您可以通过实现AVAssetResourceLoaderDelegate来加载m3u8文件,它允许您通过身份验证或解密响应,但无法加载.ts文件.这是我们尝试的代码:https: //gist.github.com/nathanhillyer/84e46152d7c4c88183b6
.ts文件请求.AVURLAsset实际上避免被截获.不知何故,网络请求只是没有被捕获.(不知道为什么)
avfoundation video-streaming http-live-streaming ios avplayer
我们有一个于 2013 年编写并发布的代码库,但在 iOS 9 中,SKScene当presentScene:transition:消息发送到我们的SKView. 他们SKScene收到didMoveToView:消息,但场景本身从未显示在屏幕上。
这是我们尝试过的:
Metal通过禁用Info.plist[SKTransition transitionWithCIFilter:duration:]而不是预定义的动画zPositionUIView动画(这使得我们的SKNodes 消失)pausesOutgoingScene为YESSKTransition上述尝试均未解决该问题。请注意,所有内容在 iOS 8 中都能正常转换
这是一些不起作用的示例代码:
-(BOOL)presentTitle {
if (!titleSceneLoaded) {
return NO;
}
[skView presentScene:titleScene transition:[SKTransition fadeWithDuration:1.0]];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
将其更改为这样可以使其再次工作(无需转换):
-(BOOL)presentTitle {
if (!titleSceneLoaded) {
return NO;
}
[skView presentScene:titleScene];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
关于如何定位/修复/解决该错误有什么建议吗?
目前在应用程序中使用枚举作为文件名列表,以便能够使用智能感知并确保文件名是现有文件之一(枚举可以防止拼写错误并且必须逐字记住每个文件名).枚举中目前有107个文件.为了获得音频文件名,使用了枚举值ToString()方法.
现在有一种情况需要根据数据库调用的结果添加一些文件名.枚举是不可能的,并且需要进行大量的应用程序重构(更改所有采用枚举取字符串的方法).
首先应该做些什么,或者枚举是这个用例的最佳选择?
c# ×2
ios ×2
.net ×1
adorner ×1
avfoundation ×1
avplayer ×1
enums ×1
ios9 ×1
objective-c ×1
sprite-kit ×1
wpf ×1