Commit 30504666 authored by Alex朱枝文's avatar Alex朱枝文

内置playerkit设置为可空,避免SDK生成失败崩溃

parent a357ead1
...@@ -155,9 +155,9 @@ extension YHBasePlayerViewController: YHPlayerControlViewDelegate { ...@@ -155,9 +155,9 @@ extension YHBasePlayerViewController: YHPlayerControlViewDelegate {
func playerControlView(_ view: YHPlayerControlView, didSeekTo position: Float) { func playerControlView(_ view: YHPlayerControlView, didSeekTo position: Float) {
guard let player = player else { return } guard let player = player else { return }
let duration = player.playerKit.getDuration() let duration = player.getDuration()
let targetPosition = Int(Float(duration) * position) let targetPosition = Int(Float(duration) * position)
player.playerKit.seek(toPosition: targetPosition) player.playerKit?.seek(toPosition: targetPosition)
} }
func playerControlView(_ view: YHPlayerControlView, didChangeQuality quality: YHVideoQuality) { func playerControlView(_ view: YHPlayerControlView, didChangeQuality quality: YHVideoQuality) {
......
...@@ -352,7 +352,7 @@ extension YHLivePlayerViewController: YHPlayerDelegate { ...@@ -352,7 +352,7 @@ extension YHLivePlayerViewController: YHPlayerDelegate {
} }
func player(_ player: YHPlayer, didChangedToPosition position: Int) { func player(_ player: YHPlayer, didChangedToPosition position: Int) {
let duration = player.playerKit.getDuration() let duration = player.getDuration()
guard duration > 0 else { return } guard duration > 0 else { return }
let progress = Float(position) / Float(duration) let progress = Float(position) / Float(duration)
......
...@@ -25,28 +25,28 @@ protocol YHPlayerDelegate: AnyObject { ...@@ -25,28 +25,28 @@ protocol YHPlayerDelegate: AnyObject {
class YHPlayer { class YHPlayer {
weak var delegate: YHPlayerDelegate? weak var delegate: YHPlayerDelegate?
let type: YHPlayerType let type: YHPlayerType
let playerKit: AgoraRtcMediaPlayerProtocol var playerKit: AgoraRtcMediaPlayerProtocol?
private(set) var currentURL: String? private(set) var currentURL: String?
weak var currentPlayView: UIView? weak var currentPlayView: UIView?
private(set) var currentTitle: String? private(set) var currentTitle: String?
var isMuted: Bool { var isMuted: Bool {
get { playerKit.getMute() } get { playerKit?.getMute() ?? false }
set { playerKit.mute(newValue) } set { playerKit?.mute(newValue) }
} }
init(type: YHPlayerType, playerKit: AgoraRtcMediaPlayerProtocol) { init(type: YHPlayerType, playerKit: AgoraRtcMediaPlayerProtocol?) {
self.type = type self.type = type
self.playerKit = playerKit self.playerKit = playerKit
// 基础设置 // 基础设置
playerKit.setLoopCount(-1) // 循环播放 playerKit?.setLoopCount(-1) // 循环播放
} }
func setPlayView(_ view: UIView?) { func setPlayView(_ view: UIView?) {
currentPlayView = view currentPlayView = view
playerKit.setView(view) playerKit?.setView(view)
} }
func play(url: String, title: String? = nil) { func play(url: String, title: String? = nil) {
...@@ -55,25 +55,25 @@ class YHPlayer { ...@@ -55,25 +55,25 @@ class YHPlayer {
let mediaSource = AgoraMediaSource() let mediaSource = AgoraMediaSource()
mediaSource.url = url mediaSource.url = url
mediaSource.autoPlay = true mediaSource.autoPlay = true
let result = playerKit.open(with: mediaSource) let result = playerKit?.open(with: mediaSource)
if result == 0 { if result == 0 {
playerKit.play() playerKit?.play()
} }
} }
func stop() { func stop() {
playerKit.stop() playerKit?.stop()
currentPlayView = nil currentPlayView = nil
currentURL = nil currentURL = nil
currentTitle = nil currentTitle = nil
} }
func pause() { func pause() {
playerKit.pause() playerKit?.pause()
} }
func resume() { func resume() {
playerKit.play() playerKit?.play()
} }
func reset() { func reset() {
...@@ -84,18 +84,18 @@ class YHPlayer { ...@@ -84,18 +84,18 @@ class YHPlayer {
func releasePlayer() { func releasePlayer() {
reset() reset()
//playerKit.destroy() playerKit = nil
} }
func getPosition() -> Int { func getPosition() -> Int {
return playerKit.getPosition() return playerKit?.getPosition() ?? 0
} }
func getDuration() -> Int { func getDuration() -> Int {
return playerKit.getDuration() return playerKit?.getDuration() ?? 0
} }
func getPlayState() -> AgoraMediaPlayerState { func getPlayState() -> AgoraMediaPlayerState {
return playerKit.getPlayerState() return playerKit?.getPlayerState() ?? .idle
} }
} }
...@@ -124,7 +124,8 @@ class YHPlayerManager: NSObject { ...@@ -124,7 +124,8 @@ class YHPlayerManager: NSObject {
private func createPlayer(for type: YHPlayerType) -> YHPlayer { private func createPlayer(for type: YHPlayerType) -> YHPlayer {
guard let playerKit = agoraKit.createMediaPlayer(with: self) else { guard let playerKit = agoraKit.createMediaPlayer(with: self) else {
fatalError("Failed to create media player") //fatalError("Failed to create media player")
return YHPlayer(type: type, playerKit: nil)
} }
let player = YHPlayer(type: type, playerKit: playerKit) let player = YHPlayer(type: type, playerKit: playerKit)
return player return player
......
...@@ -16,7 +16,7 @@ class YHSimpleAudienceVC: UIViewController { ...@@ -16,7 +16,7 @@ class YHSimpleAudienceVC: UIViewController {
private var remoteView: UIView! private var remoteView: UIView!
// private var channelName: String = "1732950381844975000" // private var channelName: String = "1732950381844975000"
private let viewModel = YHLiveSalesViewModel() private let viewModel = YHLiveSalesViewModel()
private let liveId: Int = 37 private let liveId: Int = 40
// MARK: - Lifecycle // MARK: - Lifecycle
override func viewDidLoad() { override func viewDidLoad() {
......
...@@ -80,7 +80,7 @@ extension YHVODPlayerViewController: YHPlayerDelegate { ...@@ -80,7 +80,7 @@ extension YHVODPlayerViewController: YHPlayerDelegate {
} }
func player(_ player: YHPlayer, didChangedToPosition position: Int) { func player(_ player: YHPlayer, didChangedToPosition position: Int) {
let duration = player.playerKit.getDuration() let duration = player.getDuration() // playerKit.getDuration()
guard duration > 0 else { return } guard duration > 0 else { return }
let progress = Float(position) / Float(duration) let progress = Float(position) / Float(duration)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment