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

ijkplayer 源码分析

ijkplayer 集成了三种播放器实现: AndroidMediaPlayer:即安卓系统自带的播放器 MediaPlayer,基于 MediaCodec、AudioTrack 等安卓系统 API....IjkExoMediaPlayer:即谷歌新推出的 ExoPlayer,同样是基于 MediaCodec、AudioTrack 等安卓系统 API,但相比 MediaPlayer 具有支持 DASH、高级...在 IjkMediaPlayer.java 中有一些 @CalledByNative 注解的方法,比如底层的播放状态回调,这些方法由底层主动调用,具体位于 IjkMediaPlayer.c 文件中。...FFPlayer 结构体中本身就有配置相关的成员变量的,比如控制音频输出设备的 “int opensles” 等,当我们调用一系列 setOption() 方法将播放配置存储在 player_opts...在 视频相关的理论知识与基础概念 中简单总结过视频播放原理,播放器必然是通过多线程同时进行解封装、解码、视频渲染等工作的,对于 Ijkplayer 来说,开辟的线程如下: ?

2.1K30

NDK--利用OpenSL ES实现播放FFmpeg解码后的音频流

OpenSL ES是无授权费、跨平台、针对嵌入式系统 精心优化的硬件音频加速API。当然安卓也使用了它,AudioTrack、MediaPlayer的音频播放,底层都是利用OpenSL。...和AudioTrack相同,它只接受流,不支持音频数据的编解码,所以需要结合第三方库来使用。 为什么要使用OpenSL?...一般应用使用安卓SDK提供的API就足够满足使用,但对于专门音频播放的APP,系统提供的方法就有点力不从心了,比如:AudioTrack利用native层调用OpenSL,必不可免的要进行java层流数据转化为...native层流数据,这就会造成一定延迟,而对于音频播放APP而言,这是不可接受的。...: 1、创建引擎接口对象 2、创建混音器 3、创建播放器(录音器) 4、设置缓冲队列和回调函数 5、设置播放状态 6、启动回调函数 这边现在java中编写对应native中的方法 package

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    打造H5动感影集的爱恨情仇【动画性能篇】

    Timeline是一款基于录制的工具,通过录制在浏览器中的一系列操作,系统会记录这个过程的所有细节数据,包括js计算、页面重绘、复合层消耗等,同时还保存着这个过程每一帧的截图。...2.前景放大动画 在邀请函模板里有一个前景由小变大的动画,但是在安卓机上产生了严重的渲染异常,如下图: ? 在IOS机器上没有重现,循例我查看了timeline。...结论: 背后的动画可能会影响当前动画的播放,在安卓4.0系统都会产生渲染异常的问题,因此应该把不在当前播放的动画停掉。 3.安卓逐帧渲染bug 更多的性能问题都不会产生严重的表现,最多是一点卡顿。...4.熟能生巧 – 性能优化的经验技巧 说了一些具体操作办法,最后来说一下我在开发过程中积累的经验。 1.以下属性的更优解决方案 左侧属性都很有可能会带来性能问题。 ?...2.动画坑点 兄弟元素间动画互相影响 当前播放的动画会因为其他结点动画还没结束而收到影响,安卓机器上会呈现逐帧渲染的表现。

    1.7K121

    打造H5动感影集的爱恨情仇(动画性能篇) - 腾讯ISUX

    Timeline Timeline是一款基于录制的工具,通过录制在浏览器中的一系列操作,系统会记录这个过程的所有细节数据,包括js计算、页面重绘、复合层消耗等,同时还保存着这个过程每一帧的截图。...2.前景放大动画 在邀请函模板里有一个前景由小变大的动画,但是在安卓机上产生了严重的渲染异常,如下图: 在IOS机器上没有重现,循例我查看了timeline。发现上面也没有异样,性能还是能保持流畅。...效果如图: 结论: 背后的动画可能会影响当前动画的播放,在安卓4.0系统都会产生渲染异常的问题,因此应该把不在当前播放的动画停掉。...3.安卓逐帧渲染bug 更多的性能问题都不会产生严重的表现,最多是一点卡顿。但是安卓4.0的渲染异常却是常会出现,为此我再找一个例子。...2.动画坑点 兄弟元素间动画互相影响 当前播放的动画会因为其他结点动画还没结束而收到影响,安卓机器上会呈现逐帧渲染的表现。

    1.4K40

    H5案例分享:微信视频播放全屏问题(转)

    微信视频播放全屏问题    在ios和安卓手机里的微信下播放视频时,会遇到不少问题,例如需要手动点击,视频才会播放,并且视频会跳出微信框,出现控制条,如果视频不是腾讯视频,播放完毕会出现腾讯视频的广告推送...x5-video-player-type:启用同层H5播放器,就是在视频全屏的时候,div可以呈现在视频层上,也是WeChat安卓版特有的属性。...同层播放别名也叫做沉浸式播放,播放的时候看似全屏,但是已经除去了control和微信的导航栏,只留下"X"和"的同层播放器只在Android(包括微信)上生效,暂时不支持iOS。...至于为什么同层播放只对安卓开放,是因为安卓不能像ISO一样局域播放,默认的全屏会使得一些界面操作被阻拦,如果是全屏H5还好,但是做直播的话,诸如弹幕那样的功能就无法实现了,所以这时候同层播放的概念就解决了这个问题...不过在测试的过程中发现,不同版本的ISO和安卓效果略有不同。 x5-video-orientation:声明播放器支持的方向,可选值landscape 横屏, portraint竖屏。

    6.8K30

    CovertBand:连“啪啪啪”都能识别的身体运动信息测试

    在提倡数据安全和隐私保护的今天,该项研究试图证明,在毫不知情的前提下,你的身体运动动信息可能正被测试者能通过智能设备进行窃取。...实现方法 把CovertBand测试应用伪装一个第三方安卓手机APP,设法在目标人物手机上成功完成安装后,当手机播放音乐或语音时,该APP会调用安卓系统的AudioTrack接口,混淆在其中,隐蔽发射频率为...18-20 kHz特定构造的音频信号;同时,测试者调用安卓系统的AudioRecord接口,录制18-20 kHz特定音频信号产生的背散射信号。...这种测试,可以不需要对扬声器和麦克风进行特定位置的移动摆放,可以执行多种扬声器和麦克风的音频播放和录制数据组合测试,而且只需把具体扬声器和麦克风的相关设备放置在监控目标对象蔽障物外即可。...测试产生的信号 以下图示中,左边为扬声器在播放19 kHZ音频时,麦克风录制的背散射信号频谱,右边为隐藏在扬声器播放音乐(低于10 kHZ)中的正交频分复用信号(OFDM Signal,18-20 kHZ

    925110

    Android音频播放(本地网络)绘制数据波形,根据特征有节奏的改变颜色

    ),包含了音视频播放,音视频录制等...但是还有一个被遗弃的熊孩子AudioTrack,这个因为太不好用了而被人过门而不入(反正肯定不是因为懒),这Android上多媒体四大家族就齐了,MediaPlayer...、MediaRecord是封装好了的录制与播放,AudioRecord、AudioTrack是需要对数据和自定义有一定需要的时候用到的。...但是问题来了,首先AudioTrack只能播放PCM的原始音频文件,那要MP3怎么办?...下面直接看代码吧,都有注释(真的不是懒得讲╮(╯_╰)╭): 流程就是定义好buffer,初始化MediaExtractor来获取数据,MediaCodec对数据进行解码,初始化AudioTrack播放数据...因为上一期的波形播放数据是short形状的,所以我们为了兼容就把数据转为short,这里要注意合成short可能有大小位的问题,然后计算音量用于提取特征值。

    3.5K20

    AndroidStudio 开发基础知识【翻译完成】

    二十三、Android Jetpack 视图模型教程 三十四、安卓 Jetpack 实时数据教程 三十五、安卓 Jetpack 数据绑定概述 三十六、安卓 Jetpack 数据绑定教程 三十七、安卓视图模型保存状态教程...三十八、使用安卓生命周期感知组件 三十九、 安卓 Jetpack 生命周期感知教程 四十、导航架构组件概述 四十一、安卓 Jetpack 导航组件教程 四十二、在安卓系统上创建和管理溢出菜单 四十三、...七十一、使用视频视图和媒体控制器类在安卓系统上播放视频 七十二 安卓画中画模式 七十三、安卓画中画教程 七十四、安卓系统中的运行时权限请求 七十五、使用MediaPlayer和MediaRecorder...七十八、使用视频视图和媒体控制器类在安卓系统上播放视频 七十九、安卓画中画模式 八十、安卓画中画教程 八十一、安卓系统中的运行时权限请求 八十二、使用MediaPlayer和MediaRecorder...虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。

    3.2K30

    Android 音量系统分析

    我们知道在使用手机扬声器播放音乐时调整音量后,如果插入耳机,从耳机听到的音量并没有变化。在Android系统中,定义了一系统输入和输出设备,针对每个输入与输出设备的音量也是不一样的。...音量的持久化在Android 6.0以前是保存到设置数据库setting.db的System表中,具体如下: 上图中后缀为headset的就是耳机相关音量,比如:耳机铃声音量,耳机MIC音量。...在Android 6.0及以后的版本为了加快响应速度,采用了xml的形式来存储的。 在用户做音量调整时,会保存到数据库或者xml中以实现音量的持久化。...的setStreamVolume中只是保存当前音量值,然后发送通知在输出音频时按新的音量计算。...所涉及到的音频系统子模块包括AudioService、AudioPolicy和AudioFlinger,每个子模块都用各自的数据结构缓存了stream音量,持久化在设置数据库的system表中或者XML

    4.2K00

    音视频入门之音频采集、编码、播放

    在录音过程中,应用所需要做的就是通过后面三个类方法中的一个去及时地获取AudioRecord对象的录音数据....当然播放不了。 那如何才能在播放器中播放我录制的内容呢? 答: 在文件的数据开头加入AAC HEAD 或者 AAC 数据即可,也就是文件头。...这和平时通过write系统调用往文件中写数据类似,但这种工作方式每次都需要把数据从用户提供的Buffer中拷贝到AudioTrack内部的Buffer中,这在一定程度上会使引入延时。...MODE_STATIC:这种模式下,在play之前只需要把所有数据通过一次write调用传递到AudioTrack中的内部缓冲区,后续就不必再传递数据了。...AudioTrack不创建解码器,所以只能播放不需要解码的wav文件。 3.1 音频流的类型 在AudioTrack构造函数中,会接触到AudioManager.STREAM_MUSIC这个参数。

    3.6K00

    被朋友圈 live 图刷屏了

    live 图,通常指的是苹果设备上的 live photo 功能所拍摄的照片,live photo最早由苹果公司在 2015年 发布的 iPhone 6s上引入,随后迅速普及到其后的 iPhone 型号...,这种照片形式在拍摄时不仅保存了一张高质量的静态图片,还记录了前后各1.5秒的视频和声音,因此整个文件包含 3 秒的动态片段,然而,live 图的格式并非所有平台和设备都能兼容。...HEIC 文件,Mov 格式的文件在苹果设备上都能顺利播放,但在某些其他操作系统的设备上可能需要安装 QuickTime 播放器,尤其 live photo 的 Mov 文件通常为 HEVC 编码,这让即使原本支持...,导致 live 图没办法在 iOS 之外的系统灵活地动起来。...其实也可以看到现在朋友圈的 live photo 也还没有开放给安卓用户,大多数平台不能完全做到安卓用户和 iOS 用户顺畅互动。

    6610

    短视频客户端SDK设计与实现

    本文是全民快乐研发高级总监展晓凯在LiveVideoStackCon 2017上分享的整理,主要从架构设计、模块的拆分实现、跨平台视频处理系统和推流系统的构建几部分着重介绍。...最终输出会分为几部分:首先是预览,比如用手机录制视频时,在屏幕上会有预览画面;第二部分是编码,在安卓平台采用硬件编码+软件编码,而iOS平台的兼容性较好,所以只采用硬件编码就可以达到要求;最后将音视频数据封装成一个容器...用户在K歌过程中需要混入伴奏音乐,对于安卓平台而言,需要有一个MP3的Decoder,它可以通过MAD、Lame或者FFmpeg等开源库来实现,最终通过AudioTrack 的API或者OpenSL ES...安卓平台通过Camera采集视频,在Output中首先是通过EGL Display来回显预览界面,其次编码则是采用MediaCodec硬件编码和Libx264软件编码相结合的实现方式(由于安卓平台硬件编码有可能出现兼容性问题...编码后的数据会放到H.264队列中,那么这里的生产者就是编码器,消费者实际上是Consumer模块,它把H.264队列中数据Mux后再进行IO操作(输出到磁盘成为mp4文件或者输出到流媒体服务器)。

    4.1K20

    安卓ios兼容问题及处理(小程序H5)

    微信小程序中new Date()转换时间时间格式时IOS不兼容的问题 问题:然后利用new Date() 转换时间戳时,使用微信开发工具、安卓都没问题,ios中无法展示并报错 “invalid date...IOS机型margin属性无效问题 问题: 底部footer设置margin属性的时候发现真机IOS上无效,在微信开发者工具/安卓手机/谷歌iphone/安卓机型皆正常 原因: iOS8后,UIView...,安卓正常 问题 :video 视频格式m3u8,在ios里边儿不能播放,但是安卓能正常播放 原因:xxx 解决办法:添加 custom-cache={{cache}} ,data 中添加 cache:...安卓/IOS图片卡顿异形 问题 :安卓上图片会出现卡顿,变形,然后才会显示正常的图片大小 原因: image组件默认宽度300px、高度225px 解决办法: 使用image 标签,尽量固定宽高。...键盘弹出异常 问题: ios上键盘弹出会将页面往上顶 安卓显示正常 原因: ios上的软键盘会使页面的fixed定位失效。

    7.8K71

    使用 AudioTrack 播放音频轨道

    在上篇文章 OpenGL ES 实现播放视频帧 中我们已经知道如何使用 GLSurfaceView 将解码后的视频渲染到屏幕上,但是,我们的播放器还不具备音频播放的功能,在本篇文章中我们将使用 AudioTrack...03 AudioTrack API 介绍 在 Android 中,如果你想要播放一个音频文件,我们一般优先选用 MediaPlayer,使用 MediaPlayer 时你不需要关心文件的具体格式,也不需要对文件进行解码...AudioTrack 是播放音频的另外一种方式 「如果你感兴趣还可以了解下 SoundPool」, 并且只能用于播放 PCM 数据。 AudioTrack API 概述 : 1....写入数据 /** * @param audioData 保存要播放的数据的数组 * @param offsetInBytes 在要写入数据的audioData中以字节表示的偏移量 *...刷新缓冲区数据 public void flush() 刷新当前排队等待播放的数据,已写入当未播放的数据将被丢弃,缓冲区将被清理。

    2.1K31

    多媒体-iOS与Android的音频文件互通

    前言 在实际的开发中,关于音频的传输上,iOS与Android的通用性一直是一个不可回避的问题。下面记录下比较好的解决方案。 ---- 现状 苹果的音频格式安卓全不支持。...安卓的音频格式,苹果基本也不支持 解决方案 安卓和iOS方面都把音频格式转化为 .mp3格式 对于这个解决方法一定要提醒一下,不是把文件的格式名称修改为 .mp3 就OK的,一定要是 mp3点编码格式...而文件的格式后缀是 .mp3,结果iOS这边一直无法播放,而且打开把该文件在服务器上的路径粘到浏览器中也是无法识别和播放的。 .amr 格式的苹果这边也是无法播放的。...Snip20161207_2.png 安卓方不做处理,iOS端 Wav 转 amr 给安卓使用,把安卓的amr 转化为 wav 给自己使用 由于安卓那边的录音默认的保存格式就是 amr,而苹果这边也可以把音频文件输出为...wav格式进行保存,所有只要 iOS端 Wav文件 转 amr 格式给安卓使用,把安卓的amr 文件转化为 wav格式 给自己使用即可解决iOS与Android的音频文件互通问题。

    3.2K20

    网页视频下载方法

    问题 有时候我们在做PPT或者撰写一些报告、案例的时候,需要一些视频作为素材,网上搜到后,想下载却比较麻烦,有的在专业视频网站上,有的在新闻网站上,有的在机构网站上,有的在社交媒体上,有没有简便、快速、...解决办法 非专业视频网站上的视频 以下两种办法需要使用谷歌浏览器Chrome电脑版 打开视频所在的网页,右键——>审查元素——>点击左上角的小箭头——>在页面中选中视频界面——>在审查元素面板中查看视频地址...打开视频所在的网页,右键——>审查元素——>在网页上播放视频——>审查元素面板的Network选项——>按照Size选项卡排序,一般视频文件的Size较大——>在审查元素面板中点击Size较大的元素,...在Headers中查找视频地址(Request URL) 如果上述两种方法能找到可下载的视频地址(如mp4,flv为后缀的URL链接),直接在新的页面打开视频链接,然后右键另存为即可下载视频。...终极大杀器 在安卓手机上使用UC浏览器(2019年的版本),打开视频网址,播放视频时,右上角有下载按钮,点击后可以在后台自动下载。记住,是安卓手机,UC浏览器(2019年的版本)。

    6.4K20

    实时音视频通讯过程中声音的那些事儿

    这个噪声问题是在科大讯飞语音识别服务对接过程中遇到的,由于项目需要,我司的移动端(安卓和苹果)SDK 需要集成科大讯飞的语音识别功能,并做成一个可选功能对外提供。...由于安卓和苹果底层是用一套 C++代码实现的,对外接口单独封装了 Java 层和 OC 层,所以在音频 PCM 数据的组织上,我在 C++层实现了数据采集、存储和处理操作。...最开始的时候,我将音频数据保存为 16 位短整型,安卓端 SDK 通过 JNI 层的数据转换,转换为 8 比特的音频原始数据,再由 Java 层回调科大讯飞的语音识别接口,是没有问题的,语音内容能够以文字的形式返回...最后,我猜测只有一种可能,问题出在了 16 位短整形转换成 8 位的字节数据上。为了验证我的想法,我将转换后的 8 位音频数据保存下来,播放时果然发现了问题,存在严重的噪音!...接下来,通过一个典型的案例来分析一下实际项目中的回声问题。 在视频会议产品中,我司采购了一批安卓盒子,用做视频会议设备终端。

    2.2K20

    实时音视频通讯过程中声音的那些事儿

    这个噪声问题是在科大讯飞语音识别服务对接过程中遇到的,由于项目需要,我司的移动端(安卓和苹果)SDK 需要集成科大讯飞的语音识别功能,并做成一个可选功能对外提供。...由于安卓和苹果底层是用一套 C++代码实现的,对外接口单独封装了 Java 层和 OC 层,所以在音频 PCM 数据的组织上,我在 C++层实现了数据采集、存储和处理操作。...最开始的时候,我将音频数据保存为 16 位短整型,安卓端 SDK 通过 JNI 层的数据转换,转换为 8 比特的音频原始数据,再由 Java 层回调科大讯飞的语音识别接口,是没有问题的,语音内容能够以文字的形式返回...最后,我猜测只有一种可能,问题出在了 16 位短整形转换成 8 位的字节数据上。为了验证我的想法,我将转换后的 8 位音频数据保存下来,播放时果然发现了问题,存在严重的噪音!...接下来,通过一个典型的案例来分析一下实际项目中的回声问题。 在视频会议产品中,我司采购了一批安卓盒子,用做视频会议设备终端。

    2.5K10

    音视频开发之旅(35) -FFmpeg + AudioTrack 实现音频解码和播放

    目录 音频解码流程 解码音频为pcm 使用AudioTrack播放音频 资料 收获 上一篇我们了解了FFmpeg解码流程、关键函数和结构体,实现了视频解码器。这篇我们来实现下音频的解码器。...解码流程和视频的基本一致。FFmpeg解码的音频裸数据是PCM格式,android上播放PCM音频数据可以通过AudioTrack和OpenSL ES来实现。...播放PCM音频 这一小节我们再上一小节解码输出PCM音频数据的基础上,再Native层调用Java层的AudioTrack进行完成音频的播放。...MODE_STATIC and MODE_STREAM STATIC模式:一次性将所有的数据放到一个固定的buffer,然后直接传送给AudioTrack,简单有效,通常应用于播放铃声或者系统提示音等...,占用内存较少的音频数据 STREAM模式:一次一次的将音频数据流写入到AudioTrack对象中,并持续处于阻塞状态,当数据从Java层到Native层执行播放完毕后才返回,这种方式可以避免由于音频过大导致内存占用过多

    1.9K00
    领券