先の記事テスト用のHTTP Live Streamingの環境構築の続き。
目的
今回の主目的はこちら。
- AndroidやiOSのプレイヤーでHLSの視聴時のアクセスログを確かめたい。
前回の作業で以下はほぼ完了。
- そのためのHLSの配信環境をmacOS上で構築する。
- ローカルネットワークでの確認のため、CDNへの配置は行わわない。
- macOS上のファイルストレージにHLSのファイルを書き出し、それをApacheでStreamingできるようにする。
アプリを作る(できるだけ作らない)
作るのは面倒・・・なので、
- AndroidはExoPlayerのdemoを使う
- media.exolist.jsonに再生したいHLSのURLを加えて完了
- iOSは・・・AVFoundationを使ったデモを作る
iOSのデモアプリの環境
- Xcode 11.2.1
- 動作確認はSimulator (iOS 13.2.2を使用)
おおよその実装は[Media Playback Programming Guide
- Exploring AVFoundation](https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/MediaPlaybackGuide/Contents/Resources/en.lproj/ExploringAVFoundation/ExploringAVFoundation.html) の「Playing Media」の章を見れば書いているような気がする。
と思ったけど、過去に書いた適当な実装があったのでそれをそのまま使う。
特に特別なこともしていないと思うので、説明は省略。
import UIKit
import AVKit
class AVPlayerViewExample: UIViewController {
private var playerViewController: AVPlayerViewController!
init() {
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("Not implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
playerViewController = AVPlayerViewController()
view.addSubview(playerViewController.view);
let urlString = "..."
let url: URL? = URL.init(string:urlString)
playerViewController.player = AVPlayer(url: url!)
playerViewController.player?.play()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
playerViewController.view.frame = self.view.bounds
}
とりあえずひとまずこれで、iOSでも再生環境ができた。
あとは先日の記事で作成したHLSのストリーム http://127.0.0.1:8080/streaming/hls.m3u8
のhostをLANのIPに変えてあげれば再生できた。
今回はここまで。