【问题标题】:Videos stop loading in UITableView cell in AVPlayerController after scrolling through the tableView滚动 tableView 后,视频在 AVPlayerController 的 UITableView 单元格中停止加载
【发布时间】:2017-03-14 10:05:03
【问题描述】:

我有一个表格视图,我正在尝试加载视频并在 viewdidLoad() 上播放它们

以下是在 Viewdidload 上加载视频的代码

 func playVideo(viewController:UIViewController,videoPath:String!, view: UIView) {

        guard let path = videoPath else {
            debugPrint("video.m4v not found")
            return
        }

        let url = NSURL.fileURL(withPath: path)
        let item = AVPlayerItem(url: url)
        self.player = AVPlayer(playerItem: item)
        self.videoPlayerController = AVPlayerViewController()
        self.videoPlayerController.player = self.player
        videoPlayerController.view.frame = view.bounds
        viewController.addChildViewController(videoPlayerController)
        view.addSubview(videoPlayerController.view)

    }}

在 cellForRowAtIndexPath 内部我正在做以下事情

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        cell = tableView.dequeueReusableCell(withIdentifier: "trendViewControllerCell", for: indexPath) as! TrendViewTableCell
        cell.videoName.text = feeds[indexPath.row].videoTitle
        cell.artistName.text = feeds[indexPath.row].artistName
        player.playVideo(viewController: self, videoPath: Bundle.main.path(forResource: feeds[indexPath.row].videoUrl, ofType:"mp4")!, view: cell.videoView)

        return cell
    }

我正在尝试将 AVPlayerController 调整为 tableView 单元格中的视图。

在 viewDidLoad 上,我可以看到单元格中所有视图的 AVPlayer 控制器。

大约有 15 个视频

当我进一步向下滚动时,我看到一个取消的按钮,并且没有加载任何视频。有时会加载所有视频,有时则不会。

但是我在模拟器中没有看到这个问题。

我该如何解决这个问题?任何帮助将不胜感激

【问题讨论】:

    标签: ios swift uitableview avplayer


    【解决方案1】:

    抱歉,您的方法不是一个好主意:为每个单元格设置一个 AVPlayer 非常繁重,您可能会遇到很多相关问题,例如每次单元格出现时重新加载视频、滚动不顺畅、性能不佳等。

    另外请记住,AVPlayer 总是在主线程中实例化,因此在滚动时您不应实例化任何其他播放器视频,否则您会忙于主线程(与用户界面更新!)。

    像 Instagram 和 Facebook 一样,这里的常用方法是有一个 AVPlayer 视频的通用实例以及每个视频的第一帧或最后一帧的图像:当您的单元格完全可见时,将图像覆盖您的视频播放器视图使用replaceCurrentItemWithPlayerItem 传递视频网址。

    这不是一件容易和快速的事情,所以慢慢来,耐心等待,随着时间的推移,您将构建您的解决方案;您可以找到有关这些问题的更多信息:

    【讨论】:

    • 我希望表格视图单元格通过播放和暂停选项可见。所以我使用的是 AVPlayerController。我应该使用 AVlayer 吗?您还可以提供一个示例,当用户单击表格视图内的视频视图时,我可以播放视频,并且这些视频会在用户滚动屏幕时暂停
    • AVPlayerController 是一个 UIViewController 包含一个 AVPlayer ;)
    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    相关资源
    最近更新 更多