Реализация 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 ответа:
короткая и к месту реализация. Включенный 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, но вы можете использовать . Счастливое Кодирование.!!!