iOS:简易的音视屏播放框架XYQPlayer

简介:

一、前缀

一直都想好好学学音视频这方面的知识,抽了几个周末参考一些资料,尝试着写了一个简易的音视频播放框架,支持音视频播放、视频截图、音乐缓存,其实吧,也就是尽可能的封装罢了,方便以后自己使用。目前只是开始,可能有些不足,后续会继续优化。可以在github上下载,地址是https://github.com/xiayuanquan/XYQPlayer,当然也请多多关注本博主夏远全

概念参考我的这篇博文:http://www.cnblogs.com/XYQ-208910/p/5662655.html 

二、框架

1、截图

2、文件

XYQAllHeader.h:所有的头文件

  View Code

XYQAudioTool.h/m:音频播放工具类,播放包括短音频和音乐

  View Code

XYQAudioToolView.h/m:音频播放界面类,显示播放音乐的界面,播放、暂停、光盘旋转

  View Code

XYQAudioToolLoader.h/m:音频下载类,缓存音乐到本地

  View Code

XYQMovieTool.h/m:视频播放工具类,直接显示播放界面、还有截屏功能

  View Code

XYQCachesManager.h/.m:缓存管理类,计算缓存大小、清除缓存

  View Code

XYQHUDView.h/m:弹框提示,包括文本提示、下载进度提示

  View Code

XYQTimeProgress.h/m:音乐播放时间进度条

  View Code

UIImage+XYQCornerRadius.h/m:对图片进行处理的类

  View Code

Source.bundle:资源包,存放图片icon

3、依赖

 

 

三、音乐播放和缓存逻辑

 

 

四、视频播放方式

 

五、音频播放test

复制代码
#import "PlayMusicViewController.h"
#import "XYQAllHeader.h"

@interface PlayMusicViewController ()
@property (strong,nonatomic)XYQAudioToolView *audioPlayerView;
@end

@implementation PlayMusicViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"清除缓存" style:UIBarButtonItemStylePlain target:self action:@selector(clearCache)];
//1、网络音乐(此处需要给出准确的url,我的这个不可以用,只是给个参考的样式)
    //[self testPlay_Local_URL_Music:@[@"http://120.25.226.186:32812/xxx/minion_02.mp3"]];
    
    //2、本地音乐
    [self testPlay_Bundle_Music:[self musicArray]];
}

//测试创建音乐播放器(播放沙盒本地音乐包括从网络音乐下载缓存)
- (void)testPlay_Local_URL_Music:(NSArray *)musicFileLinkArray{
    
    self.audioPlayerView = [XYQAudioToolView openAudioPlayerView:musicFileLinkArray  audioPlayerViewController:self];
    self.audioPlayerView.diskIsHide = YES;
}


//测试创建音乐播放器(播放bundle根目录下的音乐)
- (void)testPlay_Bundle_Music:(NSArray *)musicNameArray{
    
    self.audioPlayerView = [XYQAudioToolView openAudioPlayerView:musicNameArray  audioPlayerViewController:self];
    self.audioPlayerView.diskIsHide = YES;
}

//Bundle根目录子下所有的音乐文件名
- (NSArray *)musicArray{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Musics" ofType:@"plist"];
    NSArray *musicNameArr = [NSArray arrayWithContentsOfFile:path];
    return musicNameArr;
}

  //清除缓存

   - (void)clearCache{

    [XYQCachesManager clearFileCaches];

  }

//关闭播放器
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [self.audioPlayerView dismissAudioPlayerView];
}
复制代码

 

六、视频播放test

复制代码
//
//  PlayMovieViewController.m
//  XYQPlayer
//
//  Created by 夏远全 on 2017/4/9.
//  Copyright © 2017年 夏远全. All rights reserved.
//

#import "PlayMovieViewController.h"
#import "XYQAllHeader.h"

@interface PlayMovieViewController ()

@end

@implementation PlayMovieViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    //1、push视频
    [XYQMovieTool pushPlayMovieWithNetURL:@"http://120.25.226.186:32812/resources/videos/minion_02.mp4" viewController:self];
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    //2、present视频
    //[XYQMovieTool presentPlayMovieWithNetURL:@"http://120.25.226.186:32812/resources/videos/minion_02.mp4" viewController:self];
}

//关闭播放器
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [XYQMovieTool cancelPlay];
}

@end
复制代码

 

七、演示截图

 音乐:

   

 

视频:

push:             present:  

  

 

八、cocoaPods支持:

pod search 'XYQPlayer'

 

九、声明

本博文为原创,如转载请注明出处,希望对大家有所帮助~~~~

cnblogs地址:http://www.cnblogs.com/XYQ-208910/p/6685412.html

github地址:https://github.com/xiayuanquan/XYQPlayer

简书地址:http://www.jianshu.com/p/1f8f434cfcba

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6685412.html ,如需转载请自行联系原作者
相关文章
|
22天前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
2月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
2月前
|
开发工具 Swift iOS开发
探索iOS开发中的SwiftUI框架
在数字时代的浪潮中,iOS应用开发的舞台日益扩展,其中SwiftUI作为苹果推出的新型用户界面框架,正逐渐改变着开发者构建应用的方式。本文将深入介绍SwiftUI的核心概念和实际应用,探讨其如何简化代码、提升效率并推动设计创新,同时也会触及SwiftUI在当前技术生态中所面临的挑战与未来的发展潜力。
|
2月前
|
机器学习/深度学习 API iOS开发
探索iOS开发中的SwiftUI框架深入理解RESTful API设计原则与最佳实践
【7月更文挑战第30天】本文深入探讨了SwiftUI框架在iOS开发中的应用,分析了其对用户界面构建的简化方法及性能优化。通过比较传统UI构建方式与SwiftUI的差异,揭示了SwiftUI如何提高开发效率和用户体验。文章还讨论了SwiftUI在实际项目中的集成策略,并展望了其未来的发展方向。 【7月更文挑战第30天】在数字时代的浪潮中,RESTful API如同一座桥梁,连接着不同的软件系统。本文将探讨RESTful API的核心设计原则,揭示其背后的哲学思想,并通过实例分析展示如何将这些原则应用于实际开发中。我们将从资源定位、接口一致性到HTTP方法的恰当使用,逐一剖析,旨在为开发者提供
48 1
|
1月前
|
机器学习/深度学习 搜索推荐 数据处理
探索iOS应用开发的新趋势:SwiftUI和Combine框架
【8月更文挑战第6天】随着Apple不断推动其操作系统的进化,iOS开发领域也迎来了新的变革。本文将深入探讨SwiftUI和Combine框架如何革新iOS应用开发流程,提升开发者的工作效率,并改善最终用户的体验。我们将从这两个框架的基本概念出发,分析它们的核心优势,并预测它们将如何塑造iOS开发的未来。
|
19天前
|
开发工具 Swift iOS开发
探索iOS开发中的SwiftUI框架
【9月更文挑战第1天】在本文中,我们将一起潜入iOS开发的海洋,特别聚焦于SwiftUI这一现代且富有表现力的框架。SwiftUI不仅简化了界面设计流程,还为开发者提供了声明式Swift语法的便利。通过这篇文章,你将学会如何利用SwiftUI构建灵活且响应式的用户界面,并理解其背后的原理。无论你是刚入门的新手还是寻求进阶的开发者,本文都将为你提供有价值的指导和启示。
|
23天前
|
设计模式 Java Android开发
探索安卓应用开发:从新手到专家的旅程探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在通过一个易于理解的旅程比喻,带领读者深入探讨安卓应用开发的各个方面。我们将从基础概念入手,逐步过渡到高级技术,最后讨论如何维护和推广你的应用。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的代码示例。让我们一起开始这段激动人心的旅程吧!
|
23天前
|
存储 Swift iOS开发
探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在引导读者理解并掌握SwiftUI框架,通过简明的语言和直观的代码示例,揭示SwiftUI如何让iOS开发变得更加简单高效。文章不仅介绍基础知识,更深入探讨了SwiftUI的核心特性、布局技巧以及与UIKit的差异,为开发者提供实用的学习路径和实践指南。
|
1月前
|
iOS开发 开发者 UED
探索iOS开发中的SwiftUI框架
【8月更文挑战第20天】本文深入探讨了SwiftUI,这是一个为iOS开发设计的现代化用户界面框架。通过分析SwiftUI的设计理念、核心特性以及与传统UIKit框架的区别,文章揭示了SwiftUI如何简化开发者的工作流程并提升应用性能。同时,文章也讨论了SwiftUI在实现响应式设计方面的能力和它对iOS开发生态的潜在影响。
|
1月前
|
前端开发 API Swift
探索iOS应用开发的新趋势:SwiftUI和Combine框架
【8月更文挑战第16天】本文深入探讨了iOS平台上的两个最新技术:SwiftUI和Combine。SwiftUI旨在简化用户界面的构建,而Combine则优化了事件处理机制。我们将分析这两个框架如何共同推动iOS开发的未来,以及它们给开发者带来的便利和挑战。
37 6