Html iOS中HTTP直播的实现

Html iOS中HTTP直播的实现,html,ios,iphone,video,http-live-streaming,Html,Ios,Iphone,Video,Http Live Streaming,我想写一个小的iOS视频客户端,必须使用HTTP直播。视频来自支持HTTP实时流媒体的Wowza媒体服务器,因此服务器端实现不是我的问题。 我已经看了WWDC的视频,并阅读了有关HTTP实时流媒体的苹果文档 但是没有人解释如何在iOS设备上播放视频。在WWDC的一次演讲中提到,有3种可能显示视频: UIWebView MPMoviePlayerController 阿夫帕耶利特姆 哪一个是最好的 我如何从服务器提供的HTML页面中读取视频URL <html> <head&g

我想写一个小的iOS视频客户端,必须使用HTTP直播。视频来自支持HTTP实时流媒体的Wowza媒体服务器,因此服务器端实现不是我的问题。 我已经看了WWDC的视频,并阅读了有关HTTP实时流媒体的苹果文档

但是没有人解释如何在iOS设备上播放视频。在WWDC的一次演讲中提到,有3种可能显示视频:

  • UIWebView
  • MPMoviePlayerController
  • 阿夫帕耶利特姆
哪一个是最好的

我如何从服务器提供的HTML页面中读取视频URL

<html>
<head>
    <title>HTTP Live Streaming Example</title>
</head>
<body>
    <video
        src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"
        height="300" width="400"
    >
    </video>
</body>
</html>

HTTP实时流媒体示例
(来源:)


我真的不知道从哪里开始编码……也许有人知道比讨厌的“缝合流播放器”更好的示例代码,或者可以编写一个小教程。

如果您将UIWebView指向目标m3u8 URL,它就会正常工作。

一个简短而直接的实现。包含的URL指向有效流(截至2015年12月15日),但您可以用自己的.m3u8文件URL替换

目标-C:

#import <MediaPlayer/MediaPlayer.h>
@interface ViewController ()
@property (strong, nonatomic) MPMoviePlayerController *streamPlayer;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSURL *streamURL = [NSURL URLWithString:@"http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8"];

    _streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:streamURL];

    // depending on your implementation your view may not have it's bounds set here
    // in that case consider calling the following 4 msgs later
    [self.streamPlayer.view setFrame: self.view.bounds];

    self.streamPlayer.controlStyle = MPMovieControlStyleEmbedded;

    [self.view addSubview: self.streamPlayer.view];

    [self.streamPlayer play];
}

- (void)dealloc
{
     // if non-ARC
    // [_streamPlayer release];
    // [super dealloc];
}

@end

两种语言的最新答案。另外,iOS 9中不推荐使用
MPMoviePlayerController
,但您可以使用
AVPlayerController
。快乐编码

下面是我的Swift 4解决方案和
AVPlayer

[因为在iOS 9中不推荐使用
MPMoviePlayerController
]


克里斯。谢谢你的简单例子。它工作得很好。我想知道如何从视频创建.m3u8文件?嘿,谢谢你的提醒。我厌倦了为一个显然没有更新的博客付费。所以我把博客文章移到这里的一个要点页面:如果你想创建你自己的HLS内容,那么你可以通过mediafilesegmenter创建清晰和加密的内容来使用这个HLS内容,你需要将这个TS chuck上传到apache服务器(HTTP或HTTPS,带有CA签名)
import UIKit
import MediaPlayer

class ViewController: UIViewController {

     var streamPlayer : MPMoviePlayerController =  MPMoviePlayerController(contentURL: NSURL(string:"http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8"))

     //Let's play
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do any additional setup after loading the view, typically from a nib.
         streamPlayer.view.frame = self.view.bounds
         self.view.addSubview(streamPlayer.view)

         streamPlayer.fullscreen = true
         // Play the movie!
         streamPlayer.play()
    }

}
import UIKit
import AVKit
...

class VideoPlayerViewController: UIViewController {

    var player: AVPlayer?

    override func viewDidLoad() {
        super.viewDidLoad()

        guard let url = URL(string: "http://stream-url.com/file.m3u8") else {
            print("Umm, looks like an invalid URL!")
            return
        }

        player = AVPlayer(url: url)
        let controller = AVPlayerViewController()
        controller.delegate = self
        controller.player = player

        // present the player controller & play
        present(controller, animated: true) {
            self.player?.play()
        }
    }

}