ちょっとしたiOSビデオクライアントを作成し、HTTPライブストリーミングを使用する必要があります。ビデオはHTTPライブストリーミングをサポートするWowza Media Serverから取得されるため、サーバー側の実装は私の問題ではありません。私はすでにWWDCビデオを見て、HTTP Live Streamingに関するAppleドキュメントを読んでいます。
しかし、iOSデバイスでビデオを再生する方法については説明されていません。 WWDCトークで、ビデオを表示するための3つの可能性があると言及されました。
どれが最高ですか?
そして、サーバーによって提供されるこれらのような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>
(ソース: Apple HTTP Live Streaming Overview )
コーディングをどこから始めるべきか本当にわかりません...誰かが迷惑な「Stitched Stream Player」よりも良いコード例を知っているか、小さなチュートリアルを書くことができます。
短くてポイントの実装。含まれる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
スイフト:
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では非推奨ですが、代わりにAVPlayerViewController
を使用できます。ハッピーコーディング。!!!
そのターゲットm3u8 URLでUIWebViewをポイントすると、それは機能します。
以下は私のSwift 4AVPlayer
を使用したソリューションです
[MPMoviePlayerController
はiOS 9で廃止されているため]
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()
}
}
}