首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ExoPlayer播放音视频使用介绍

ExoPlayer是一款开源应用级媒体播放器,基于Android低级媒体API构建。本指南描述了ExoPlayer库及其使用。它是指ExoPlayer主要演示应用程序代码,以提供具体示例。...因为ExoPlayer一个包含在应用程序apk库,所以您可以控制使用哪个版本,并且可以轻松地将其更新新版本,作为常规应用程序更新一部分。...四、开始入门 使用ExoPlayer一个简单用例,主要包括以下步骤: 将ExoPlayer作为依赖添加到您项目中。 创建一个SimpleExoPlayer实例。...这可以通过调用ExoPlayer.release完成。 五、媒体资源(MediaSource)使用 在ExoPlayer每个media都由 MediaSource 表示。...(1)从侧面加载字幕文件 给定一个视频文件和一个单独字幕文件,可以使用 MergingMediaSource 将它们合并到单个播放

6.1K20

YouTube开源播放器中文使用指南

可以根据用户需求方便对播放器行为进行定制和扩展,ExoPlayer很多组件都支持自定义和扩展。 支持播放视频列表,并且可以支持对视频裁剪、合并,以及循环播放设置。...使用 我们只要按照下面的步骤就能简单ExoPlayer使用起来了: 1、添加对ExoPlayer依赖 2、创建一个SimpleExoPlayer实例 3、将播放器关联到播放渲染View上...() } 在app modulebuild.gradle添加对ExoPlayer依赖: implementation 'com.google.android.exoplayer:exoplayer...JavaVersion.VERSION_1_8 } 创建播放器实例 ExoPlayer提供了一个工厂类ExoPlayerFactory用来实例化不同ExoPlayer对象。...所以当需要播放媒体资源时,你得先创建一个和资源相关MediaSource对象,然后通过ExoPlayer.prepare方法将封装对象传入。

3.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

音视频开发之旅(44)-ExoPlayer介绍及简单使用

ExoPlayer没有设定可以播放媒体类型、存储方式以及渲染方式,也没有直接实现加载和播放。而是在播放器被创建或者准备播放时将这些工作代理给注册组件来实现。...) ExoPlayer这些组件提供了默认实现,如果需要定制可以自定义组件来扩展实现。...在我们日常项目开发,开发一个组件 从易用性和以扩展性方面考虑,既要保证使用者很容易上手使用(提供一套默认实现),又要有方便使用者根据自己场景进行方便扩展能力。...值,该值表达了使用者意愿,true,将会开始播放,否则不播。...'com.google.android.exoplayer:exoplayer-ui: 2.13.3' 接下来出创建一个容器PlayerView以及ExoPlayerView进行播放 2.2 创建播放器

6.7K00

音视频开发之旅(45)-ExoPlayer 音频播放器实践(一)

通过上一篇学习实践,我们了解了ExoPlayer优缺点以及基本用法,今天我们进入ExoPlayer音频播放实践,我们来一起实现一个简单音频播放器。...通过将音频应用程序两个部分分解单独组件,每个组件可以独立运行。与播放器相比,UI通常是短暂,可能会在没有UI情况下运行很长时间。...封装了媒体相关一些功能,通过onGetRoot返回值决定是否允许客户端连接。...也包含媒体播放器实例(比如我们本篇实践ExoPlayer) MediaSession 一般在MediaBrowserServiceonCreate创建,通过MediaSession.CallBack...在具体实践之前我们先来学习分析下uamp这个google开源音频播放器是如何架构,看看在数据设置以及播放管理方面是否可以学习借鉴。

4.9K00

ExoPlayer漫谈之解码器复用

目前ExoPlayer最新版本是2.12.2, 而且保持着凉州一个小版本, 两个月一个大版本更新节奏, google工作效率还是比较高....ExoPlayer 2.10版本之前codec复用 disabled状态, 在此状态下, 渲染器没有要播放媒体流并且不保存解码器实例。...在2.10之前版本,只要视频渲染器保持在启用和启动状态,ExoPlayer就会尽可能重复使用视频解码器。特别是,这意味着从播放列表一种媒体过渡到另一种媒体时,视频解码器将被重用。...一句话, 想复用codec实例,不能调用stop方法,不能将codec置disabled状态 ExoPlayer 2.10版本之后codec复用 2.10版本可以保证在播放新视频时候复用播放器解码器资源...我们如何复用解码器 保证你播放视频格式是相同,例如短视频信息流都是H264/AAC编码格式 如果使用ExoPlayer播放器,最好使用同一个ExoPlayer实例,因为codec实例是封装在ExoPlayer

2.1K31

ExoPlayer 漫谈之解码器复用

目前ExoPlayer最新版本是2.12.2, 而且保持着凉州一个小版本, 两个月一个大版本更新节奏, google工作效率还是比较高....ExoPlayer 2.10版本之前codec复用 disabled状态, 在此状态下, 渲染器没有要播放媒体流并且不保存解码器实例。...特别是,这意味着从播放列表一种媒体过渡到另一种媒体时,视频解码器将被重用。在渲染列表过渡到禁用状态时,音频解码器不会在此类播放列表过渡重用,视频或音频解码器也不会重用。...一句话, 想复用codec实例,不能调用stop方法,不能将codec置disabled状态 ExoPlayer 2.10版本之后codec复用 2.10版本可以保证在播放新视频时候复用播放器解码器资源...我们如何复用解码器 保证你播放视频格式是相同,例如短视频信息流都是H264/AAC编码格式 如果使用ExoPlayer播放器,最好使用同一个ExoPlayer实例,因为codec实例是封装在ExoPlayer

2.5K60

ExoPlayer 多路流切换

二、常见切码流方案 DASH/HLS 切换: 这种切换相对来说是最友好方式,可以在不中断播放情况下,在下一个媒体片段处实现平滑切换,这种方式也是很多应用最常用方案,无论是开发成本和用户体验也是最优方案之一...双播放器切换: 这种是一种相对来说比较原始方案,正在播放过程,启动一个播放器播,并且将渲染画布alpha设置透明,同时新播放器Seek到比当前播放器播放位置更靠前地方,直到播放位置大概相同时切换画布透明度...3.1 首先了解下多路流切换可以实现功能。 原伴唱切换 音频品质切换 视频清晰度切换 其他渲染器资源切换 3.2 什么是多路流? 所谓多路流是指播放过程,存在多个I/O相关媒体资源。...3.3 MediaPlayer是否支持多路流 不支持,也没法切换 3.4 ExoPlayer如何将多路流输入到播放器?...Renderer和每个SampleStream,判断当前正在使用渲染器Track流是否匹配 //注意:这里是循环,说明我们切换多路流时可以同时切换音频和视频等轨道 boolean

90331

ExoPlayer 自适应流切换分析

MediaSource 媒体:在ExoPlayer,得益于对从DataSource抽象出了MediaSource,使得ExoPlayer在多路流管理方面更加灵活方便。...三、自适应流切换分析 3.1 原理图 在不同网速时自动切换为兼容当前bitrate媒体流,匹配条件一般在自适应流清单文件中就已经提前设定了,保证当前网络bitrate大于清单协议媒体最低bandWidth...从图上可知,每个分片播放时间和I帧开始位置也需要做到严格对齐。 注意:之所以强调默认情况,一个重要原因是ExopPlayer具备高度可扩展性,我们可以通过修改部分代码实现其他行为。...答案是否,因为MergingMediaSource合并是完整资源,在使用过程并不会调用TrackSelection相关方法,当然ExoPlayer也没有实现资源动态分片。...,就能实现分片切换,当然,每个部分代码量实在太多包括,资源加载部分也是一个核心环节,这里就不在继续分析了。

1K30

05.视频播放器内核切换封装

比如需要支持播放器UI高度定制,而不是该lib库UI代码 针对视频播放,音频播放,播放回放,以及视频直播功能。...,或者腾讯播放器内核 传入不同类型方便创建不同内核 隐藏内核播放器创建具体细节,开发者只需要关心所需产品对应工厂,无须关心创建细节,甚至无须知道具体播放器类类名。...先来看一下创建不同内核播放器代码,只需要开发者传入一个类型参数,即可创建不同类实例对象。...如果希望在使用这些内核player时,不需要知道这些具体内核名字,只需要知道表示该内核类一个参数,并提供一个调用方便方法,把该参数传入方法即可返回一个相应内核对象,此时,就可以使用工厂模式。...首先定义一个工厂抽象类,然后不同内核播放器分别创建其具体工厂实现具体类 PlayerFactory:抽象工厂,担任这个角色是工厂方法模式核心,任何在模式创建对象工厂类必须实现这个接口 ExoPlayerFactory

2.1K20

【错误记录】Android 编译报错 ( Could not resolve com.google.android.exoplayer:exoplayer:r | 依赖下载失败通用解决方案总结 )

二、解决方案 Gradle 下载 依赖库 出现问题 , 按照下面的步骤 进行操作检查 ; 1、检查依赖库是否存在 ExoPlayer 是 Google 提供一个在 Android 平台上媒体播放器..., 它支持多种媒体格式和流媒体协议 ; ijkplayer-exo 是 BliBli 对 Google ExoPlayer 播放器封装 , 通过封装 ExoPlayer,ijkplayer-exo...软件包是否存在 , 这是 https://github.com/google/ExoPlayer GitHub 地址 ; 2、检查版本号是否正确 上述报错信息是 " Could not resolve.../google/ExoPlayer/tags 页面 , 确认版本号是否存在 ; 3、检查仓库地址配置 ( 本案例解决方案 ) 确保配置 Maven 仓库地址正确 ; 在 根目录下 build.gradle...文件配置 allprojects / repositories 配置 就是 Maven 仓库地址 , 比如 jcenter() 或 mavenCentral() , 以便 Gradle 下载依赖时

9010

QQ音乐MV播放杂音问题解析

结合上图,总结关键步骤(图中内容从左往右,以音频解码播放例): 播放器初始化: stream_open主要创建读数据线程read_thread 创建存放audio解码前数据队列audioq 创建存放...(ffp, st_index[AVMEDIA_TYPE_AUDIO]) ⑥读取媒体数据,获得AVPacketav_read_frame(ic, pkt) ⑦音视频数据分别送入audioq 重复⑥、⑦步骤到数据完毕...备注: ExoPlayer对多音频流ts分片支持不完善(issue),因此测试时需要调整相关接口。...但选择规则依然以上述所示(DefaultTrackSelector) iOS和PC端采用闭组件,因此测试时使用了“互换两条音频流顺序”方法进行测试。...和ExoPlayer会根据音频流属性来选择数值更好一条。

5.3K10

HLS 和 DASH 多编解码器和封装

目录 fuboTV 公司简介 展示关键要点 视频传输系统高级概述 播放器及设备 理想情况 多包解决方案 播放器对多 codec 列表支持性 一个有 DRM 理想世界 通用媒体格式 CMAF 边缘逻辑...实例上进行转码和打包; S3 模块播出; Cloudfront 用于播放 CDN; 用于多编解码器逻辑 Lambda 边缘。...一个有 DRM 理想世界 如果加入了 DRM(数字版权管理),理想情况下可以做到: 将一组 fmp4 转码 h264 和 h265 输出; 从一组转码 h264 和 h265 输出打包和加密 HLS...通用媒体格式 CMAF 想要做到所有设备解密所有媒体格式,那就必须有一个通用媒体格式。...; 随着时间推移,只有新编码才会有 hevc,我们使用视频来确定这是否是 hevc 和 avc。

2.1K40

追根溯源解杂音之谜,臻于至善得完美音质

分析播放流程如上图(图中内容从左往右),概括其关键步骤如下: 播放器初始化: 创建读数据线程:read_thread; 创建存放audio解码前数据队列:audioq; 创建存放audio解码后数据队列...数据读取: ①创建context; ②探测协议类型:avformat_open_input; ③探测媒体类型:avformat_find_stream_info; ④获取音视频流:av_find_best_stream...; ⑤打开媒体解码器:stream_component_open; ⑥读取媒体数据,获得AVPacket:av_read_frame(ic, pkt); ⑦音视频数据分别送入audioq; 重复⑥、⑦...备注: ExoPlayer对多音频流ts分片支持不完善(issue),因此测试时需要调整相关接口。...和ExoPlayer会根据音频流属性来选择数值更好一条。

3K81

基于ExoPlayerExoPlayerVideoView

写在前面 在Android设备,播放视频和音乐是非常普遍。Android框架提供了一个对于媒体操作最省代码解决方案:MediaPlayer。...它提供了低等级媒体API,例如:MediaCodec,AudioTrack,MediaDrm,可以用于建立自定义媒体播放解决方案。...本文并不是讲述ExoPlayer如何使用,而是一款基于ExoPlayerVideoView。ExoPlayerVideoView旨在提供一个快捷视频播放布局解决方案。 概览 ? 亮度调节 ?...音量 开始 ExoPlayerView 是一个基于ExoPlayer视频播放器,并且做了很多封装。...); 注意:不要忘记释放ExoPlayer: videoView.releaseSelfPlayer(); 可以通过如下方式视频设置一个显示名称: mediaSource.setDisplayName

3.8K30

可折叠设备桌面模式

△ Duo 应用在优化前后对比 在这篇文章,您会了解到一个简单而又高效方式来使您应用在可折叠设备上运行时适配布局。...这是一个简单媒体播放器案例,它会自动调节尺寸以避免让折叠处出现在画面中间,并且调整播放控制组件位置,从屏幕完全展开时嵌入画面,变为当屏幕部分折叠时显示单独面板。...前期准备 示例应用使用了 Exoplayer,这是 Android 平台上非常流行开源媒体播放库。...套件,您可以通过它们来 PlayerView (显示媒体界面) 和 PlayerControlView (播放控件容器) 指定不同布局。...如果您要实现横屏功能,那么大多数时候,边界会以一个在屏幕垂直居中矩形来表示,它和屏幕一样宽,并且高度与铰链相同 (对于可折叠设备而言值 0,对于双屏幕设备而言会是两个屏幕之间距离)。

2.3K30

4款知名播放器比较:ijkPlayer、VLC、SmartPlayer、ExoPlayer

ijkPlayer ijkPlayer是BiliBili公司维护一个开源工程,基于ffmpeg开发一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay基础,如果只是使用它进行播放...,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。...SmartPlayer SmartPlayer是大牛直播SDK(Github)开发全自研跨平台(windows/android/iOS)流媒体内核,支持RTSP、RTMP,功能齐全、高稳定、超低延迟,...实时静音/取消静音; [实时音量调节]支持播放过程实时调节音量; [实时快照]支持播放过程截取当前播放画面; [只播关键帧]Windows平台支持实时设置是否只播放关键帧; [渲染角度]支持...ExoPlayer ExoPlayer 是google推出开源播放器,主要是集成了Android 提供一套解码系统来解析视频和音频,将MediaCodec封装地非常完善,形成了一个性能优越,播放稳定性较好一个开发播放器

7.3K70

追根溯源解杂音之谜,臻于至善得完美音质

二、播放流程概览 分析播放流程如上图(图中内容从左往右),概括其关键步骤如下: 播放器初始化: 创建读数据线程:read_thread; 创建存放audio解码前数据队列:audioq; 创建存放...数据读取: ①创建context; ②探测协议类型:avformat_open_input; ③探测媒体类型:avformat_find_stream_info; ④获取音视频流:av_find_best_stream...; ⑤打开媒体解码器:stream_component_open; ⑥读取媒体数据,获得AVPacket:av_read_frame(ic, pkt); ⑦音视频数据分别送入audioq; 重复⑥、⑦...分析了以上选择规则后,我们对各平台、框架进行了选择规则对比: 备注: ExoPlayer对多音频流ts分片支持不完善(issue),因此测试时需要调整相关接口。...和ExoPlayer会根据音频流属性来选择数值更好一条。

80600

音视频全链路技能分析之音视频消费侧技能树

协议支持: 除了我们熟知http和https协议,一些流媒体协议rtmp、rtsp等协议也是需要支持,就以常用rtmp协议例,可以是http包裹着rtmp流,也可以rtmp协议直接封装流。...这儿只是给出一个帧序列例子,帧序列可以有很多种排列。 ? 在一帧,分成多个片,每个片中分成多个宏块,每个宏块分成多个子块,这样将一张大图分解成一个个小块,可以方便进行空间上编码。...目前ffplay和ExoPlayer都是以音频基准来完成音视频同步。 介绍一下音视频同步重要参数DTS和PTS,音视频中都有DTS与PTS。...当画布创建好时,可以将surface绑定到MediaPlayer。...SurfaceView如果用户可见时候,创建SurfaceViewSurfaceHolder用于显示视频流解析帧图片,如果发现SurfaceView变为用户不可见时候,则立即销毁SurfaceView

1.5K30
领券