iphone - significado - Implementación de HTTP Live Streaming en iOS
hls streaming server (2)
Si apuntas a un UIWebView en esa URL objetivo de m3u8, simplemente funcionará.
Quiero escribir un pequeño cliente de video de iOS y tengo que usar HTTP Live Streaming. Los videos provienen de un Wowza Media Server que admite HTTP Live Streaming, por lo que la implementación del servidor no es mi problema. Ya he visto los videos de WWDC y he leído la documentación de Apple sobre HTTP Live Streaming.
Pero en ningún lugar se explica cómo reproducir los videos en un dispositivo iOS. En una WWDC-conversación se mencionó que hay 3 possebilties para mostrar los videos:
- UIWebView
- MPMoviePlayerController
- AVPlayerItem
¿Cuál es el mejor?
¿Y cómo puedo leer las URL de video de una página HTML como esta, que el servidor proporciona?
<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>
(Fuente: Apple HTTP Live Streaming Overview )
Realmente no sé por dónde empezar con la codificación ... Tal vez alguien conozca mejor código de ejemplo que el molesto "Stitched Stream Player" o pueda escribir un pequeño tutorial ...
Una implementación corta y al punto. La URL incluida indica una transmisión válida (a partir del 15/12/2015), pero puede reemplazarla con su propia URL en un archivo .m3u8.
C objetivo:
#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
Rápido:
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()
}
}
Respuesta actualizada para ambos idiomas. También MPMoviePlayerController
está en desuso en iOS 9, pero puede usar AVPlayerViewController
en AVPlayerViewController
lugar. Happy Coding !!!