iOS音视频播放指南(一)

本文介绍了如何在iOS中创建一个简单的视频播放App,使用AVFoundation和AVKit框架。通过设置AVAudioSession,实现视频播放,并深入探讨了AVAsset的概念和使用,包括元数据处理、视频播放以及监听播放状态的方法。最后,讲解了如何基于时间对视频进行操作,如周期监测和边界监测。
摘要由CSDN通过智能技术生成

1. 简介


苹果目前提供两个框架用来处理音视频播放

1.AVFoundation

AVFoundation用于播放、处理音视频。可以通过结构图看到AVFoundation位于UIKit之下,很好理解AVFoundation并不提供用户界面,你可以自己自己构建用户界面来控制媒体的播放处理等功能。 但是苹果更推荐使用AVKit来构建用户界面

\2. AVKit

AVKit构建在 AVFoundation之上,可以简单的理解使用AVKit能够及其方便的使用系统为你提供的音视频播放界面。使用AVKit构建的播放界面能够随着苹果系统的更新自动更新。

如何选择
  • 如果你想让你的App拥有视频播放能力,并且不想自己创建控制界面,可以使用AVPlayerViewController(由AVKit提供)快速完成功能

  • 如果你想对视频进行编辑等处理,你需要使用 AVFoundation并且自己构建用户界面来处理音视频。

iOS9之前,你可以使用MPMoviePlayerViewController做一个简单的视频播放器,但是在iOS9这个类已经被弃用了。 取而代之的是AVPlayerViewController

2. 创建一个简单的视频播放App


1.新建工程, 命名为AVBasicPlayback,在Info.plist中添加

<key>NSAppTransportSecurity</key>

<dict>

<key>NSExceptionDomains</key>

<dict>

<key>devimages-cdn.apple.com</key>

<dict>

<key>NSExceptionRequiresForwardSecrecy</key>

<false/>

</dict>

</dict>

</dict>

目的是确保App能够从devimages-cdn.apple.com加载视频资源

2.在Appdelete中添加如下代码

importAVFoundation

funcapplication(_application:UIApplication,didFinishLaunchingWithOptionslaunchOptions:[UIApplication.LaunchOptionsKey:Any]?)->Bool{

// 1.初始化session

letaudioSession=AVAudioSession.sharedInstance()

do{

//2.设置category确保app的音频能够正常播放

tryaudioSession.setCategory(.playback)

}catch {

print("Setting category to AVAudioSessionCategoryPlayback failed.")

}

returntrue

}

\3. 调整ViewController中的代码。

importUIKit

importAVKit

importAVFoundation

classViewController:UIViewController{

letplayButton=UIButton(type:.system)

overridefuncviewDidLoad(){

super.viewDidLoad()

setupUI()

}

@objcfuncplayVideo(){

//1.这是一个HTTP Live Streaming流媒体链接,用于测试

guardleturl=URL(string:"https://devimages-cdn.apple.com/samplecode/avfoundationMedia/AVFoundationQueuePlayer_HLS2/master.m3u8")else{

return

}

//2. 创建AVPlayer

letplayer=AVPlayer(url:url)

//3. 创建AVPlayerViewController,并设置player

letcontroller=AVPlayerViewController()

controller.player=player

//4. 显示

present(controller,animated:true){

player.play()

}

}

funcsetupUI(){

playButton.setTitle("Play Video",for:.normal)

playButton.addTarget(self,action:#selector(playVideo),for:.touchUpInside)

view.addSubview(playButton)

playButton.translatesAutoresizingMaskIntoConstraints=false

playButton.centerXAnchor.constraint(equalTo:view.centerXAnchor).isActive=true

playButton.center

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值