如何在iOS应用中播放RTMP视频流?

3

您好,我正在开发广播应用程序,使用Videocore库。现在我想知道如何在iOS应用程序中播放流视频。我已经尝试使用MpMoviePlayer,但它不支持RTMP流。请问是否有第三方库可用于支持RTMP的播放器?请帮助我。


你愿意分享一下你在这方面取得的进展吗? - Daniel Que
我正在使用VLC播放器来播放rtmp流媒体视频。 - Bittoo
啊,我以为你是想在应用程序内播放RTMP。 - Daniel Que
是的,现在对我来说运行得很好。 - Bittoo
1个回答

1
如果您已经准备好并正在播放作为HLS的RTMP直播流,那么您只需在流名称后面添加.m3u8,并将RTMP链接转换为HTTP链接即可。例如,您有以下RTMP链接:

rtmp://XY.Y.ZX.Z/hls/chid

你只需要将URL设置为这样:

http://XY.Y.ZX.Z/hls/chid.m3u8

而且它在iOS上会流畅播放。我尝试了以下代码,它运行得很好。

func setPlayer()
{
    // RTMP URL rtmp://XY.Y.ZX.Z/hls/chid be transcripted like this http://XY.Y.ZX.Z/hls/chid.m3u8 it will play normally.

    let videoURL = URL(string: "http://XY.Y.ZX.Z/hls/chid.m3u8")

    let playerItem = AVPlayerItem(url: videoURL!)
    let adID = AVMetadataItem.identifier(forKey: "X-TITLE", keySpace: .hlsDateRange)
    let metadataCollector = AVPlayerItemMetadataCollector(identifiers: [adID!.rawValue], classifyingLabels: nil)
    //metadataCollector.setDelegate(self, queue: DispatchQueue.main)
    playerItem.add(metadataCollector)


    let player = AVPlayer(playerItem: playerItem)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = self.view.bounds
    self.view.layer.addSublayer(playerLayer)
    self.player = player
    player.play()
}

但是由于高分辨率视频流上传,速度会很慢且卡顿。如果在上传视频流时将分辨率设置为低,它也可以在低带宽网络中流畅运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接