自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bjxiaxueliang的CODING茶馆

在这里,我们聊技术,也聊生活。从移动领域到网络开发,从图形图像到AI机器学习,畅谈各领域的学习经验,探讨技术趋势;分享生活点滴,吐槽日常琐事,记录旅途见闻。品一杯清茶,享一段闲暇...!

  • 博客(385)
  • 资源 (41)
  • 问答 (1)
  • 收藏
  • 关注

原创 一文详解RTMP协议:直播推流拉流核心实现协议

在当今数字化信息飞速传播的时代,音视频内容已成为人们获取信息、娱乐休闲的重要载体。无论是网络直播、在线视频会议,还是视频点播服务,流畅且实时的音视频传输体验至关重要。而在这背后,RTMP(Real Time Messaging Protocol)协议扮演着不可或缺的角色。接下来,让我们一同揭开 RTMP 协议的神秘面纱,探寻它在流媒体世界中发挥的关键作用。

2025-03-18 14:08:48 487

原创 一文解析FFmpeg常用命令:轻松驾驭多媒体内容处理

在当今数字化的世界中,多媒体文件无处不在,而处理这些文件的能力变得至关重要。无论是视频剪辑、音频转换还是流媒体直播,FFmpeg都提供了强大的功能来满足各种需求。本文将带您快速了解FFmpeg的一些最常用的命令,帮助您轻松驾驭多媒体内容处理。

2025-01-07 15:42:02 330

原创 一文详解LibTorch环境搭建:MacOS基于CLion配置LibTorch机器学习开发环境

对于希望在本地环境中进行深度学习开发的开发者来说,配置合适的工具链是至关重要的一步。本文旨在帮助您在 macOS 操作系统上,利用 CLion IDE 和 PyTorch 的 C++依赖库——libtorch,快速搭建起一个高效的开发环境。这里我们将一步步地讲解如何下载必要的库、设置集成开发环境(IDE),以及编写和运行简单的代码示例来验证配置是否成功。

2024-12-27 11:05:37 1433

原创 一文详解MacOS使用VSCode搭建SpringBoot+Gradle开发环境

开发后端Java应用时,大多数开发者使用的是IntelliJ IDEA,但该软件是一个付费软件,所以希望可以使用开源且免费的VSCode来创建和开发后端项目。本文为本人在 Mac 上使用 Visual Studio Code(简称 VSCode)集成开发环境来搭建一个基于 Spring Boot 和 Gradle 的开发环境的记录笔记。无论你是刚刚接触 Spring Boot 的新手还是有经验的开发者,这篇教程都将帮助你顺利开始你的 Spring Boot 之旅。

2024-11-11 14:55:01 1781

原创 一文详解视频参数:FFmpeg -i选项下的视频参数解析

随着多媒体内容在网络上的日益普及,对视频文件的处理需求也变得越来越重要。FFmpeg 是一款强大的跨平台音视频编解码库及工具集,能够帮助开发者实现对音频、视频文件的转码、剪辑、合并等多种功能。本文将重点探讨如何利用 ffmpeg -i xxx.mp4 来获取视频文件的基本信息,并对这些信息进行解析,以便更好地理解和使用视频资源。

2024-10-24 17:08:06 654

原创 一文速成AI模型:基于PyTorch构建你的第一个线性回归模型

随着人工智能技术的迅猛发展,机器学习成为了现代科技领域中最炙手可热的话题之一。然而,对于初学者来说,机器学习似乎总是充满了复杂的理论和难以理解的概念。本文将带你从零开始,使用PyTorch深度学习框架,构建一个最简单的线性回归模型,一步步揭开机器学习的神秘面纱。无需预先的专业背景知识,只需跟随本文的指导,你就能亲手实现一个可以预测数据的机器学习模型!

2024-10-24 16:57:05 1594

原创 一文详解ETC1压缩纹理:OpenGL中ETC1纹理加载与渲染实践

ETC1(Ericsson Texture Compression)是一种有损纹理压缩技术,2005年初由爱立信研究院参与研发,目的是用于减少移动设备和嵌入式系统中纹理存储的内存占用,应用场景见于游戏、VR、AR等需要大量的纹理资源来创建高质量的视觉效果以及复杂的动画效果场景。

2024-08-14 18:23:19 391 1

原创 一文详解ETC1压缩纹理:移动平台纹理加载高性能解决方案

ETC1(Ericsson Texture Compression)是一种有损纹理压缩技术,2005年初由爱立信研究院参与研发,目的是用于减少移动设备和嵌入式系统中纹理存储的内存占用,应用场景见于游戏、VR、AR等需要大量的纹理资源来创建高质量的视觉效果以及复杂的动画效果场景。

2024-08-14 18:20:21 470

原创 一文详解ExternalOES与TEXTURE_2D纹理:两种纹理使用、区别与联系

在使用OpenGL ES进行图形图像开发时,我们常使用GL_TEXTURE_2D纹理类型,它提供了对标准2D图像的处理能力。这种纹理类型适用于大多数场景,可以用于展示静态贴图、渲染2D图形和进行图像处理等操作。另外,有时我们需要从Camera或外部视频源读取数据帧并进行处理。这时,我们会使用GL_TEXTURE_EXTERNAL_OES纹理类型。其专门用于对外部图像或实时视频流进行处理,可以直接从 BufferQueue 中接收的数据渲染纹理多边形,从而提供更高效的视频处理和渲染性能。

2024-07-05 16:36:00 398

原创 运营商名称 是如何显示到 手机通知栏上的?

在我们日常使用手机的过程中,经常会在通知栏或设置菜单中看到特定的运营商名称,例如"中国移动"、"中国联通"或"中国电信"等。那么,这些运营商的名称是如何出现在我们手机上的呢?手机又是如何区分不同运营商的网络呢?当我们漫游到海外时,手机显示的是国外还是国内的运营商名称呢?

2024-04-09 19:10:08 3094

原创 一文详解RTSP协议:流媒体传输控制协议

RTSP由RFC2326规范,是一种实现实时流媒体传输与播放的控制协议,可用于流媒体的点播和直播场景。RTSP主要有两个方面的作用:一是用于协商客户端与服务端之间的实时媒体通道。二是在建立媒体通道后,通过RTSP协议定义的控制方法(Method),实现流媒体的播放、暂停、停止、快进、倒退等控制操作。

2024-02-02 14:33:40 828

原创 一文详解MSRP协议:IM多媒体信息的传输协议

MSRP(Message Session Relay Protocol)消息会话中继协议,由RFC4975规范,是一种基于文本的、面向连接的协议。常用于在IM实时通信会话中传输或交换多媒体数据(文本、图片、音视频文件等)。支持点对点和多点传输,并提供了扩展性,可以适应不同的应用场景和需求。

2024-02-02 10:27:58 929

原创 一文探索OpenGL纹理转换:纹理写入FRAMEBUFFER后的镜像现象

在OpenGL中,将一个 GL_TEXTURE_2D 纹理写入到 GL_FRAMEBUFFER ,然后从GL_FRAMEBUFFER读取为GL_TEXTURE_2D纹理后,发现GL_TEXTURE_2D纹理变为了输入纹理的镜像纹理。本文将探讨这个问题的原因,并提出解决方案

2024-01-02 20:24:09 1210

原创 一文详解ExternalOES与TEXTURE_2D纹理:两种纹理的转化方式

在实际应用中,我们通常将TEXTURE_2D和TEXTURE_EXTERNAL_OES纹理类型分开使用,并且它们互不干扰。实际上,这种情况占据了80%的使用场景。然而,有时候也会遇到一些特殊情况,需要将TEXTURE_EXTERNAL_OES纹理转化为TEXTURE_2D纹理进行视频处理。这里对此情况,一般我们可以通过一些技术手段,如离屏渲染或FrameBuffer帧缓冲区对象,将TEXTURE_EXTERNAL_OES纹理转换为TEXTURE_2D纹理,再进行后续的处理和计算。

2023-12-21 18:50:10 4248

原创 一文学会WebRTC API:掌握实时通信利器

WebRTC(Web Real-Time Communication)是一项开放标准和技术集合,由 W3C 和 IETF 等组织共同推动和维护,旨在通过Web浏览器实现实时通信和媒体流传输。WebRTC于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准,其提供了一组API和协议,使开发者能够在浏览器中构建实时音视频通信、数据传输和协作应用。目前WebRTC已得到包括主流的Web浏览器(如Chrome、Firefox、Safari)和移动设备平台的广泛的

2023-10-17 15:03:25 1570

原创 一文详解常见标准化组织

从事软件研发工作多年,在工作中有时会查阅一些通信相关的国际标准。然而,对于制定这些标准的组织,一直缺乏一个系统的了解。本文将对几个常见的标准化组织进行介绍,其中包括ITU、3GPP、GSMA和CCSA,了解它们的背景、成立目的和主要任务。

2023-07-14 10:26:54 2463

原创 一文详解 Okio 输入输出流

Okio最初是作为OkHttp的一个组件出现,是 OkHttp 实现HTTP协议数据构建、解析中使用到的底层 IO 库。其相比于传统的 java.io 和 java.nio ,其在文件、网络等数据读写操作更加便捷、高效。

2023-07-14 09:53:20 967

原创 一文实现TextureID到Surface:TextureID正确输出到离屏Surface

将一个GL_TEXTURE_2D类型的纹理ID写入到ImageReader生成的Surface中。具体实现是使用 EGL 提供的 eglCreateWindowSurface() 函数,将 EGLSurface 与 Surface 对象关联起来。然后就可以通过 OpenGL ES 将渲染结果绘制到 EGLSurface 中,最终渲染到Surface上。

2023-07-12 15:30:17 1252 1

原创 一文详解Mac搭建Vulkan开发环境

本文为Vukan系列的第二篇文章,上一篇文章对Vulkan进行了简单介绍,并对其与OpenGL的优劣势进行了比较,为应用开发人员在选择图形API方面提供了建议。下边开始本文的主要内容,详细介绍在Mac操作系统中,如何搭建Vulkan开发环境。

2023-06-30 16:42:50 2526 1

原创 OpenGL不够用?为何还要开发Vulkan?

对于许多图形开发者来说,OpenGL是一个非常熟悉和广泛使用的图形API接口。然而,随着计算机图形处理的需求越来越高,OpenGL也逐渐显露出一些不足,例如驱动程序开销较高、多线程支持不足等。为了解决这些问题,并更好地满足现代计算机图形处理的需求,新一代图形API接口Vulkan应运而生。

2023-06-30 13:09:28 2803

原创 一文详解IPv4与IPv6:协议解析与报文对比

前段时间的工作大多与通信协议相关,随着协议相关工作的不断深入,相关数据包的分析占据了不少工作时间。在数据报文分析中,发现大学期间IP协议内容已经重新还给了老师,相关知识完全没有了印象,这篇文章算是一篇复习文,对相关IP协议进行重学习。

2023-06-12 17:34:10 6318 1

原创 一文详解 SCTP 协议:高可靠网络传输的协议基石

SCTP(Stream Control Transmission Protocol)流控制传输协议,由 RFC2960 定义。SCTP的设计目的是提供一种可靠的、面向消息的数据传输服务,以便于支持多点通信以及满足传输的可靠性需求。SCTP 目前广泛应用于VoIP、移动通信和云计算等领域。

2023-05-05 21:26:02 3110

原创 一文详解 DTLS 协议:安全传输的协议基石

DTLS (Datagram Transport Layer Security)数据包安全传输协议,用于在不可靠的数据包传输协议上 (如UDP)提供数据的安全传输,DTLS1.2版本由 RFC6347 定义。DTLS为TLS协议的一个变体,因TLS不能用来保证UDP上传输的数据的安全性,Datagram TLS试图在现存的TLS协议架构上提出扩展,成为TLS的一个支持数据包传输的版本。DTLS常用于保护实时通信 (如VoIP和视频会议) 以及IoT设备通信的信息安全。

2023-03-27 10:31:07 3060

原创 一文读懂字符编码ASCII、Unicode与UTF-8

最近在写一个Http协议栈当涉及CRLF控制字符写入时,发现自己对CRLF与\r\n的关系不太了解,因此决定详细学习一下;查阅资料的同时,又遇到UTF-8与ASCII编码的疑问。

2023-03-13 18:07:45 1008

原创 一文详解 Synology NAS搭建Git Server

业余时间完成一些代码工程,需要一个代码管理工具,由于此类项目大多要求一定的保密性,此时使用类似Github这种必须开源的gitServer就不太适合了,正好手里有一台群辉NAS,用群辉配置一个Git Server来满足这个要求。

2023-02-22 16:44:47 10132 5

原创 一文详解jitpack多渠道maven库发布

JitPack 是一 个构建与发布 Git 存储库的便捷服务,可用于在 GitHub、GitLab 上打包、发布与部署依赖库,便于使用者通过maven依赖的形式引用开发者发布的依赖库。

2023-02-21 22:33:35 956

原创 一文详解Linux Crontab的安装与使用:Python3基于Crontab轻松管理定时任务

在Linux环境中,Crontab是一个调度守护进程,可以按分钟、小时、每月的某天、每月、每周的某天来执行特定任务,这些特定的任务被称为 Cron 作业,基于这个特点,Crontab 经常被用于自动执行系统维护与管理。

2023-01-12 20:50:59 1892

原创 一文详解Paramiko安装与使用:Python3中的SSH远程管理利器

Python的Paramiko依赖库,可以帮助开发者 通过代码的方式 完成 对远程服务器的文件上传 、 文件下载操作 ,也可以 对远程服务器输入操作命令 。

2023-01-10 18:06:57 6209

原创 Android 13(API 33)新特性及适配指南

Android 13(API 33)于 2022年8月15日正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内部分应用软件开发厂商已逐步接到手机厂商(华米OV等)的新版本适配要求。当前,对于Android应用开发者来说,Android 13 的软件兼容适配已需提上工作日程。

2022-10-24 15:39:34 13191 7

原创 一文详解 implementation api embed

最近使用 Android Studio 从事项目开发时,发现对 implementation、api、embed 的用法了解的不是很清楚,这里准备一篇文章对其使用场景或者说是使用方式进行一个总结。

2022-08-10 10:57:55 2772 1

原创 一文详解 WebSocket:双向长连接数据传输协议

WebSocket 是一种应用层网据传输协议,可在单个TCP连接上进行全双工数据通信。WebSocket 诞生于2008年6月,2011年底成为国际标准,其最初被应用于HTML5规范中。WebSocket协议相比于Http协议,其最大的特点是`允许服务端主动向客户端推送数据`,`客户端也可以主动向服务端请求数据`。在WebSocket API中,浏览器和服务器只需要`完成一次握手`,两者之间就可以建立持久性的连接,并进行双向数据传输。

2022-05-20 00:13:28 1191 1

原创 一文详解openpyxl和xlrd的安装与使用:Python3 Excel表格处理利器

最近工作中需要统计APP线上终端用户 `手机品牌`、`手机型号`与`对应型号的用户量`,并生成Excel表格汇报项目组。因线上手机品牌、型号数量过于庞大,手动操作过于消耗时间,所以搞了一个 python3 的脚本来生成所需要的表格。

2022-04-01 23:07:17 4859

原创 Android 12(API 31)新特性及适配指南

Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目。截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经逐步开启了Android 12正式版本的更新。当前,对于Android应用开发者来说,Android 12 的软件兼容适配已迫在眉睫。

2022-03-19 22:08:09 15940 2

原创 Android 12(API 31)适配指南——SplashScreen

Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。

2022-03-16 11:34:56 16872 2

原创 一文学会 使用Kotlin Coroutine协程

关于线程、协程两者的对比,可以简要叙述如下:线程:线程由操作系统调度,线程切换或线程阻塞由操作系统和CPU调度实现;协程:协程运行于操作系统的用户态,其依赖于线程来实现,通过用户态程序控制,尽量`减少或避免因线程阻塞造成的操作系统与CPU开销`。与线程相比不同点在于,`协程挂起时不需要阻塞其运行的线程`。`协成挂起`期间,其对应的`线程可以被分配其他协程任务来执行`,待`该协程任务挂起结束再次开始时,将该协成再次交由某个线程来继续执行`(挂起期间,`类似于将该协程任务添加到了某个任务队列中`)

2022-03-09 18:16:23 7298

原创 一文详解 RTP/RTCP协议:流媒体数据传输的协议基石

RTP协议 运行于传输层UDP协议之上,与RTCP协议协作 常用于流媒体数据传输,例如:直播、远程摄像头流媒体播放、流媒体视频播放、视频会议等应用场景。其规定了在互联网上传递音频和视频的标准数据包格式,最初被设计为一个多播协议,但后来被常被应用在很多单播应用中。

2022-01-17 18:23:39 4403

原创 一文详解 MySQL 安装与使用

最近开始接触服务端开发,先从配置开发环境开始,这一篇文章是对安装配置MySQL的过程、注意点、可用配置信息做一个笔记。

2021-12-24 11:12:59 1135 3

原创 一文详解OpenGLES纹理混合:实现半透明、叠加与滤镜效果

在OpenGL中绘制的时候,有时候想使新画的颜色和已经有的颜色按照一定的方式进行混合。例如:想使物体拥有半透明的效果,或者绘制叠加光亮的效果,这时候就需要用到OpenGLES混合。如上图所示,为石头墙、绿色矩形、蓝色云彩 三个矩形混合后的展示效果。三个矩形(Z轴深度由深到浅)分别为,石头墙、绿色矩形、蓝色云彩。一、混合API在OpenGLES中若使用混合,需要用到API函数方法(Java):void glBlendFunc( int srcfactor, int destfactor );(1)

2021-11-30 15:51:17 1789

原创 一文详解Shading Language:从零开始编写高效着色器

从OpenGL ES2.0开始,OpenGL ES由固定渲染管线更改为可编程渲染管线。因此开发人员若使用OpenGL ES2.0版本及以上API进行图形渲染,必须使用着色语言(OpenGL ES Shading Language)编写顶点着色器与片元着色器的代码。与OpenGL ES1.x固定渲染管线相比:顶点着色器 取代了固定渲染管线中的 变换和光照;片元着色器 取代了固定渲染管线中的纹理环境和颜色求和、 雾 以及 Alpha测试。OpenGL ES 着色语言(OpenGL ES Shadin

2021-11-29 17:29:10 460

原创 一文详解 OpenGLES 3.x 渲染管线:解析OpenGL的渲染流程

OpenGL ES 构建的三维空间,其中的三维实体由许多的三角形拼接构成。如下图左侧所示的三维实体圆锥,其由许多三角形按照一定规律拼接构成。而组成圆锥的每一个三角形,其任意一个顶点由三维空间中 x、y、z 三个坐标分量来定义。对于我们日常使用的移动手持设备,手机屏幕窗口由不连续的有限的二维像素小格子构成的,每一个像素格子有x、y两个分量来定义。因此在OpenGL ES绘制流程中,其主要工作是将三维空间中的坐标点(x,y,z)构成的三维图形,转化为手机屏幕上的二维像素点。这个转化过程主要分为两个步骤:

2021-11-22 10:55:30 1726

百度地图附近商铺信息

通过百度地图API获取附近商铺信息,效果图请看: http://xiaxveliang.blog.163.com/blog/static/29708034201442035825239/

2014-05-20

SIMalliance_OpenMobileAPI2_02.rar

Android于Android 9.0 引入了OMAPI相关实现,这篇文章是关于OMAPI的架构实现、API使用介绍实现文档。 Sim Alliance组织提供了一个标准接口规范Open Mobile API specification,使手机上层应用可以访问手机端不同的Secure Elements。

2021-07-30

Xml本地格式化工具(Java代码显示,图形操作)

Xml本地格式化工具(Java代码显示,图形操作),使用详情:http://xiaxveliang.blog.163.com/blog/static/29708034201471044250517/

2014-08-10

Android_surfaceView与layout屏幕适配总结

Android各种屏幕适配策略demo总结,文档介绍链接地址: http://xiaxveliang.blog.163.com/blog/static/2970803420149277310588/

2014-10-27

ES_001_Triangle

win7下VS2013搭建opengl es 2.0的C++开发环境案例代码。详情请查看博客: http://xiaxveliang.blog.163.com/blog/static/2970803420151014104946451/

2015-11-14

glide_disklrucache

glide与UniversalImageloader均使用的sdcard缓存策略

2016-03-13

QRcode.jar

java -jar QRCode.jar url=test image=qrcode.png save=/xiaxl/ 亲测可用

2019-05-21

capture.pcap

使用tcpdump抓包工具,抓包“https get请求百度主页”,生成的capture.pcap文件。 该文件可用wireshark打开,查看和学习 DNS解析步骤、TCP三次握手、TSL握手和秘钥协商 等过程

2020-06-12

Android tcpdump

Android tcpdump Version 4.9.3 / 1.9.1.

2020-10-14

shader中uniform变量的if或for会降低帧率

文档介绍博客地址:http://xiaxveliang.blog.163.com/blog/static/29708034201492735228272/

2014-10-27

Android端 网易公开课3D动画勋章 实现源码

Android端 网易公开课3D动画勋章 实现源码,使用OpenGL ES 2.0加载、展示3dmax导出的obj、mtl勋章文件,通过自定义的openel 动画引擎,进行3D勋章的动画展示。

2021-11-02

android静默卸载指定包名APP

代码模拟"uninstall + 包名"命令,详情请浏览地址: http://xiaxveliang.blog.163.com/blog/static/2970803420146223547873/

2014-07-02

gradle多渠道打包的两种实现demo

gradle多渠道打包的两种实现demo

2016-01-27

SIP-RFC3428.doc

本资源为RFC3428中文翻译,其对应的原协议地址为:https://tools.ietf.org/html/rfc3428 。 想要了解Sip协议Message方法扩展由来、Pager Model通信方式、Pager Model通信方式的具体举例的同学,可以下载。

2020-03-07

android静默卸载data/app下的应用程序

前提:android设备需已root 详情请看: http://xiaxveliang.blog.163.com/blog/static/2970803420146223547873/

2014-07-03

Gson简单与复杂json数据解析案例

可实现简单json数据与复杂json数据解析,详情请看:http://xiaxveliang.blog.163.com/blog/static/297080342014102674623118/

2014-11-26

Android用SAX2解析xml

一个android小demo,采用SAX2方式解析xml。详细介绍请看: http://xiaxveliang.blog.163.com/blog/static/2970803420147784312563/

2014-08-07

Activity启动和退出动画

Activity启动和退出时的动画效果,动画为从右侧进入和从右侧退出

2014-05-09

MVP_RxJava_Demo

http://dev.qq.com/topic/5799d7844bef22a823b3ad44中介绍的, Android MVP框架

2016-07-29

完善程序地图poi搜索

完善腾腾地图POI搜索1、自定义POI点选中图标2、自定义POI点详细信息弹框。详情请查看:http://xiaxveliang.blog.163.com/blog/static/297080342014102510537125/

2014-11-26

png转pkm“Mali-Texture-Compression-Tool-v4Windows-x64”和“pkm.zip”资源

png转pkm“Mali_Texture_Compression_Tool_v4Windows_x64”和“pkm.zip”资源 1、Mali_Texture_Compression_Tool_v4Windows_x64 png转pkm工具(windows平台); 2、一组由Mali_Texture_Compression_Tool_v4Windows_x64生成的ETC1+Alpha的动画文件举例。

2024-08-13

OpenGLES2.0中加载".pkm图片资源"组成的“zip压缩包”,并以帧动画的渲染播放ETC1格式纹理数据

OpenGLES2.0中加载".pkm图片资源"组成的“zip压缩包”,并以帧动画的渲染播放ETC1格式纹理数据: 1、将png帧动画资源,通过MaliGPU Texture CompressionTool压缩为ETC1格式纹理(压缩后每一帧均包含“一个RGB的.pkm文件”和“一个alpha值的.pkm文件”); 2、将.pkm图片资源压缩为一个.zip的压缩包; 3、在Android中加载读取.zip文件,并通过OpenGLES2.0按帧动画的形式渲染播放一帧一帧的.pkm文件格式的ECT1压缩格式文件; 4、每一帧渲染都获取两个.pkm文件,分别加载为ETC1Texture纹理数据(一个获取RGB颜色值,一个获取Alpha值); 5、抖音、快手的直播画面中,送礼物特效可用该工程代码实现。

2024-08-08

Android工程OpenGL ES中YUV420转化RGB工程实现源码

1、通过Camera2获取Camera的YUV420图像数据; 2、将YUV420图像数据通过Shader语言,在GPU中转化为RGB; 3、在OpenGL ES中渲染最终的RGB纹理,实现图像预览。 4、本案例代码是: 一文详解微信视频通话、抖音视频回显实现方案:https://xiaxl.blog.csdn.net/article/details/103328195 一文学会 Opengl ES中YUV420与RGB转化:https://xiaxl.blog.csdn.net/article/details/72622236 技术博文的工程实现代码,具体实现可参考以上两篇技术文章。 5、当前App中GPU高效回显图像均通过该方案实现,具有较高的学习性。

2024-07-22

ExternalOES纹理数据 转换为 TEXTURE-2D纹理数据 工程代码

图形开发中,通常将TEXTURE_2D和TEXTURE_EXTERNAL_OES纹理分开使用,这种情况占据了80%的场景。然而,有时候也需要将TEXTURE_EXTERNAL_OES纹理转化为TEXTURE_2D纹理进行视频处理。这种情况,我们可以通过 如离屏渲染或FrameBuffer帧缓冲区对象,完成纹理数据的转化。 1. 首先,需创建一个OES纹理ID; 2. 完成OES纹理ID创建后,通过oesTexId创建一个图像消费者SurfaceTexture; 3. 通过SurfaceTexture创建Surface,将Surface对象传递给MediaPlayer,获取Sdcard中对应路径的视频帧数据获取; 4. 创建FRAMEBUFFER帧缓冲区,并绑定TEXTURE_2D空白纹理对象; 5. 将EXTERNAL_OES纹理渲染到FRAMEBUFFER帧缓冲区中; 6. 绘制渲染TEXTURE_2D纹理,完成纹理图像的显示; 文档介绍地址如下: https://xiaxl.blog.csdn.net/article/details/135137815

2023-12-21

OpenGLES渲染播放Sdcard中的视频资源

1、案例运行注意事项: 案例源码运行前,需向Sdcard如下路径存入测试视频:/sdcard/Android/data/com.xiaxl.glesvideo/files/video/demo.mp4 2、案例源码原理: a、在OpenGL ES中创建 samplerExternalOES 类型纹理,用于渲染展示视频图像; b、通过 samplerExternalOES 纹理创建一个 SurfaceTexture; c、通过 SurfaceTexture 生成一个 Surface; d、将该 Surface 绑定到 MediaPlayer 中; e、通过 MediaPlayer 解封装视频,并最终通过OpenGL ES渲染解封装后的视频图像,同时播放视频的声音;

2023-11-02

Android使用MediaCodeC与OpenGL硬解码 录制mp4音视频实现源码

将Camera数据显示到OpenGL ES渲染的图像中,并通过MediaCodeC 将 OpenGL ES 缓冲数据,硬编码写入到 mp4 视频文件中,完成视频的录制。 文件介绍请见: https://xiaxl.blog.csdn.net/article/details/72530314 原理及实现步骤: 1、通过OpenGLES渲染Camera采集数据; 2、通过 MediaCodec.createInputSurface获取一个Surface; 3、通过EGL构建EGLDisplay并绑定Surface; 4、通过 EGL 线程中渲染GL_TEXTURE_EXTERNAL_OES对应的纹理ID; 5、在 EGL 线程完成渲染后,通过eglSwapBuffers交换缓冲,将EGL渲染内容交换到MediaCodeC给定的Surface中,从而完成mp4视频录制。

2021-11-02

Android平台OpenGLES3将GL-TEXTURE-2D纹理id渲染到ImageReader提供的Surface上

效果目的: Android平台 将 GL_TEXTURE_2D纹理 渲染到 Surface 上 案例实现文章介绍: https://xiaxl.blog.csdn.net/article/details/131682521 技术实现流程大致如下: 1、OpenGLES3中加载GL_TEXTURE_2D纹理,生成纹理ID; 2、通过EGL构建EGLDisplay虚拟屏幕,并绑定ImageReader提供的Surface; 3、在EGL线程中,渲染GL_TEXTURE_2D对应的纹理图形; 4、在EGL线程中,完成渲染后,通过eglSwapBuffers方法交换缓冲数据; 5、在ImageReader中onImageAvailable方法中读取surface数据,保存为一张Bitmap; 6、将 步骤5 的Bitmap显示到ImageView上(用于验证纹理ID是否正常写入到Surface) 因实现流程较为复杂,技术难度要求较高,研究此案例代码花费时间较多,付费下载,谢谢。

2023-06-28

监听Android系统软键盘的弹出与关闭(案例代码)

代码来源: 从facebook React源码ReactRootView中抽离CustomGlobalLayoutListener,用于监听Android系统软键盘的弹出与关闭。 实现原理: 监听Android DecorView对应的GlobalLayout布局变化,从而判断是否弹出了软键盘。 其他: 案例demo名称为GlobalKeyboardChange,可直接运行; 软键盘弹出和关闭时,可同时回调 keyboardHeight 软键盘的高度值。

2023-06-20

TCP与TLS数据报文抓包

使用 tcpdump 抓包工具,抓取 “https get”请求数据包: 1、生成 wireshark 工具可读取的 capture.pcap 抓包文件; 2、学习 “DNS解析步骤”报文结构; 3、学习 “TCP三次握手”报文结构; 4、学习 “TLS握手与秘钥协商” 等过程。 详细介绍,可参考我的技术文章: 一文读懂 HTTPS 与 TLS证书链校验 https://xiaxl.blog.csdn.net/article/details/106927624 一文详解 TCP与UDP 协议 https://xiaxl.blog.csdn.net/article/details/106223354

2023-03-18

Android使用 jitpack 发布 maven 多渠道AAR依赖库 案例实现

网络上大量涉及 JitPack 的教程不可用; 经过两天的研究,分别实现了Gradle 6.1与Gradle 7.5两种Gradle版本,多渠道发布JitPack maven AAR依赖库的案例,案例分别为: + jitpack_MultiFlavorLibDemo_gradle_6_1 + jitpack_MultiFlavorLibDemo_gradle_7_5 并给出了详细的使用说明教程,详见如下地址: https://xiaxl.blog.csdn.net/article/details/129151720

2023-02-21

Android录制屏幕生成mp4文件

Android录制屏幕生成mp4文件: 1、运行环境要求: Android 5.0以上,无需ROOT; 2、案例实现方式: 使用MediaProjection构建虚拟VirtualDisplay,完成屏幕录制生成mp4文件保存到本地sdcard。 3、案例源码: 案例源码以实现录屏最小集的方式实现,注释充分,通俗易懂。

2022-07-07

Python3使用openpyxl、xlrd依赖库操作Excel案例源码

使用python3脚本实现如下功能: 使用 openpyxl 依赖库,详解.xlsx 新版Excel文件的读、写、设置行高、列宽、合并单元格等操作; 使用 xlrd 依赖库,详解.xls 旧版Excel文件的读取,并使用 xlutils.copy 依赖库修改Excel文件出最终的修订结果Excel; 详细文章介绍地址如下: https://xiaxl.blog.csdn.net/article/details/123910322

2022-04-15

Python3使用xlrd修改Excel数据映射关系

使用python3脚本实现如下功能: 根据映射关系数据,完善Excel表格中品牌与型号的对应关系,输出修改后的Excel。 使用 xlrd 依赖库,实现Excel数据的读写; 使用 xlutils.copy 依赖库,复制并修改Excel文件, 并输出最终的修订结果Excel。 详细文章介绍地址如下: https://xiaxl.blog.csdn.net/article/details/123910322

2022-04-01

Android12 SplashScreen使用案例代码下载

Android12 SplashScreen使用举例代码下载,运行效果 与 相关API使用介绍请参考博文: Android12适配指南——SplashScreen: https://xiaxl.blog.csdn.net/article/details/123522277 Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。 SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。 若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。

2022-03-16

安卓Kotlin Coroutine协程使用案例代码

安卓 Kotlin Coroutine协程 使用方式代码举例: 包含GlobalScope 、CoroutineScope 详细使用代码举例,相关介绍文章,可参考: https://xiaxl.blog.csdn.net/article/details/123383727

2022-03-09

OpenGLES三种抗锯齿实现案例

介绍Android OpenGL ES中,三种可用的抗锯齿实现方式,这里给出详细的代码实现。 文章介绍,请参考: https://blog.csdn.net/xiaxl/article/details/8873018

2021-12-06

Android veridex 非SDK接口检测工具

1、Android非SDK接口检测工具(2022.02.16版本) 2、对应的官方地址为: https://android.googlesource.com/platform/prebuilts/runtime/+/master/appcompat

2022-02-16

Android平台OpenGLES生成使用Mipmap纹理

该案例代码为Android 平台OpenGL ES实现举例,有两个作用: 1、在Android平台,使用OpenGL ES通过加载灰度图,构建山地图形渲染效果; 2、使用 OpenGLES 生成与使用Mipmap纹理,构建远处模糊,近处清晰的效果。 具体案例文章讲解请见: https://xiaxl.blog.csdn.net/article/details/8873106

2021-12-08

Android平台 使用OpenGLES3.0实现纹理纹理、颜色混合

在Android平台,使用OpenGLES3.0实现纹理纹理、颜色混合代码实现举例。 具体案例文章讲解请见: https://xiaxl.blog.csdn.net/article/details/121634894

2021-12-15

Android平台 OpenGL ES3.0绘制点、线、三角形实现源码

Android平台,OpenGL ES3.0 点、线、三角形绘制方式源码实现举例。 相关绘制方式文章讲解请参考: https://xiaxl.blog.csdn.net/article/details/8873002

2021-12-10

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除