此项目已于2019年3月停止维护,请慎重使用。
UCDMediaPlayer 是一个适用于 iOS 的音视频播放器 SDK,基于FFmpeg自主研发音视频媒体播放器,支持 RTMP, HTTP-FLV 和 HLS 直播流媒体播放。
本文档简要介绍UCDMediaPlayer的功能与简单接入,对于SDK的详细API请查看相关wiki。
- 支持 RTMP、HLS、HTTP-FLV、RTSP 等协议
- 支持speex音频播放
- 支持累积延迟消除(RTMP和HTTP+FLV),降低观看直播的观众延迟
- 支持H.265/HEVC播放
- 包含armv7、arm64、i386、x86_64指令集
- 支持bitcode
- 支持直播首屏秒开
- 支持直播、点播播放
- 支持软解、硬解切换
- 支持点播多清晰度切换
- 支持画幅调整
- 支持全屏、非全屏切换
- 支持屏幕亮度调节
- 支持音量调节
- 支持播放进度拖拽操作
- 最低支持iOS版本:iOS 7.0
- 最低支持iPhone型号:iPhone 4
- 支持CPU架构: armv7,arm64(和i386,x86_64模拟器)
git clone https://github.com/umdk/UCDMediaPlayer_iOS.git
目录结构:
- demo : UCDMediaPlayer演示demo,展示本SDK的主要接口使用
- docs/docset : appleDoc风格接口文档,安装后可在Xcode中直接查看,亦可在Dash APP上查看使用
- docs/html : appleDoc风格网页版接口文档,可直接点击index.html查看
- lib/Player : 播放器静态库和相关头文件
- PlayerUI : 播放器UI及其管理器类,用户可自行修改使用
将lib文件夹下的Player直接拉到Xcode的工程中;
*Player文件夹中相关文件意义:
| 类文件 | 描述 | |---|---|---| | UCloudMediaPlayer.h | 播放器控制类 | | UCloudMediaPlayback.h | 播放器通知类 | | libUCloudMediaPlayer.a | 播放器静态库 | | UCloudPlayback.h | 播放器播放类 | | UCloudMediaModule.h | 播放器显示控制类 |
添加libUCloudMediaPlayer.a所需引用的系统 framework,如下:
| framework | |---|---| | VideoToolbox.framework | | CoreMedia.framework | | MediaPlayer.framework | | AVFoundation.framework | | AudioToolbox.framework | | libz.tbd |
播放器包含ffmpeg库,已知在含有ffmpeg的第三方库情况下无法正常运行,可以尝试在编译选项Other linker Flags中加入**-force_load**来解决冲突,但不推荐使用。Player文件夹放置的是直播云播放器库,(如果已经有播放器库,可以不添加,自行配置播放器)将Player直接拉进Xcode工程目录中;
引入PlayerUI文件夹,PlayerUI是项目中的播放器UI及其管理器类,用户可以自行修改使用。
#import "UCloudMediaPlayer.h"
#import "UCloudMediaViewController.h"
#import "PlayerManager.h"
self.playerManager = [[PlayerManager alloc] init];
self.playerManager.view = self.view;
self.playerManager.viewContorller = self;
[self.playerManager setPortraitViewHeight: self.view.frame.size.height];
[self.playerManager buildMediaPlayer:self.pathTextField.text];
[self.playerManager.mediaPlayer.player.view removeFromSuperview];
[self.playerManager.controlVC.view removeFromSuperview];
[self.playerManager.mediaPlayer.player shutdown];
self.playerManager.mediaPlayer = nil;
当你要深入理解 SDK 的一些参数及有定制化需求时,可以从高级功能部分中查询阅读。
videoDecodeMode
解码方式分软解码和硬解码
UrlType
播放地址类型,区分为本地视频,网络视频,直播视频,使用UrlTypeAuto程序会根据相关规则为你选择播放类型,如果是http-flv直播,请必须设置为UrlTypeLive,hls点播必须设置为UrlTypeHttp;
currentPlaybackTime
当前播放时间点;
duration
视频总时间;
playableDuration
媒体可播放时长,主要用于表示网络媒体已下载视频时长
bufferingProgress
视频缓冲进度;
isPreparedToPlay
是否准备好可以播放
playbackState
媒体播放状态;
loadState
网络媒体加载状态
shouldAutoplay
是否自动播放
版本号 | 发布日期 | 说明 |
---|---|---|
1.5.5 | 2018.01.03 | 1、修复点播模式下playbackState状态不稳定问题 2、修复部分机型播放闪退问题 |
1.5.4 | 2017.12.27 | 1、增加音量调节接口,支持音量放大和静音 2、弃用部分API接口改用新命名接口 3、更新播放器内核 |
1.5.3 | 2017.11.22 | 1、demo增加错误重连逻辑 2、修复demo横竖屏切换时缓冲动画的位置问题 3、UCloudMediaPlayer.h增加dropframeInterval属性 4、本地日志路径改为可设置 |
1.5.2 | 2017.06.23 | 1、UCloudPlayback.h增加videofps(视频帧率)、downloadSpeed(实时下载速度)属性 |
1.5.1 | 2017.05.05 | 1、在demo层面加入对demo的友盟统计 2、调整播放器的时的默认参数设置 3、UCloudMediaPlayer.h增加videoToolboxEnabled属性 |
1.5.0 | 2017.04.18 | 1、调整播放质量采集 2、入本地日志模块,更方便普通用户定位问题,具体API详见UCloudMediaPlayer.h |
1.4.1 | 2017.03.17 | 1、增加对speex支持 2、优化内存消耗 |
1.4.0 | 2017.02.09 | 1、升级播放器解码内核 2、支持bitcode、动态库 3、修复selectDecodeMethod接口问题 |
1.3.0 | 2016.12.16 | 1、增加对https播放的支持 2、demo中增加直播、点播类型选择 |
1.2.5 | 2016.12.08 | 增加delayOptimization、cacheDuration、bufferDuration设置选项 |
1.2.4 | 2016.09.18 | 增加对FCSubscribe指令播放支持 |
1.2.3 | 2016.09.08 | 区分直播与点播的hls播放方式;hls播放流畅度优化 |
1.2.2 | 2016.07.29 | 优化弱网下音频播放体验 |
1.2.1 | 2016.07.27 | 优化直播追赶策略,使主动丢帧时声音更自然 |
1.2.0 | 2016.07.11 | 增加直播延迟丢帧效果,修复弱网情况下音效消失的问题 |
1.1.12 | 2016.05.16 | 1、修复鉴权失败时约束更新crash的问题(playerManager.m); 2、showMediaPlayer方法增加了urltype参数,每次重新播放时必须传入播放类型,以此解决使用单例模式下直播与点播来回切换状态相关没有重置的问题; 3、头文件UCloudMediaPlayer.h中的UrlType枚举UrlTypeUnkown改为UrlTypeAuto |
1.1.11 | 2016.05.04 | 更新libUCloudMediaPlayer.a(修改了播放api、优化对蓝牙设备、扬声器、耳机之间的处理);重新调整了demo初始状态的画幅设置;新增播放器创建方式 |
1.1.10 | 2016.04.29 | 修复弱网下偶现播放crash的bug;调整了播放器的初始化方式 |
1.1.9 | 2016.04.26 | 修改部分类与变量的命名 |
1.1.0 | 2016.02.19 | 播放器UI剥离 |
1.0.0 | 2016.01.23 | 优化推流时打开摄像头的流程;增加直播推流的模拟器库版本 |
0.9.1 | 2015.10.15 | 完成drm功能开发 |
0.9.0 | 2015.09.18 | 基本功能完成,UI编写使用完毕,文档初稿 |
有问题反馈或者交流请到https://github.com/umdk/UCDMediaPlayer_iOS/issues上提issues