AVPlayer не воспроизводит видео - PullRequest
0 голосов
/ 17 октября 2019

У меня есть табличное представление, и в одной из ячеек у меня есть следующий код:

import UIKit
import Foundation
import WebKit
import AVFoundation

class OnlineVideoTableViewCell: UITableViewCell {
    internal var videoPlayerSuperView = createEmptyView()

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:)")
    }

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setUpUI()
    }

    convenience init(style: UITableViewCell.CellStyle, reuseIdentifier: String?, url: String = "", title: String) {
        self.init(style: style, reuseIdentifier: reuseIdentifier)
        self.videoTitleLabel.text = title
        setUpUI()
        setUpLayout()

    }

    func setUpUI() {
        self.backgroundColor = .white
        self.translatesAutoresizingMaskIntoConstraints = false
        self.contentView.addSubview(videoPlayerSuperView)
        videoPlayerSuperView.translatesAutoresizingMaskIntoConstraints = false
        videoPlayerSuperView.backgroundColor = .smalt
    }

    func setUpLayout() {

        videoPlayerSuperView.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 2).isActive = true
        videoPlayerSuperView.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -2).isActive = true
        videoPlayerSuperView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -2 ).isActive = true
        videoPlayerSuperView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 2 ).isActive = true

    }
    override func layoutSubviews() {
        print("Playing ---->")

        self.avPlayer = AVPlayer.init(playerItem: AVPlayerItem(url: URL(string: "https://www.youtube.com/embed/0oBx7Jg4m-o")!))
        avPlayerLayer = AVPlayerLayer(player: avPlayer)
        avPlayer!.volume = 3
        avPlayer!.actionAtItemEnd = .none
        avPlayerLayer!.bounds = self.bounds
        self.videoPlayerSuperView.layer.insertSublayer(avPlayerLayer!, at: 9)
        self.avPlayer!.play()
    }
}

Я упростил ячейку, так как в ней также есть метка с заголовком среди мелких деталей (что все работаетпрекрасно).

Проблема в том, что мой код ничего не делает. Я могу видеть ячейку, я вижу большой квадрат, окрашенный моим собственным «смальтовым» цветом, где должно воспроизводиться видео, но нет ни звука, ни воспроизводимого видео.

Кроме этого, кажется, что все работаетнормально за исключением проблемы с воспроизведением.

Что я делаю не так?

...