Android 最简单的播放器之MediaExtractor封装(一)
摘要:一、概述 案例:使用MediaExtractor+MediaFormat加载媒体文件信息。为后面使用MediaCodec硬件解码提供基础封装工具类 二、封装代码 1.IExtractor接口(定义公共方法) public interface IExtractor { /** * 获取媒体格式 * *
阅读全文
posted @
2021-11-03 15:55
飘杨......
阅读(827)
推荐(0) 编辑
Android最简单的视频播放器之GLSurfaceView+OpenGL ES+MediaCodec硬件解码实现(四)
摘要:一、概述 案例:使用硬件解码MediaCodec+OpenGL ES来实现一个视频播放器。 源码下载 重点概要: 1.音视频文件提取器MediaExtractor 2.音视频硬件解码API MediaCodec 3.视频渲染使用OpenGL ES、音频渲染使用AudioTrack封装的AudioPl
阅读全文
posted @
2021-11-02 14:09
飘杨......
阅读(2287)
推荐(0) 编辑
16进制颜色透明度对照表
摘要:一、概述 案例:在开发的过程中,UI在设计的时候有很大的概率会把字体颜色、背景颜色设置成带透明度的。此时就是用16进制颜色透明度对照表的大好时机。 二、对照表示例 00% — FF 99% — FC 98% — FA 97% — F7 96% — F5 95% — F2 94% — F0 93% —
阅读全文
posted @
2021-10-25 17:50
飘杨......
阅读(1494)
推荐(0) 编辑
解决Glide+RecyclerView gif动画加载后不播放问题
摘要:一、概述 项目中RecyclerView+Glide加载网络的gif动画,但是列表中红gif动画在华为手机上并不显示(鸿蒙os),尝试了很多方法,oppo和小米均正常。最后测试下来是传入的Context有问题。把Context换成Activity或者Application 后动画自动执行了。 ps:
阅读全文
posted @
2021-09-22 19:04
飘杨......
阅读(1431)
推荐(0) 编辑
Android使用FFMpeg生成pcm格式音频,并利用AudioTrack播放出来
摘要:一、场景 1.可任意选择一个媒体文件(avi、mp4、ts、mp3),解析除媒体文件的音频,并保存为pcm,然后利用AudioTrack播放pcm。 2.主要类介绍Java文件: a.PcmDecoder.java 用于和jni通讯的java类,里面定义了三个方法,初始化:init、解码:decod
阅读全文
posted @
2021-08-31 11:48
飘杨......
阅读(1111)
推荐(0) 编辑
Android WebRTC利用DataChannel收发文本数据和传输文件
摘要:一、概述 利用WebRTC的DataChannel发送文本数据以及传输文件 二、实例代码演示 1.初始化DataChannel以及注册DataChannel的回调函数 /** * 创建DataChannel * * @param socketId 用户id * @return 数据通道 */ pub
阅读全文
posted @
2021-08-14 14:36
飘杨......
阅读(3046)
推荐(0) 编辑
Android WebRTC实现屏幕共享
摘要:一、WebRTC实现简单的屏幕共享 屏幕共享原理:其实就还是利用系统提供的录屏服务,把录制好的屏幕内容通通过P2P发送给对等端,让对等端能够看到分享者的屏幕。其实对于分享者来说是推流,对于观看分享的端来说就是拉取视频流 二、代码演示 1.初始化截屏服务 //屏幕截取服务 private MediaP
阅读全文
posted @
2021-08-14 14:22
飘杨......
阅读(4247)
推荐(0) 编辑
Android WebRTC切换摄像头
摘要:if (videoCapturer != null) { videoCapturer.switchCamera(new CameraVideoCapturer.CameraSwitchHandler() { @Override public void onCameraSwitchDone(boole
阅读全文
posted @
2021-08-12 18:19
飘杨......
阅读(704)
推荐(0) 编辑
Android WebRTC 1v1通话样例
摘要:一、概述 WebRTC是一套音视频实时通讯的解决方案,利用它我们可以很方便的只做出1v1 1v多 多v多的通话应用。如:音视频聊天、视频会议、直播等。而且这玩意完全开源、免费做应用不用担心版权,想要深入学习,直接撸源码。非常nice。今天主要介绍一下单对单视频通话场景,并在最后给出核心样例代码。 二
阅读全文
posted @
2021-08-12 18:16
飘杨......
阅读(695)
推荐(0) 编辑
Android读取NFCA类型的数据
摘要:一、概要 本例子为读取nfca类型的数据,应用场景是读取燃气卡的id。 二、示例代码 1.在AndroidManifest.xml中加入nfc权限 <!-- 支持nfc功能--> <uses-permission android:name="android.permission.NFC" /> <!
阅读全文
posted @
2021-07-19 09:33
飘杨......
阅读(1299)
推荐(0) 编辑
Android的TextView匹配子串并改变子串的字体颜色(所有存在的子串)
摘要:一、完全匹配指定字符串并改变指定字符串在TextView中的颜色 /** * @description 改变TextView的部分字体颜色 * @date: 2021/6/17 9:44 * @param view 要改变字体颜色的TextView * @param textColor 字体颜色 *
阅读全文
posted @
2021-06-17 19:38
飘杨......
阅读(267)
推荐(0) 编辑
Android解决部分机型WebView播放视频全屏按钮灰色无法点击、点击全屏白屏无法播放等问题
摘要:一、场景描述 在Android混合开发中Html中可以播放视频,视频播放采用<Video>标签。视频可以全屏播放。 用这种方式播放视频在大部分机型下没啥问题,但是有部分机型全屏播放时会出现全屏按钮灰色不可点击或者点击全屏按钮直接白屏等问题。 解决方法也比较简单,分如下三步: 二、解决办法 第一步:
阅读全文
posted @
2021-05-31 10:34
飘杨......
阅读(4834)
推荐(0) 编辑
MediaCodec.configure Picture Width(1080) or Height(2163) invalid, should N*2
摘要:异常如下: Picture Width(1080) or Height(2163) invalid, should N*2 报错的地方是MediaCodec.configure mMediaCodec.configure(mMediaFormat, null, null, MediaCodec.CO
阅读全文
posted @
2021-05-06 13:31
飘杨......
阅读(242)
推荐(0) 编辑
android.media.MediaCodec$CodecException: Error 0x80001001
摘要:android.media.MediaCodec$CodecException: Error 0x80001001 这是在使用MediaCodec编码相机录制的视频数据时,初始化MediaCodec时出现的异常,mediacodec.configure 完整异常如下: android.media.M
阅读全文
posted @
2021-05-06 11:46
飘杨......
阅读(4530)
推荐(1) 编辑
Android硬编码压缩码率调试
摘要:一、产生问题的原因 App上传服务端的视频有三种形式的视频: 1.手机录制的视频:码率较大,视频录制出来非常大,非常需要进行压缩,而且此种视频用常规压缩效果就比较好 2.从其他平台下载过的压缩视频:码率较大,视频体积承上启下,使用常规压缩会非常大的概率把视频给压大 3.使用AI软件制作出来的视频:码
阅读全文
posted @
2021-03-31 19:46
飘杨......
阅读(914)
推荐(0) 编辑
Android将Bitmap缩放到指定大小,并可兼容特殊机型,如三星、一加手机等
摘要:一、原始需求 1.将两张图片(Bitmap)进行融合叠加,得到一个半透明的蒙版覆盖再图片上,而被叠加的图片必须和蒙版大小一样。其实这需求是比较简单的,有很多方法都可以实现。之所以写一写是因为这里面有机型兼容的坑。 而且网上几乎没有提到过这个坑。ps:可能机型太少没测试到。 二、使用到的工具 1.不成
阅读全文
posted @
2021-03-13 15:57
飘杨......
阅读(3837)
推荐(1) 编辑
Android按home键打开多个Activity再按home键到桌面,然后再launcher中打开App无法保持状态
摘要:一、问题描述: 情况1:app安装成功,从launcher(桌面)打开App到登录页 >输入手机号点击确定 >到输入密码页。然后再按home键返回到桌面再打开,此时Activity无法定位到输入密码页面,而是回到了登录页。 情况2:app通过浏览器下载,成功后利用浏览器安装器打开 >输入手机号点击确
阅读全文
posted @
2021-02-22 14:30
飘杨......
阅读(560)
推荐(0) 编辑
Android onInterceptTouchEvent的move和up事件不执行
摘要:一、问题描述 在做自定义View的时候重写了ViewGroup的onInterceptTouchEvent方法,通过move事件来移动相关的View。子View是TextView。结果仅仅UP事件执行了。 二、解决办法 如果子View是TextView,则在布局文件中将clickable属性设置为t
阅读全文
posted @
2020-12-15 15:21
飘杨......
阅读(469)
推荐(0) 编辑
RelativeLayout中layout_centerInParent不起作用
摘要:一、问题描述 现有一个需求:要求加载出来的网络图片等比缩放并居中显示。外层布局用的是RelativeLayout,子View是一个ImageView和一个视频播放器的View。所以理所当然的就给子View设置了 android:layout_centerInParent="true",运行后并没有达
阅读全文
posted @
2020-12-15 15:18
飘杨......
阅读(798)
推荐(0) 编辑
Android编译Lame库(Mp3编解码库)
摘要:一、概述 Lame是目前最好的mp3编解码工具。 特点:音质好,压缩比比较高,被大量软件和硬件支持,应用广泛。 所以储备一下mp3的编解码知识还是很有必要的 二、编译示例 继上一节中新建的demo开始讲解: 1.下载lame源代码:下载 2.解压代码并把lame-3.99.5文件下,libmp3la
阅读全文
posted @
2020-11-24 15:31
飘杨......
阅读(1639)
推荐(0) 编辑