版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.09.01 |
前言
AVFoundation
框架是ios中很重要的框架,所有與視頻音頻相關(guān)的軟硬件控制都在這個(gè)框架里面,接下來(lái)這幾篇就主要對(duì)這個(gè)框架進(jìn)行介紹和講解。感興趣的可以看我上幾篇。
1. AVFoundation框架解析(一)—— 基本概覽
2. AVFoundation框架解析(二)—— 實(shí)現(xiàn)視頻預(yù)覽錄制保存到相冊(cè)
3. AVFoundation框架解析(三)—— 幾個(gè)關(guān)鍵問(wèn)題之關(guān)于框架的深度概括
4. AVFoundation框架解析(四)—— 幾個(gè)關(guān)鍵問(wèn)題之AVFoundation探索(一)
5. AVFoundation框架解析(五)—— 幾個(gè)關(guān)鍵問(wèn)題之AVFoundation探索(二)
6. AVFoundation框架解析(六)—— 視頻音頻的合成(一)
7. AVFoundation框架解析(七)—— 視頻組合和音頻混合調(diào)試
8. AVFoundation框架解析(八)—— 優(yōu)化用戶的播放體驗(yàn)
9. AVFoundation框架解析(九)—— AVFoundation的變化(一)
10. AVFoundation框架解析(十)—— AVFoundation的變化(二)
11. AVFoundation框架解析(十一)—— AVFoundation的變化(三)
12. AVFoundation框架解析(十二)—— AVFoundation的變化(四)
構(gòu)建基本的播放App
學(xué)習(xí)AVKit
和AVFoundation
的最好辦法是潛入并構(gòu)建您的第一個(gè)播放應(yīng)用程序。 本章介紹如何開(kāi)始使用這些框架,方法是開(kāi)發(fā)iOS,tvOS和macOS的基本應(yīng)用程序,以播放使用HTTP Live Streaming
投放的媒體。 該項(xiàng)目要求您熟悉至少在其中一個(gè)平臺(tái)上開(kāi)發(fā)應(yīng)用程序。
iOS 和 tvOS
使用單一視圖應(yīng)用程序模板為iOS或tvOS應(yīng)用程序創(chuàng)建一個(gè)新的Xcode項(xiàng)目。
- 產(chǎn)品名稱(chēng):
AVBasicPlayback
- 語(yǔ)言:
Swift
- 設(shè)備:通用(僅限iOS)
1. Configuring the Project’s App Transport Security - 配置項(xiàng)目app的傳輸安全性
首先配置項(xiàng)目的應(yīng)用傳輸安全性,以便您的應(yīng)用可以成功連接到遠(yuǎn)程服務(wù)器。
- 在項(xiàng)目導(dǎo)航器中,找到應(yīng)用程序的Info.plist文件。 右鍵單擊該文件,然后選擇
Open As > Source Code
。 - 在</ dict>末尾標(biāo)記之前添加以下條目。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>devimages.apple.com.edgekey.net</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
添加此條目可確保應(yīng)用程序可以成功地從devimages.apple.com.edgekey.net
中檢索提供的媒體。
2. Setting up the Audio Session - 設(shè)置音頻會(huì)話
- 打開(kāi)
AppDelegate.swift
類(lèi)。 在類(lèi)定義之上,導(dǎo)入AVFoundation
框架。
import AVFoundation
- 在應(yīng)用程序中:
didFinishLaunchingWithOptions:
方法,將應(yīng)用程序的音頻會(huì)話類(lèi)別設(shè)置為AVAudioSessionCategoryPlayback
。
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback)
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
return true
}
設(shè)置音頻會(huì)話類(lèi)別確保應(yīng)用程序具有期望的媒體播放應(yīng)用程序的音頻行為。
3. Configuring the User Interface - 配置頁(yè)面
選擇Main.storyboard
,拖動(dòng)Button按鈕到視圖上,并且對(duì)按鈕進(jìn)行布局。
4. Implementing the Playback Behavior - 實(shí)現(xiàn)播放行為
- 在項(xiàng)目導(dǎo)航器中,選擇
Main.storyboard
文件并打開(kāi)助理編輯器。 - 控制 - 從播放視頻按鈕拖動(dòng)到
ViewController.swift
類(lèi)以添加一個(gè)名為playVideo
的新@IBAction
方法。
@IBAction func playVideo(_ sender: AnyObject) {
// TODO
}
- 關(guān)閉助理編輯器,并在項(xiàng)目導(dǎo)航器中選擇
ViewController.swift
類(lèi)。 在類(lèi)定義之上,導(dǎo)入AVKit
和AVFoundation
框架。
import AVKit
import AVFoundation
- 在方法
playVideo
中,實(shí)現(xiàn)下面方法
@IBAction func playVideo(_ sender: AnyObject) {
guard let url = URL(string: "https://devimages.apple.com.edgekey.net/samplecode/avfoundationMedia/AVFoundationQueuePlayer_HLS2/master.m3u8") else {
return
}
// Create an AVPlayer, passing it the HTTP Live Streaming URL.
let player = AVPlayer(url: url)
// Create a new AVPlayerViewController and pass it a reference to the player.
let controller = AVPlayerViewController()
controller.player = player
// Modally present the player and call the player's play() method when complete.
present(controller, animated: true) {
player.play()
}
}
您的應(yīng)用程序已完成,您可以在模擬器或iOS或TvOS設(shè)備上運(yùn)行。 只有幾行代碼,您已經(jīng)創(chuàng)建了一個(gè)全功能的播放應(yīng)用程序。
后記
未完,待續(xù)~~~