AVFoundation 播放器实例

播放器

使用苹果官方的 AVFoundation 框架,可以很容易的封装一个视频的播放器。

在获取视频资源后,只需要将视频在播放图层中渲染即可,并且可以在图层中添加控件,以便对视频的播放和暂停进行控制。

下面封装的库,主要包含两个类 HXJPlayerViewHXJPlayerControlView 。但是,在具体使用时,只需要使用 HXJPlayerView 类,创建一个播放视图即可。

HXJPlayerView

使用该类时,需要先获取视频资源的地址,进而用该地址作为参数初始化一个播放器实例对象。

- (instancetype)initWithUrl:(NSURL *)url;

该类中提供了视频播放、暂停、终止的控制方法,可以根据需要进行调用。

该类中还提供了一些只读属性,用来获取视频的当前状态,如是否播放中、播放速率、是否全屏播放等。

另外,其还提供了一个 title 属性,用来设置播放器的标题。

重要的是其定义了一个遵循 HXJPlayerViewDelegate 协议的代理,实现协议中的方法,可以进行一些操作。

HXJPlayerViewDelegate

该协议中定义了一些方法,提供了一些响应视频操作的机会。

  1. 视频加载到可以播放时,默认并不会自动播放,但是使用下面的方法,可以将视频设置为自动播放的。

    - (BOOL)isShouldAutoPlayWhenReadyToPlay;
    
  2. 在获取到视频资源信息后,默认会根据视频的大小尺寸,等比例调整播放器的大小尺寸,并且默认是以屏幕的宽度为基准的。但是下面的方法可以禁止调整播放器的尺寸,或者自定义调整的宽度和高度。

    - (BOOL)isShouldRefreashViewAccordingVideoNaturalSize;
    

    上面的方法返回 YES,下面的两个方法才有意义。

    - (CGFloat)widthWhenRefreashViewAccordingVideoNatureSize;
    - (CGFloat)heightWhenRefreashViewAccordingVideoNatureSize;
    

    这两个方法只实现一个时,视频的调整都是和原尺寸等比例的,但是如果都进行了自定义,那么尺寸未必会保持等比。

  3. 视频的大小如果进行了调整,即 isShouldRefreashViewAccordingVideoNaturalSize 协议方法返回了 YES ,那么便会返回调整后的视频播放尺寸。

    - (void)didRefreashedViewAccordingVideoNatureSize:(CGSize)size;
    

    当然,如果需要用这个尺寸调整播放器父视图与播放器大小尺寸一致,那么可以直接令下面的方法返回 YES 。

    - (BOOL)isShouldRefreashSuperViewSize;
    
  4. 其他诸如视频将要播放、进入全屏、退出全屏等方法如下。

    /**
     全屏按钮点击
     
     @param isFullScreen 当前屏幕是否是全屏状态
     */
    - (void)didFullScreenBtnClicked:(BOOL)isFullScreen;
    
    ///进入全屏
    - (void)didEnterFullScreen;
    
    ///退出全屏
    - (void)didExitFullScreen;
    
    ///即将播放
    - (void)videoWillPlay:(HXJPlayerView *)playerView;
    

HXJPlayerControlView

该类是控制视图,其封装了播放按钮、进度条、播放时间等控件,类似的,其也拥有一个代理,该代理需要遵循 HXJPlayerControlViewDelegate 协议,该协议中的方法会在播放器控制操作发生时执行。

这个代理对象实际就是 HXJPlayerView 实例对象,其负责处理视频的播放、暂停、全屏等操作。

具体的实现可以参见源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是 AVFoundationAVFoundation是苹果公司提供的一个多媒体处理框架,它能够处理音频、视频、文本和图像等媒体类型,还能够实现录制、编辑、播放等多种操作。 2. AVFoundation的优点是什么? AVFoundation有以下几个优点: - 它可以在多个平台上使用,包括iOS、macOS和tvOS等。 - 它提供了灵活的API,可以对多种媒体类型进行处理。 - 它支持硬件加速,能够提高处理速度和性能。 - 它支持多种格式的媒体文件,包括MP3、AAC、H.264和MPEG-4等。 3. 如何使用AVFoundation实现音频录制? 在使用AVFoundation实现音频录制时,需要执行以下步骤: - 创建一个AVAudioSession对象,用于管理音频会话。 - 创建一个AVAudioRecorder对象,用于录制音频。 - 配置录音参数,例如音频格式、采样率、通道数、音频质量等。 - 调用AVAudioRecorder的record方法开始录音。 - 调用AVAudioRecorder的stop方法停止录音。 4. AVFoundation中的AVPlayerLayer是什么? AVPlayerLayer是一个CALayer子类,用于在iOS和macOS应用程序中显示视频内容。它可以显示一个AVPlayer对象的输出,并且支持全屏播放、画中画、视频内容缩放等功能。 5. 如何使用AVFoundation实现视频播放? 在使用AVFoundation实现视频播放时,需要执行以下步骤: - 创建一个AVPlayer对象,用于播放视频。 - 创建一个AVPlayerLayer对象,用于显示视频内容。 - 将AVPlayerLayer对象添加到视图层次结构中。 - 创建一个AVPlayerItem对象,用于管理视频资源。 - 调用AVPlayer的replaceCurrentItemWithPlayerItem方法将AVPlayerItem与AVPlayer关联。 - 调用AVPlayer的play方法开始播放视频。 6. 如何在AVFoundation中实现视频编辑? 在AVFoundation中实现视频编辑通常需要使用AVAsset、AVAssetTrack、AVComposition、AVMutableComposition等类。以下是实现视频编辑的大致步骤: - 创建一个AVAsset对象,用于表示视频资源。 - 创建一个AVMutableComposition对象,用于管理视频资源。 - 使用AVAssetTrack获取视频的音频和视频轨道。 - 使用AVMutableCompositionTrack将音频和视频轨道添加到AVMutableComposition中。 - 使用AVAssetExportSession导出编辑后的视频。 7. AVFoundation中的AVCaptureSession是什么? AVCaptureSession是用于管理视频和音频输入的会话对象。它可以管理多个输入设备(例如摄像头、麦克风等)并且可以将它们合并到单个输出中。使用AVCaptureSession可以方便地实现视频录制、视频流传输、实时视频分析等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值