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

添加测试环境直播流状态

parent 060a6f28
......@@ -64,6 +64,17 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
}
return vc
}()
private lazy var videoStatsLabel: UILabel = {
let label = UILabel()
label.textColor = .white
label.font = .PFSC_R(ofSize: 13)
label.numberOfLines = 0
label.lineBreakMode = .byCharWrapping
label.backgroundColor = .lightGray
label.alpha = 0.7
return label
}()
// MARK: - Initialization
......@@ -134,6 +145,14 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
bottomInputBar.giftButtonClickEvent = { [weak self] in
self?.showGoods()
}
#if DEBUG || TESTENV
playerView.addSubview(videoStatsLabel)
videoStatsLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.top.equalToSuperview().offset(100)
make.width.equalTo(300)
}
#endif
}
private func setupStateViewController() {
......@@ -178,7 +197,7 @@ class YHLivePlayerViewController: YHBasePlayerViewController {
// 更新顶部栏信息
topBarView.setupTopBarView(
headUrl: liveDetail.avatar,
nickname: liveDetail.hxNickname,
nickname: liveDetail.account,
count: liveDetail.access_num
)
playbackInfo?.channelId = liveDetail.rtmp_channel
......@@ -576,4 +595,12 @@ extension YHLivePlayerViewController: YHPlayerDelegate {
func player(_ player: YHPlayer, didReceiveVideoSize size: CGSize) {
// 处理视频尺寸变化,如果需要的话
}
func player(_ player: YHPlayer, remoteVideoStats stats: AgoraRtcRemoteVideoStats) {
#if DEBUG || TESTENV
DispatchQueue.main.async {
self.videoStatsLabel.text = "width:\(stats.width),height:\(stats.height)\nreceivedBitrate:\(stats.receivedBitrate)\nreceivedFrameRate:\(stats.receivedFrameRate)\ndecoderOutputFrameRate:\(stats.decoderOutputFrameRate)\nrendererOutputFrameRate:\(stats.rendererOutputFrameRate)\nframeLossRate:\(stats.frameLossRate)"
}
#endif
}
}
......@@ -14,11 +14,7 @@ import UIKit
class YHMainChannelDelegate: NSObject, AgoraRtcEngineDelegate {
var channelId: String?
weak var player: YHPlayer?
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinChannel channel: String, withUid uid: UInt, elapsed: Int) {
printLog("$$$$###main channel: local user join room \(channelId ?? ""): \(uid) \(elapsed)ms")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) {
guard let channelId = channelId,
let player = player,
......@@ -34,8 +30,7 @@ class YHMainChannelDelegate: NSObject, AgoraRtcEngineDelegate {
}
func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) {
printLog("$$$$###main channel: remote user left: \(uid) reason \(reason)")
//printLog("$$$$###main channel: remote user left: \(uid) reason \(reason)")
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = uid
videoCanvas.view = nil
......@@ -44,12 +39,23 @@ class YHMainChannelDelegate: NSObject, AgoraRtcEngineDelegate {
}
func rtcEngine(_ engine: AgoraRtcEngineKit, videoSizeChangedOf sourceType: AgoraVideoSourceType, uid: UInt, size: CGSize, rotation: Int) {
printLog("$$$$###videoSizeChangedOf: \(size)")
//printLog("$$$$###videoSizeChangedOf: \(size)")
if let player = player {
player.delegate?.player(player, didReceiveVideoSize: size)
}
}
func rtcEngine(_ engine: AgoraRtcEngineKit, remoteVideoStats stats: AgoraRtcRemoteVideoStats) {
//printLog("$$$$###remoteVideoStats FrameRate: \(stats) receivedBitrate: \(stats.receivedBitrate), receivedFrameRate: \(stats.receivedFrameRate)")
if let player = player {
player.delegate?.player(player, remoteVideoStats: stats)
}
}
/*
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinChannel channel: String, withUid uid: UInt, elapsed: Int) {
//printLog("$$$$###main channel: local user join room \(channelId ?? ""): \(uid) \(elapsed)ms")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoFrameOfUid uid: UInt, size: CGSize, elapsed: Int) {
printLog("$$$$###firstRemoteVideoFrameOfUid: \(size)")
}
......@@ -73,59 +79,17 @@ class YHMainChannelDelegate: NSObject, AgoraRtcEngineDelegate {
func rtcEngineConnectionDidLost(_ engine: AgoraRtcEngineKit) {
printLog("$$$$###rtcEngineConnectionDidLost")
}
func rtcEngineConnectionDidBanned(_ engine: AgoraRtcEngineKit) {
printLog("$$$$###rtcEngineConnectionDidBanned")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, networkTypeChanged type: AgoraNetworkType) {
printLog("$$$$###networkTypeChanged type:\(type)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, permissionError type: AgoraPermissionType) {
printLog("$$$$###permissionError type:\(type)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, connectionChangedTo state: AgoraConnectionState, reason: AgoraConnectionChangedReason) {
printLog("$$$$###connectionChangedTo state:\(state) reason: \(reason)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, reportRtcStats stats: AgoraChannelStats) {
printLog("$$$$###reportRtcStats:\(stats)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, lastmileQuality quality: AgoraNetworkQuality) {
printLog("$$$$###lastmileQuality:\(quality)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, lastmileProbeTest result: AgoraLastmileProbeResult) {
printLog("$$$$###lastmileProbeTest:\(result)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, didOccur errorType: AgoraEncryptionErrorType) {
printLog("$$$$###didOccur errorType:\(errorType)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, rtmpStreamingChangedToState url: String, state: AgoraRtmpStreamingState, reason: AgoraRtmpStreamingReason) {
printLog("$$$$###rtmpStreamingChangedToState:\(state) url: \(url)")
}
*/
}
class YHSecondaryChannelDelegate: NSObject, AgoraRtcEngineDelegate {
var channelId: String?
weak var player: YHPlayer?
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinChannel channel: String, withUid uid: UInt, elapsed: Int) {
printLog("$$$$###secondary channel: local user join room \(channelId ?? ""): \(uid) \(elapsed)ms")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) {
guard let channelId = channelId,
let player = player,
let view = player.currentPlayView else { return }
printLog("$$$$###secondary channel: remote user join room \(channelId): \(uid) \(elapsed)ms")
//printLog("$$$$###secondary channel: remote user join room \(channelId): \(uid) \(elapsed)ms")
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = uid
videoCanvas.view = view
......@@ -140,9 +104,7 @@ class YHSecondaryChannelDelegate: NSObject, AgoraRtcEngineDelegate {
func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) {
guard let channelId = channelId,
let player = player else { return }
printLog("$$$$###secondary channel: remote user left: \(uid) reason \(reason)")
//printLog("$$$$###secondary channel: remote user left: \(uid) reason \(reason)")
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = uid
videoCanvas.view = nil
......@@ -155,11 +117,21 @@ class YHSecondaryChannelDelegate: NSObject, AgoraRtcEngineDelegate {
}
func rtcEngine(_ engine: AgoraRtcEngineKit, videoSizeChangedOf sourceType: AgoraVideoSourceType, uid: UInt, size: CGSize, rotation: Int) {
printLog("$$$$###videoSizeChangedOf: \(size)")
//printLog("$$$$###videoSizeChangedOf: \(size)")
if let player = player {
player.delegate?.player(player, didReceiveVideoSize: size)
}
}
func rtcEngine(_ engine: AgoraRtcEngineKit, remoteVideoStats stats: AgoraRtcRemoteVideoStats) {
//printLog("$$$$###remoteVideoStats FrameRate: \(stats) receivedBitrate: \(stats.receivedBitrate), receivedFrameRate: \(stats.receivedFrameRate)")
if let player = player {
player.delegate?.player(player, remoteVideoStats: stats)
}
}
/*
func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinChannel channel: String, withUid uid: UInt, elapsed: Int) {
printLog("$$$$###secondary channel: local user join room \(channelId ?? ""): \(uid) \(elapsed)ms")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoFrameOfUid uid: UInt, size: CGSize, elapsed: Int) {
printLog("$$$$###firstRemoteVideoFrameOfUid: \(size)")
......@@ -184,40 +156,5 @@ class YHSecondaryChannelDelegate: NSObject, AgoraRtcEngineDelegate {
func rtcEngineConnectionDidLost(_ engine: AgoraRtcEngineKit) {
printLog("$$$$###rtcEngineConnectionDidLost")
}
func rtcEngineConnectionDidBanned(_ engine: AgoraRtcEngineKit) {
printLog("$$$$###rtcEngineConnectionDidBanned")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, networkTypeChanged type: AgoraNetworkType) {
printLog("$$$$###networkTypeChanged type:\(type)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, permissionError type: AgoraPermissionType) {
printLog("$$$$###permissionError type:\(type)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, connectionChangedTo state: AgoraConnectionState, reason: AgoraConnectionChangedReason) {
printLog("$$$$###connectionChangedTo state:\(state) reason: \(reason)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, reportRtcStats stats: AgoraChannelStats) {
printLog("$$$$###reportRtcStats:\(stats)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, lastmileQuality quality: AgoraNetworkQuality) {
printLog("$$$$###lastmileQuality:\(quality)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, lastmileProbeTest result: AgoraLastmileProbeResult) {
printLog("$$$$###lastmileProbeTest:\(result)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, didOccur errorType: AgoraEncryptionErrorType) {
printLog("$$$$###didOccur errorType:\(errorType)")
}
func rtcEngine(_ engine: AgoraRtcEngineKit, rtmpStreamingChangedToState url: String, state: AgoraRtmpStreamingState, reason: AgoraRtmpStreamingReason) {
printLog("$$$$###rtmpStreamingChangedToState:\(state) url: \(url)")
}
*/
}
......@@ -26,6 +26,11 @@ protocol YHPlayerDelegate: AnyObject {
func player(_ player: YHPlayer, didChangedToPosition position: Int)
func player(_ player: YHPlayer, didReceiveVideoSize size: CGSize)
func player(_ player: YHPlayer, didChangedTo positionMs: Int, atTimestamp timestampMs: TimeInterval)
func player(_ player: YHPlayer, remoteVideoStats stats: AgoraRtcRemoteVideoStats)
}
extension YHPlayerDelegate {
func player(_ player: YHPlayer, remoteVideoStats stats: AgoraRtcRemoteVideoStats) {}
}
// MARK: - 播放器实例封装
......
......@@ -103,12 +103,6 @@ class YHMyViewController: YHBaseViewController, ConstraintRelatableTarget {
if !checkLogin() { return }
let vc = YHMySettingViewController()
self.navigationController?.pushViewController(vc)
// let url = "https://pull-flv-f1-admin.douyincdn.com/thirdgame/stream-7443723341506054922_md.flv?keeptime=00093a80&wsSecret=cf2c048a5bceb7669e37b229e807c0e2&wsTime=674d82e7&major_anchor_level=common&abr_pts=-800&select_mode=score&_session_id=037-2024120217503167B9DF9F03DF6401DE50.1733133032147.26047&rsi=1"
// let playbackInfo = YHPlayerManager.PlaybackInfo(id: 40, url: url, isLive: true, scene: .fullscreen)
// YHPlayerManager.shared.enterLive(from: nil, playbackInfo: playbackInfo)
// let playbackInfo = YHPlayerManager.PlaybackInfo(id: 1, isLive: false, scene: .fullscreen)
// YHPlayerManager.shared.enterVOD(from: nil, playbackInfo: playbackInfo)
}
view.evaluateBlock = {
......
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