AVFoundation系列一: AVAsset的使用方法

AVAsset 是AVFoundation的操作模型,其中包含音频,视频,字幕,元数据。

GPUImage系列专栏
参考:AVFoundation Programming Guide

AVFoundation系列五:关于音视频的导出
AVFoundation系列四:如何配置一个合格的Camera
AVFoundation系列三:音视频编辑
AVFoundation系列二:用AVPlayer播放视频

本文将从以下几个方面介绍AVAsset

Demo 地址

1. AVAsset的加载方式
2. 播放一个AVAsset
3. 获取一个asset的相关属性
4. 从相册加载AVAsset
5. loadValuesAsynchronously的使用
6. 从视频中获取视频帧 图像
7. 通过一个AVAsset导出音频,设置时间裁剪
8. 通过一个AVAsset导出视频,设置时间裁剪

一、AVAsset的加载方式
第一种加载方式

        let path = Bundle.main.path(forResource: "3", ofType: "mp4")
        let asset = AVAsset.init(url: URL.init(fileURLWithPath: path!, isDirectory: true))

第二种加载方式

		let options = [AVURLAssetPreferPreciseDurationAndTimingKey:true]
		let asset = AVURLAsset.init(url: URL.init(fileURLWithPath: path!, isDirectory: true), options: options)

其中:AVURLAssetPreferPreciseDurationAndTimingKey 获取精确时间 通常不会再播放时使用
URL.init(fileURLWithPath: path!, isDirectory: true)如果URL是一个文件路径,苹果建议加上isDirectory

二、播放一个AVAsset
在这里插入图片描述
由于生命周期的原因,我们添加两个成员变量:

 	var player:AVPlayer?
    var playerItem:AVPlayerItem?

播放:

func plackTrack(track:AVAssetTrack?){
   
        guard let asset = track?.asset else{
   
            return
        }
        playerItem = AVPlayerItem.init(asset: asset)
        player = AVPlayer.init(playerItem: playerItem!)
        let playerlayer = AVPlayerLayer.init(player: player!)
        playerlayer.frame = view.bounds
        self.view.layer.addSublayer(playerlayer)
        player?.play()
    }

AVAssetTrack 如:
let audioTrack = asset.tracks(withMediaType: .audio)
let videoTrack = asset.tracks(withMediaType: .video)

三、获取一个asset的相关属性

func getAssetAttribute(){
   
        let path = Bundle.main.path(forResource: "3", ofType: "mp4")
        
        let asset = AVAsset.init(url: URL.init(fileURLWithPath: path!, isDirectory: true))
        //时长
        let duration 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值