如何使用iOS中的RTMP为Facebook,YouTube等多个社交媒体创建实时流媒体



我已经使用lflivekit这样的单个平台进行了实时流媒体。当我尝试两个平台时,它不会发生。

代码:

import UIKit
import LFLiveKit
class VideoViewController: UIViewController {
var sessionO: LFLiveSession =
    {
        let audioConfiguration = LFLiveAudioConfiguration.defaultConfiguration(for: LFLiveAudioQuality.high)
        let videoConfiguration = LFLiveVideoConfiguration.defaultConfiguration(for: LFLiveVideoQuality.low3)
        let session = LFLiveSession(audioConfiguration: audioConfiguration, videoConfiguration: videoConfiguration)
        return session!
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.streamUrl = "live-api-s.facebook.com:80/rtmp/"
        self.streamName = "17XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        self.sessionO.delegate = self
        self.sessionO.preView = self.view
        self.sessionO.running = true
    }
    override func viewDidAppear(_ animated: Bool)
    {
        super.viewDidAppear(animated)
        let stream = LFLiveStreamInfo()
        stream.url = "rtmp://(self.streamUrl!)/LiveApp/(self.streamName!)"
        self.sessionO.startLive(stream)
}
}

注意:如果我创建另一个会话并为YouTube进行流,则无法正常工作。

我们需要创建单独的RTMP连接并创建侦听器。

fbRtmpStream = RTMPStream(connection: fbRtmpConnection)
ytRtmpStream = RTMPStream(connection: ytRtmpConnection)
self.fbRtmpConnection1.addEventListener(Event.RTMP_STATUS, selector:#selector(self.fbRtmpStatusHandler1(_:)), observer: self)
        self.fbRtmpConnection1.connect("rtmp://live-api-s.facebook.com:80/rtmp/")
        self.fbStreamName1 = "xxxxxx"
self.ytRtmpConnection.addEventListener(Event.RTMP_STATUS, selector:#selector(self.ytRtmpStatusHandler(_:)), observer: self)
        self.ytRtmpConnection.connect("rtmp://a.rtmp.youtube.com/live2/LiveApp/")
        self.ytStreamName = "xxxxxxxxx"

这可能不是您正在寻找的解决方案

多个服务器上传的主要问题是错误处理更复杂的错误,例如,解决问题的出路,这还不是很好的处理方式。来源

所以!lflivekit 不支持多个服务器

最新更新