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

Posted

技术标签:

【中文标题】AVPlayer 自动播放但不应该(Swift)【英文标题】:AVPlayer autoplays but should not (Swift) 【发布时间】:2016-10-15 20:51:23 【问题描述】:

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

import Cocoa
import AVKit
import AVFoundation

class ViewController: NSViewController 

@IBOutlet var playerView: AVPlayerView!

override func viewDidLoad() 

    super.viewDidLoad()

    let videoPath = URL(fileURLWithPath: "myPath/myFile.mp4")
    let videoPlayer = AVPlayer(url: videoPath)
    playerView.player = videoPlayer

    


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

我做错了什么?

【问题讨论】:

【参考方案1】:

您至少应该将您的AVPlayer 放入ViewWillAppear() 函数中,暂停playerView.player 会暂停您的整个视图——而是暂停videoPlayer

videoPlayer.pause()

playerView.player = videoPlayer 之后添加应该可以工作;您的代码将是:

override func viewWillAppear() 
    super.viewWillAppear()

    let videoPath = URL(fileURLWithPath: "myPath/myFile.mp4")
    let videoPlayer = AVPlayer(url: videoPath)
    playerView.player = videoPlayer
    videoPlayer.pause()

【讨论】:

非常感谢!代码在viewWillAppear 中运行良好,即使没有.pause() 行,视频现在也不会自动播放。你能解释一下为什么会有所不同吗? ViewDIdLoad 加载视图是否已加载,而 ViewWillAppear 在视图已完全转换到屏幕上时调用,这意味着它不是“隐藏”的,没有隐藏祖先,并且在一个有序的窗口中——默认行为是什么都不做。

以上是关于AVPlayer 自动播放但不应该(Swift)的主要内容,如果未能解决你的问题,请参考以下文章

swift中的AVPlayer状态监听器

当您离开视图时如何在 Swift 中停用 AVPlayer

本地文件使用 AVAudioPlayer 播放,但不使用 AVPlayer?

AVPlayer 在 Swift 中横向播放视频

AVPlayer 不播放 URL 声音 Swift 3

在 AVPlayer [Swift] 中播放 MPMediaItemCollection 中的项目