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

播放器优化生命周期,优化播放器分配、优化小窗

parent 65cd18a7
...@@ -277,7 +277,10 @@ extension YHLifeViewController: UICollectionViewDelegate, UICollectionViewDataSo ...@@ -277,7 +277,10 @@ extension YHLifeViewController: UICollectionViewDelegate, UICollectionViewDataSo
return return
} }
let item = self.viewModel.liveArr[indexPath.row] let item = self.viewModel.liveArr[indexPath.row]
YHPlayerManager.shared.enterLive(from: nil, id: item.id, url: item.pull_url, title: item.live_title, roomId: item.room_id) // YHPlayerManager.shared.enterLive(from: nil, id: item.id, url: item.pull_url, title: item.live_title, roomId: item.room_id)
//let url = "https://pull-flv-l13.douyincdn.com/stage/stream-116307521507688888_ld5.flv?expire=1733728207&sign=cef0df720ef0dbe3126675d72dcacec2&major_anchor_level=common&abr_pts=-800&_session_id=037-2024120215100750CB84D802B8201D3D81.1733123408338.51633&rsi=1"
let playbackInfo = YHPlayerManager.PlaybackInfo(id: item.id, url: item.pull_url, title: item.live_title, roomId: item.room_id, isLive: true, scene: .fullscreen)
YHPlayerManager.shared.enterLive(from: nil, playbackInfo: playbackInfo)
} }
} }
......
...@@ -141,7 +141,8 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -141,7 +141,8 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// // TODO: - alex测试 // // TODO: - alex测试
// if index == 1 { // if index == 1 {
// let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell // let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell
// YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, id: 23, url: "https://pull-flv-l6.douyincdn.com/stage/stream-116295918585905183.flv?k=e21f1ae1e7591521&t=1733551151&major_anchor_level=common&abr_pts=-800&_session_id=037-202411301359108030CAEAC1F742805E6D.1732946351732.18942&rsi=1", title: nil, roomId: nil, type: .secondary) // let playbackInfo = YHPlayerManager.PlaybackInfo(id: 40, url: "https://pull-flv-l13.douyincdn.com/stage/stream-116307521507688888_ld5.flv?expire=1733728207&sign=cef0df720ef0dbe3126675d72dcacec2&major_anchor_level=common&abr_pts=-800&_session_id=037-2024120215100750CB84D802B8201D3D81.1733123408338.51633&rsi=1", title: nil, roomId: nil, isLive: true, scene: .fullscreen)
// YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo)
// return // return
// } // }
// // TODO: - alex测试 // // TODO: - alex测试
...@@ -223,16 +224,19 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -223,16 +224,19 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// video_url 视频链接 // video_url 视频链接
// recorded_cate_id 录播分类id // recorded_cate_id 录播分类id
let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, id: model.live_id, url: model.live_pull_url, title: nil, roomId: nil, type: .secondary) let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: model.live_pull_url, title: nil, roomId: nil, isLive: true, scene: .fullscreen)
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo)
printLog("跳转直播") printLog("跳转直播")
case 101://录播 case 101://录播
printLog("跳转录播") printLog("跳转录播")
let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell
YHPlayerManager.shared.enterVOD(from: cell?.bannerImagV, id: model.live_id, url: model.video_url, title: nil, type: .secondary) let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: model.video_url, title: nil, roomId: nil, isLive: false, scene: .fullscreen)
YHPlayerManager.shared.enterVOD(from: cell?.bannerImagV, playbackInfo: playbackInfo)
case 102://图片直播 case 102://图片直播
printLog("跳转录播") printLog("跳转录播")
let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell let cell: YHHomeBannerCollectionViewCell? = pagerView.cellForItem(at: index) as? YHHomeBannerCollectionViewCell
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, id: model.live_id, url: model.live_pull_url, title: nil, roomId: nil, type: .secondary) let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: model.live_pull_url, title: nil, roomId: nil, isLive: true, scene: .fullscreen)
YHPlayerManager.shared.enterLive(from: cell?.bannerImagV, playbackInfo: playbackInfo)
case 0://0 不需要跳转 case 0://0 不需要跳转
printLog("0 不需要跳转") printLog("0 不需要跳转")
default: default:
...@@ -266,7 +270,10 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -266,7 +270,10 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// // TODO: - alex测试 // // TODO: - alex测试
// if let cell = cell as? YHHomeBannerCollectionViewCell { // if let cell = cell as? YHHomeBannerCollectionViewCell {
// if index == 1 { // if index == 1 {
// YHPlayerManager.shared.play(url: "https://pull-flv-l11.douyincdn.com/thirdgame/stream-404525958790382412.flv?expire=1733554587&sign=d1e9f927e20f4a3fb4e2dd2a2712e256&major_anchor_level=common&abr_pts=-800&_session_id=037-20241130145626DBDEB00EB11CB388DD95.1732949787574.66743&rsi=1", inView: cell.bannerImagV, title: nil, type: .secondary) //
// let playbackInfo = YHPlayerManager.PlaybackInfo(id: 40, url: "https://pull-flv-l13.douyincdn.com/stage/stream-116307521507688888_ld5.flv?expire=1733728207&sign=cef0df720ef0dbe3126675d72dcacec2&major_anchor_level=common&abr_pts=-800&_session_id=037-2024120215100750CB84D802B8201D3D81.1733123408338.51633&rsi=1", title: nil, roomId: nil, isLive: true, scene: .banner)
// YHPlayerManager.shared.enterBanner(playbackInfo: playbackInfo, inView: cell.bannerImagV)
//
// } else { // } else {
// let player = YHPlayerManager.shared.getPlayer(.secondary) // let player = YHPlayerManager.shared.getPlayer(.secondary)
// player?.setPlayView(nil) // player?.setPlayView(nil)
...@@ -276,8 +283,10 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -276,8 +283,10 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// // TODO: - alex测试 // // TODO: - alex测试
if model.skip_url.isEmpty == false { if model.skip_url.isEmpty == false {
if let cell = cell as? YHHomeBannerCollectionViewCell { if let cell = cell as? YHHomeBannerCollectionViewCell {
if model.skip_type == 100 { if model.skip_type == 100 || model.skip_type == 102 {
YHPlayerManager.shared.play(url: model.live_pull_url, inView: cell.bannerImagV, title: nil, type: .secondary) YHPlayerManager.shared.play(url: model.live_pull_url, inView: cell.bannerImagV, title: nil, type: .secondary)
let playbackInfo = YHPlayerManager.PlaybackInfo(id: model.live_id, url: model.live_pull_url, title: nil, roomId: nil, isLive: true, scene: .banner)
YHPlayerManager.shared.enterBanner(playbackInfo: playbackInfo, inView: cell.bannerImagV)
} else { } else {
let player = YHPlayerManager.shared.getPlayer(.secondary) let player = YHPlayerManager.shared.getPlayer(.secondary)
player?.setPlayView(nil) player?.setPlayView(nil)
...@@ -302,7 +311,7 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate { ...@@ -302,7 +311,7 @@ extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
// } // }
// // TODO: - alex测试 // // TODO: - alex测试
if model.skip_url.isEmpty == false { if model.skip_url.isEmpty == false {
if model.skip_type == 100 { if model.skip_type == 100 || model.skip_type == 102 {
YHPlayerManager.shared.stop(type: .secondary) YHPlayerManager.shared.stop(type: .secondary)
} }
} }
......
...@@ -94,7 +94,8 @@ extension YHSelectLookView: UICollectionViewDelegate, UICollectionViewDataSource ...@@ -94,7 +94,8 @@ extension YHSelectLookView: UICollectionViewDelegate, UICollectionViewDataSource
return return
} }
let item = items[indexPath.row] let item = items[indexPath.row]
YHPlayerManager.shared.enterLive(from: nil, id: item.id, url: item.pull_url, title: item.live_title, roomId: item.room_id) let playbackInfo = YHPlayerManager.PlaybackInfo(id: item.id, url: item.pull_url, title: item.live_title, roomId: item.room_id, isLive: true, scene: .fullscreen)
YHPlayerManager.shared.enterLive(from: nil, playbackInfo: playbackInfo)
} }
} }
......
...@@ -31,9 +31,17 @@ class YHPlayer { ...@@ -31,9 +31,17 @@ class YHPlayer {
weak var currentPlayView: UIView? weak var currentPlayView: UIView?
private(set) var currentTitle: String? private(set) var currentTitle: String?
var isMuted: Bool {
get { playerKit.getMute() }
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) // 循环播放
} }
func setPlayView(_ view: UIView?) { func setPlayView(_ view: UIView?) {
...@@ -47,7 +55,10 @@ class YHPlayer { ...@@ -47,7 +55,10 @@ class YHPlayer {
let mediaSource = AgoraMediaSource() let mediaSource = AgoraMediaSource()
mediaSource.url = url mediaSource.url = url
mediaSource.autoPlay = true mediaSource.autoPlay = true
playerKit.open(with: mediaSource) let result = playerKit.open(with: mediaSource)
if result == 0 {
playerKit.play()
}
} }
func stop() { func stop() {
...@@ -65,6 +76,17 @@ class YHPlayer { ...@@ -65,6 +76,17 @@ class YHPlayer {
playerKit.play() playerKit.play()
} }
func reset() {
stop()
setPlayView(nil)
delegate = nil
}
func releasePlayer() {
reset()
//playerKit.destroy()
}
func getPosition() -> Int { func getPosition() -> Int {
return playerKit.getPosition() return playerKit.getPosition()
} }
......
...@@ -13,6 +13,7 @@ import AgoraRtcKit ...@@ -13,6 +13,7 @@ import AgoraRtcKit
class YHVODPlayerViewController: YHBasePlayerViewController { class YHVODPlayerViewController: YHBasePlayerViewController {
// MARK: - Properties // MARK: - Properties
private let vodId: Int private let vodId: Int
var startPosition: Int = 0
//private let viewModel = YHVideoViewModel() //private let viewModel = YHVideoViewModel()
// MARK: - Initialization // MARK: - Initialization
......
...@@ -104,9 +104,9 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget { ...@@ -104,9 +104,9 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
self.navigationController?.pushViewController(vc) self.navigationController?.pushViewController(vc)
// let url = "https://pull-flv-l13.douyincdn.com/stage/stream-116307521507688888_ld5.flv?expire=1733728207&sign=cef0df720ef0dbe3126675d72dcacec2&major_anchor_level=common&abr_pts=-800&_session_id=037-2024120215100750CB84D802B8201D3D81.1733123408338.51633&rsi=1"
// let url = "https://pull-flv-l11.douyincdn.com/thirdgame/stream-116296425803875148.flv?expire=1733558990&sign=cc69d0ac884efe3613385140611c1702&major_anchor_level=common&abr_pts=-800&_session_id=037-2024113016095034A5715FA5656D873A69.1732954190959.73911&rsi=1" // let playbackInfo = YHPlayerManager.PlaybackInfo(id: 40, url: url, isLive: true, scene: .fullscreen)
// YHPlayerManager.shared.enterLive(from: nil, id: 23, url: url) // YHPlayerManager.shared.enterLive(from: nil, playbackInfo: playbackInfo)
} }
......
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