Реализация HTTP Live Streaming в iOS


Я хочу написать немного iOS video client и должен использовать HTTP Live Streaming. Видео поступают с медиа-сервера Wowza, который поддерживает прямую трансляцию HTTP, поэтому реализация на стороне сервера не является моей проблемой. Я уже смотрел видео WWDC и читал документацию Apple о потоковой передаче HTTP в прямом эфире.

но нигде не объясняется, как воспроизводить видео на устройстве iOS. В WWDC-разговоре было упомянуто, что есть 3 possebilties для отображения видео:

  • UIWebView
  • MPMoviePlayerController
  • AVPlayerItem

какой из них лучше?

и как я могу прочитать видео-URL с HTML-страницы, как эти, которые становятся предоставлены сервером?

<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>

(источник: Apple HTTP Live Streaming обзор)

Я действительно не знаю, с чего начать кодирование...Может кто-то знает лучше пример кода, чем раздражает "Сшитый потоковый плеер" или может написать небольшой учебник...

2 52

2 ответа:

короткая и к месту реализация. Включенный URL указывает на допустимый поток (по состоянию на 15.12.2015), но вы можете просто заменить свой собственный URL на a .файл m3u8.

Цель-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

Swift:

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()
    }

}

обновленный ответ для обоих языков. Также MPMoviePlayerController осуждается в iOS 9, но вы можете использовать . Счастливое Кодирование.!!!

Если вы укажете UIWebView на этот целевой URL m3u8, он просто будет работать.