MMRtmp
示例
演示
播放
使用RTMPPlayLayer类播放RTMP视频
-
播放动作
displayLayer.play(host: "rtmp://184.72.239.149/vod", name: "BigBuckBunny_115k.mov")
-
停止
displayLayer.stop()
-
跳转
displayLayer.seek(duration: 100)
-
暂停 / 播放
displayLayer.pause() displayLayer.unPause()
-
状态检查
displayLayer.playStatus { [unowned self] (status) in switch status { case .connect: self.pauseBtn.isHidden = false self.btnPlay.setTitle("Disconnected", for: .normal) case .failed(let err): print(err) case .unknown: self.pauseBtn.isHidden = true case .disconnected: self.btnPlay.setTitle("Play", for: .normal) case .pause: self.pauseBtn.setTitle("Resume", for: .normal) case .playStart: self.pauseBtn.setTitle("Pause", for: .normal) break } }
发布
使用RTMPPublishLayer类在服务器上发布视频
-
认证层
publishLayer.authVideoAudio { (rc) in if !rc { let alert = UIAlertController.init(title: "Error", message: "you need auth your microphone and camera", preferredStyle: .alert) let action = UIAlertAction.init(title: "confirm", style: .default, handler: nil) alert.addAction(action) } }
-
发布
publishLayer.publish(host: host, name: name)
-
停止
publishLayer.publish(host: host, name: name)
-
状态检查
publishLayer.publishStatus { (status) in switch status { case .unknown, .disconnected: self.btnConnect.setTitle("Publish", for: .normal) case .connect: self.btnConnect.setTitle("Disconnect", for: .normal) case .failed(_): self.btnConnect.setTitle("Publish", for: .normal) case .publishStart: break } }
-
视频帧率
publishLayer.videoFPS = 30
pod 'MMRtmp'
作者
MillmanY, [email protected]
许可证
MMRtmp软件可在MIT许可证下使用。更多信息请参阅LICENSE文件。