我在scrollview中添加了多个AVPlayer对象.这是第一次工作正常,但当我回到我以前的视图并再次回来时,我无法在scrollView中看到AVPlayer对象.
我需要多个AVPlayer的矩阵来显示我的视频缩略图.
请尽快帮助我
提前致谢.
我想从0.02秒开始播放相当短的视频(0.05秒).我使用下面的代码:
CMTime tolerance = CMTimeMake(0,1);
CMTime replayBeginTime = CMTimeMake(1, 50);
[player seekToTime: replayBeginTime toleranceBefore: tolerance toleranceAfter: tolerance];
[player play];
Run Code Online (Sandbox Code Playgroud)
玩家是AVPlayer*.视频从开始到结束都很好,然后我点击一个按钮返回到大约中间点,它应该从那里播放,但每次它只是重新启动视频.
我不是100%肯定我正确使用CMTimeMake.
任何帮助搞清楚我做错了什么都会非常感激.
我已按照Apple Developer Library中的建议设置了带AVPlayerLayer的自定义UIView.一切正常,但是当我将AVPlayerLayer的videoGravity设置为AVLayerVideoGravityResizeAspectFill时,看起来框架外部的部分也是可见的.它似乎也有一个阿尔法.
我尝试设置masksToBounds = YES,但它似乎没有解决问题.
有任何想法吗?
我正在尝试使用AVPlayer播放mp3(相机快门声).我已经将所有内容都删除到一个简单的按钮,当按下时,它会播放声音.所有对象都正确创建,但是当我在iPhone或iPad(都运行iOS 6)上运行应用程序时,不会产生声音.不,静音按钮未打开,音量调高.:)我可以在两台设备上的其他应用中听到声音.
我做了些蠢事吗?
- (void)playCameraShutterSound
{
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Grab" withExtension:@"mp3" ];
AVPlayer* player = [AVPlayer playerWithURL:url];
[player play];
}
Run Code Online (Sandbox Code Playgroud) 我必须使用avplayer播放mp3文件,但是当我去背景时它会停止,我如何保持它在背景状态下播放.任何建议都将受到高度赞赏.谢谢.
我正在尝试为iPhone或iPad开发一个简单的音频播放器应用程序.我正在处理后台模式并控制锁定屏幕上的播放,但我无法在锁定屏幕上设置有关当前音乐曲目(艺术作品,专辑等)的数据,就像在默认的iOS音乐播放器上一样.我怎么能做到这一点?任何帮助都提前感谢,谢谢.
我有一个简单的例子.1)我在界面构建器中创建AVPlayerViewController 2)我创建自己的自定义类扩展AVPlayerViewController 3)我写了几行代码
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://188.143.133.203/106.3/index.m3u8")
self.player = AVPlayer(URL: url!)
self.player?.play()
}
Run Code Online (Sandbox Code Playgroud)
我的工作效果更好,但如果设备状态处于静音模式,那么我的视频播放没有声音.
我托盘手动打开播放器中的声音,如下所示:
self.player?.muted = false
self.player?.volume = 1.0
Run Code Online (Sandbox Code Playgroud)
但它也不行.
我将全局变量时间观察器设置为:
self.timeObserver = self.avPlayer?.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.5, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: DispatchQueue.main) { [weak self] time in
guard let weakSelf = self else {
return
}
// updating label with time
}
Run Code Online (Sandbox Code Playgroud)
当视图关闭时,我打电话给:
if self.avPlayer != nil {
self.avPlayer!.removeTimeObserver(self.timeObserver)
}
Run Code Online (Sandbox Code Playgroud)
但是那个应用程序崩溃说:
***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'您没有提供对-addPeriodicTimeObserverForInterval返回的对象的引用:queue:usingBlock:或-addBoundaryTimeObserverForTimes:queue:usingBlock:'
请告诉我,我做错了什么?谢谢
我想调整Avplayer率,我可以帮忙
[_avplayer play];
[_avplayer setRate:1.5];
Run Code Online (Sandbox Code Playgroud)
同样禁用音轨,当它小于2.0时运行良好.但是当我们应用它大于2X时,会导致Choppy或jerky视频.
当我搜索这个 - 我发现这一个链接暗示相同的行为
https://developer.apple.com/library/content/qa/qa1772/_index.html
当以指定速率播放的数据速率或其他处理要求超过AVFoundation跟上的能力时,以大于2.0的速率播放可能导致回放不稳或不稳定.在这些情况下,AVPlayer会自动降低播放质量以便跟上,采用一系列后备策略,具体取决于主要条件.一层退化是在视频子流内仅解码和显示I帧,这确实看起来很不稳定.
任何人都可以帮忙,如果是这样的话,我应该用什么方法来达到目的?
编辑:在底部添加的其他信息
我有一个基于文档的沙盒应用程序,该程序将用户选择的QuickTime影片加载到AVPlayer中,并且一切运行正常。
现在,我正在升级代码,以便它将使用Security Scoped书签来获取URL,而不仅仅是存储URL字符串,以便持久存储将允许在重新启动应用程序时加载影片。创建书签后,它将存储在托管对象的Data变量中。
由于某些原因,这破坏了AVPlayer。虽然我已经从用户选择的URL创建了书签,并且可以在重新启动应用程序时从书签中解析URL,但是电影无法正确地加载到AVPlayer中,我不知道为什么...我已经确认从书签解析的URL确实指向电影文件。
我还为项目添加了适当的权利。
这是我的代码:
用户选择要加载的电影并创建书签的功能
@IBAction func loadMovie(_ sender: Any) {
let openPanel = NSOpenPanel()
openPanel.title = "Select Video File To Import"
openPanel.allowedFileTypes = ["mov", "avi", "mp4"]
openPanel.begin { (result: NSApplication.ModalResponse) -> Void in
if result == NSApplication.ModalResponse.OK {
self.movieURL = openPanel.url
self.player = AVPlayer.init(url: self.movieURL!)
self.setupMovie()
if self.loadedMovieDatabase.count > 0 {
print("Movie Object Exists. Adding URL String")
self.loadedMovieDatabase[0].urlString = String(describing: self.movieURL!)
} else {
print("No Movie Object Exists Yet. Creating one and adding URL String")
let …Run Code Online (Sandbox Code Playgroud)