Swift 切换通道不';我什么也没表现出来
我正在尝试切换频道,但远程视频在调用切换频道时不会同时显示任何内容。“加入频道”最初可以工作,但如果我尝试离开频道并加入频道而不是切换频道,它也不会工作。听众工作。我在下面添加了代码。导入UIKit导入AgorartKitSwift 切换通道不';我什么也没表现出来,swift,agora.io,Swift,Agora.io,我正在尝试切换频道,但远程视频在调用切换频道时不会同时显示任何内容。“加入频道”最初可以工作,但如果我尝试离开频道并加入频道而不是切换频道,它也不会工作。听众工作。我在下面添加了代码。导入UIKit导入AgorartKit class ViewController: UIViewController { @IBOutlet weak var remoteView: UIView! @IBOutlet weak var localView: UIView! var agoraKit: Agor
class ViewController: UIViewController {
@IBOutlet weak var remoteView: UIView!
@IBOutlet weak var localView: UIView!
var agoraKit: AgoraRtcEngineKit!
func initializeAgoraEngine() {
agoraKit = AgoraRtcEngineKit.sharedEngine(withAppId: AppID, delegate: self)
}
func setupVideo() {
agoraKit.enableVideo() // Enables video mode.
agoraKit.setVideoEncoderConfiguration(
AgoraVideoEncoderConfiguration(size: AgoraVideoDimension640x360,
frameRate: .fps15,
bitrate: AgoraVideoBitrateStandard,
orientationMode: .adaptative)
) // Default video profile is 360P
}
override func viewDidLoad() {
super.viewDidLoad()
initializeAgoraEngine()
setupVideo()
setupLocalVideo()
setUpChannel()
}
func setupLocalVideo() {
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = 0
videoCanvas.view = localView
videoCanvas.renderMode = .hidden
agoraKit.setupLocalVideo(videoCanvas)
}
func setUpChannel() {
agoraKit.setDefaultAudioRouteToSpeakerphone(true)
agoraKit.joinChannel(byToken: nil, channelId: User.current.uid, info:nil, uid:0) {(sid, uid, elapsed) -> Void in
}
UIApplication.shared.isIdleTimerDisabled = true
}
func switchChannel(channel: String) {
agoraKit.switchChannel(byToken: nil, channelId: channel, joinSuccess: nil)
}
func leaveChannel() {
agoraKit.leaveChannel(nil)
UIApplication.shared.isIdleTimerDisabled = false
remoteView.removeFromSuperview()
localView.removeFromSuperview()
}
@IBAction func didClickSwitchCameraButton(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
agoraKit.switchCamera()
}
func addLiveUserAndListener() {
//listener for channel
}
extension ViewController: AgoraRtcEngineDelegate {
func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid:UInt, size:CGSize, elapsed:Int) {
if (remoteView.isHidden) {
remoteView.isHidden = false
}
let videoCanvas = AgoraRtcVideoCanvas()
videoCanvas.uid = uid
videoCanvas.view = remoteView
videoCanvas.renderMode = .hidden
agoraKit.setupRemoteVideo(videoCanvas)
}
internal func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid:UInt, reason:AgoraUserOfflineReason) {
self.remoteView.isHidden = true
}
func rtcEngine(_ engine: AgoraRtcEngineKit, didVideoMuted muted:Bool, byUid:UInt) {
remoteView.isHidden = muted
}
}
如果查看开关通道
功能的,您可能会注意到:
注意:此方法仅适用于实时交互式流媒体频道中的观众角色
对于您的用例,我建议您自己调用leaveChannel和joinChannel
作为旁注,
firstRemoteVideoDecodedOfUid
已被弃用,您应该使用or。请不要通过破坏您的帖子为其他人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅: