2017. 5. 14. 22:49ㆍ아이폰 개발
별도의 라이브러리 없이 쉽게 플레이가 된다.
import AVKit
import Foundation
import AVFoundation
var player:AVPlayer!
...
guard let url = URL(string: "https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8") else { return }
let playerItem = AVPlayerItem(url: url)
player = AVPlayer(playerItem: playerItem)
player?.play()
http://stackoverflow.com/questions/42665545/hls-m3u8in-ios-10
단, 주의할 점은 mp3 스트리밍과 달리 m3u8의 경우 해당 음원의 전체 플레이 타임을 직접 알수 있는 방법이 없다.
그래서 프로그레스 컨트롤을 이용하여 플레이 타임을 표시하거나 seek 기능을 구현하고 싶어도 불가능하다.
별도의 메타정보를 수신하여 처리하는 방법 밖에 없는 듯.
쓸만한 오디오 스트림 예제 프로젝트
https://github.com/harshalrj25/audioStreamDemo
백그라운드 플레이를 지원하는 Jukebox 프레임워크
https://github.com/teodorpatras/Jukebox
Core Audio Essentials에 대해서는 다음 내용을 참고한다.
--------------------
동영상 플레이하는 방법!
우선 화면에 보이도록 해주는 AVPlayerView를 정의한다
그다음 AVPlayerView를 AVPlayer 객체인 videoPlayer와 연결해준다.
http://stackoverflow.com/questions/37937036/playing-hls-m3u8-in-cocoa-os-x-avplayer-swift
import Cocoa
import AVKit
import Foundation
import AVFoundation
class ViewController: NSViewController {
@IBOutlet weak var playerView: AVPlayerView!
var videoPlayer:AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
//let path = NSBundle.mainBundle().pathForResource("sample", ofType: "mov")
//var fileURL = NSURL(fileURLWithPath: path!)
let fileURL = NSURL(string: "http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8")
let avAsset = AVURLAsset(URL: fileURL!, options: nil)
let playerItem = AVPlayerItem(asset: avAsset)
videoPlayer = AVPlayer(playerItem: playerItem)
playerView.player = videoPlayer
videoPlayer.play()
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}