自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 资源 (13)
  • 收藏
  • 关注

原创 FFmpeg解码视频数据ANativeWindow播放

本文介绍了使用FFmpeg解码视频数据并通过ANativeWindow进行播放的实现方案。主要内容包括:1)设计线程安全队列实现解码线程和渲染线程间的数据传递;2)解码线程通过FFmpeg读取视频帧并存入队列;3)渲染线程从队列获取帧数据,转换颜色空间后通过ANativeWindow进行显示;4)实现了帧率控制机制,基于时间戳调整播放速度。系统采用双线程架构,通过条件变量实现线程同步,确保流畅播放。完整代码已开源在GitHub项目中,为Android平台视频播放开发提供了实用参考方案。

2025-11-22 20:10:30 336

原创 FFmpeg解码音频数据AudioTrack/OpenSL播放

本文介绍了使用FFmpeg解码音频数据并通过AudioTrack和OpenSL ES播放的实现方法。首先通过FFmpeg完成音频文件的打开、流信息解析、解码器初始化和PCM数据提取,其中涉及关键的重采样处理。在播放环节,分别实现了两种方案:1)通过回调将PCM数据传递给Java层的AudioTrack播放;2)利用OpenSL ES构建完整的音频播放管线,包括引擎创建、混音器配置和播放器初始化,并通过缓冲区队列回调机制实现解码线程与播放线程的同步控制。文中详细展示了OpenSL ES的封装类实现,以及解码线

2025-11-15 20:01:26 1259 1

原创 Xcode上编译调试ffmpeg

本文详细介绍了在macOS系统中源码编译FFmpeg的方法:首先下载解压FFmpeg-7.0.2,创建编译目录并修改文件权限;然后通过./configure指定路径进行编译,依次执行make和make install命令;最后配置环境变量并在Xcode中调试源码。文中提供了具体命令和操作步骤,包括查找bin目录路径、编辑.bash_profile文件等完整流程,帮助开发者成功在macOS平台完成FFmpeg的源码编译和环境配置。

2025-10-01 13:57:40 858

原创 音视频编解码全流程之用Extractor后Decodec

本文介绍了音视频编解码流程中从媒体文件提取数据包后进行解码的两种实现方式:FFmpeg和MediaCodec。在FFmpeg部分,详细说明了交叉编译、数据包提取、解码器查找和分配、数据包解码等步骤,并提供了完整的代码实现。在MediaCodec部分,重点讲解了Extractor初始化、轨道选择、解码器初始化以及解码过程,同样包含详细代码示例。文章还对比了两种解码流程的异同,并展示了实际效果。所有代码均可在作者GitHub项目中查看。该系列文章为音视频开发提供了完整的流程参考,适合开发者学习音视频编解码技术。

2025-10-01 13:56:05 1001

原创 音视频编解码全流程之用Extractor后Muxer生成MP4

本文介绍了使用FFmpeg和NDK实现音视频文件转封装生成MP4文件的全流程。在FFmpeg部分,详细展示了通过AVFormatContext读取源文件、提取音视频流、创建输出文件并写入数据包的过程。NDK部分则基于Android原生API,使用AMediaExtractor和AMediaMuxer实现类似功能,包括初始化提取器、选择音视频轨道、配置复用器以及执行转封装操作。文章对比了两种技术方案的实现差异,并提供了完整的代码实现(GitHub项目可查)。两种方法均能有效完成音视频数据的提取和重新封装,适合

2025-09-29 22:20:09 664

原创 音视频编解码全流程之复用器Muxer

本文介绍了Android音视频编解码中Extractor和Muxer的使用流程。主要内容包括:1)使用FFmpeg进行音视频文件写入的11个关键步骤,从初始化AVFormatContext到写入数据包;2)NDK MediaMuxer的实现方式,通过HwMuxer和ProcessMuxer类完成媒体文件复用;3)对比了FFmpeg和NDK MediaMuxer在获取复用器和写入数据包操作上的差异。文章提供了完整的代码实现,展示了两种技术方案在Android音视频处理中的应用方法。

2025-09-23 18:42:58 742

原创 音视频编解码全流程之Extractor

本文介绍了Android平台下媒体文件处理的两种技术方案:基于FFmpeg的软件编解码和基于MediaCodec的硬件编解码。详细阐述了FFmpeg通过avformat_open_input()等API提取音视频流信息的过程,以及MediaCodec借助AMediaExtractor提取媒体数据的实现方法。文章对比了两种技术在文件打开、流索引获取、编解码器选择、轨道选择等关键环节的差异,并提供了完整的代码实现(GitHub项目链接)。通过BenchmarkCommon、Stats等工具类,实现了对编解码性能

2025-09-21 21:41:27 935

原创 Ubuntu系统下交叉编译Android的Lame库

本文详细介绍了在Ubuntu 20.04系统上交叉编译LAME音频编码库为Android平台的过程。主要内容包括:1)下载LAME 3.100源码并解压;2)配置Android NDK r28c开发环境;3)编写自动化编译脚本android_lame_build.sh,支持armeabi-v7a和arm64-v8a架构;4)将编译好的LAME库集成到FFmpeg中,通过修改FFmpeg编译脚本添加对LAME库的支持;5)最终在android-build目录下生成各架构的库文件。文章提供了完整的脚本代码和关键

2025-09-14 12:09:54 607

原创 Ubuntu系统下交叉编译Android的X264库

本文详细介绍了在Ubuntu 20.04系统上交叉编译X264库并集成到FFmpeg的完整过程。主要内容包括:1)从VideoLAN官网下载X264源码并配置编译参数;2)下载Android NDK工具链并设置交叉编译环境;3)创建编译脚本x264_build.sh,针对armv7/armv8/x86/x86_64等多种架构进行编译;4)将编译好的X264库集成到FFmpeg中,通过修改构建脚本实现H.264编码支持;5)提供了完整的验证代码示例,展示如何在实际项目中使用libx264编码器进行视频重编码。

2025-08-30 14:41:53 880

原创 macOs上ffmpeg带入libx264库交叉编译

本文详细介绍了在MacOS 14.6.1系统上为Android平台交叉编译libx264和FFmpeg的过程。主要内容包括:1)下载libx264源码并配置NDK路径;2)编写编译脚本android_x264.sh,支持armv7、armv8、x86、x86_64架构;3)解决编译中遇到的动态库链接问题;4)将编译好的libx264集成到FFmpeg编译中,提供完整的编译脚本android_ff_x264.sh。文中特别指出了编译过程中可能遇到的"libx264.so.165"链接错误及

2025-08-30 13:45:39 1106

原创 Ubuntu系统下FFmpeg源码编译安装

本文详细记录了在Linux系统中编译安装FFmpeg 6.1.2的全过程。主要步骤包括:下载并解压源码包;修改目录权限;配置编译参数(--enable-shared --prefix指定安装路径);处理编译过程中的权限问题(需多次修改相关目录权限为777);执行make和make install完成编译安装;配置环境变量(~/.bashrc中添加bin和lib路径);最后通过ffmpeg -version验证安装成功。整个过程中,权限问题是主要障碍,通过递归修改整个ffmpeg目录权限最终解决该问题。编译完

2025-07-23 20:50:31 890

原创 macOs上交叉编译ffmpeg及安装ffmpeg工具

本文详细介绍了在MacBook Pro(macOS 14.6.1)上编译安装FFmpeg的完整过程。首先下载并解压FFmpeg 7.0.2源码,解决编译时遇到的nasm/yasm依赖问题。然后重点说明了Android平台的交叉编译配置,包括NDK路径设置、环境变量配置和自定义编译脚本的编写。最后展示了如何在macOS系统上安装预编译的FFmpeg工具链,包括环境变量配置和权限问题的解决方法。整个过程涵盖了从源码编译到工具安装的完整流程,为在macOS系统上使用FFmpeg提供了详细指导。

2025-07-20 21:24:03 1145

原创 Ubuntu系统下交叉编译Android的X265库

本文详细介绍了在Linux环境下交叉编译x265视频编码器到Android平台的过程。主要步骤包括:1) 下载x265_4.1源码并解压;2) 配置Android NDK(r27c)开发环境,包括路径设置和权限修改;3) 修改x265的交叉编译配置文件crosscompile.cmake,替换为Android NDK工具链;4) 处理编译过程中出现的NUMA库和NASM缺失问题;5) 调整编译配置选项,解决链接错误后完成编译。最终在指定目录生成包含头文件和库文件的编译结果,为Android平台提供了x265

2025-07-18 19:45:00 1220 5

原创 FFmpeg 中./configure的解析

本文解析了FFmpeg-5.1.6的编译配置过程,重点分析了Android平台交叉编译脚本android_build1.sh的执行流程。首先介绍了configure脚本的功能和输出选项,详细说明了其配置参数和硬件加速支持。随后剖析了android_build1.sh的工作机制:通过build_all函数设置通用编译选项,build函数根据不同CPU架构(armeabi-v7a/arm64-v8a/x86/x86_64)配置对应的工具链和优化参数,最终调用configure生成Makefile并执行编译安装。

2025-07-01 17:15:00 884

原创 Android Liunx ffmpeg交叉编译

本文介绍了在Windows系统通过VMware虚拟机运行Ubuntu 20.04进行Android交叉编译的过程。主要内容包括:1)安装NDK(下载r27c版本,配置环境变量);2)下载解压FFmpeg 5.1.6;3)创建编译脚本android_build1.sh,包含armeabi-v7a、arm64-v8a等平台配置;4)执行编译后生成包含头文件、so库、日志等资源的android目录。整个过程详细说明了NDK环境搭建、FFmpeg编译配置及多平台交叉编译的实现方法。

2025-06-30 20:45:00 1138 1

原创 音视频之H.264的可伸缩编码SVC

视频编码的目标由单纯的追求高压缩率转向了使视频流能够更好地适应各种不同的网络环境和用户终端。然而, 实际系统中网络环境和用户终端设备均存在异构性。网络的异构性体现在带宽的不同,终端设备的异构性则是指处理能力和显示能力的差异。这些对视频编码提出了新的挑战,编码器无法预知传输网络和客户设备的条件,因此,视频服务器需要对视频传输请求有自适应性, 以使得码流可以被灵活地组织适应不同的应用需求。为了获得这种自适应性,可以采用的视频编码技术主要有自适应编码、转码、联播、多描述编码和可伸缩编码等。

2025-06-20 18:04:55 1646 1

原创 音视频之H.264视频编码传输及其在移动通信中的应用

 H.264采用分层模式,定义了视频编码层(VCL)和网络提取层(NAL),后者专为网络传输设计,能适应于不同网络中的视频传输,进一步提高网络“亲和性”。H.264引入了面向IP包的编码机制,有利于网络中的分组传输,支持网络中视频的流媒体传输。H.264具有较强的抗误码特性,特别适应丢包率高、干扰严重的无线视频传输的要求。多媒体视频在不同环境下的传输,不仅需要高效率的编码,同时还需要编码后的视频能容易地无缝集成到当前和未来的网络协议架构当中。VCL包括VCL编码器与VCL解码器,主要功能是采用运动补偿、

2025-06-19 17:23:09 1181

原创 音视频之H.264/AVC解码器的原理和实现

 H.264包含视频编码层(VCL)和网络提取层(NAL)。 VCL包括核心压缩引擎和块、宏块及片的语法级别的定义,它的设计目标是尽可能地独立于网络的情况下进行高效地编解码;而NAL则负责将VCL产生的比特字符串适配到各种各样的网络环境中,它覆盖了所有片级别以上的语法级别,同时支持以下功能:支持独立片解码,起始码唯一保证,支持SEI,支持流格式编码数据传送。NAL解码器负责将符合H.264码流规范的压缩视频流解码, 并进行图像重建。根据如图7.1所示的解码器,我们可以看出基本的解码流程如下:解码器从NAL

2025-06-16 22:15:00 1448 1

原创 音视频之H.264的句法和语义

 在编码器输出的码流中,数据的基本单位是句法元素。每个句法元素由若干比特组成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表征句法元素的组织结构,语义阐述句法元素的具体含义。所有的视频编码标准都是通过定义句法和语义来规范编解码器的工作流程。编码器输出的比特码流中,每个比特都隶属某个句法元素,也就是说,码流是由一个个句法元素依次衔接组成的,码流中除了句法元素外并不存在专门用于控制或同步的内容。在H.264定义的码流中,句法元素被组织成有层次的结构,分别描述各个层次的信息。

2025-06-13 21:15:00 1469

原创 音视频之H.264/AVC编码器原理

H.264/AVC视频编码技术详解 H.264/AVC是新一代高效视频编码标准,由ITU-T和MPEG联合开发。该标准通过多项创新技术显著提高了视频压缩效率,主要特性包括: 高效的预测编码:采用可变尺寸块运动补偿(16×16至4×4)、1/4像素精度运动估计和多参考帧预测,大幅提升预测准确性。 先进的变换量化:使用4×4整数DCT变换,结合52级量化参数和自适应量化矩阵,有效去除空间冗余。 两种熵编码:CAVLC(基于上下文的变长编码)和CABAC(二进制算术编码),后者可提升9%-14%压缩率。 环路滤波

2025-06-12 19:45:00 2316

原创 音视频之视频压缩编码的基本原理

预测法是最简单、实用的视频压缩编码方法,经过压缩编码后传输的并不是像素本身的取样值,而是该取样的预测值和实际值之差。        为什么取像素预测值与实际值之差作为传输的信号?因为大量统计表明,同一幅图像的邻近像素之间有着相关性,或者说这些像素值相似,如图3.1所示。邻近像素之间发生突变或“很不相似”的概率很小。而且同帧图像中邻近行之间对应位置的像素之间也有较强的相关性。人们可以利用这些性质进行视频压缩编码

2025-06-05 16:39:21 1063

原创 音视频之视频压缩及数字视频基础概念

本文综述了视频压缩编码技术及数字视频的基本概念。首先,文章介绍了信息的三大特性(通用性、抽象性、无限性)及信息化的定义与实现途径。接着,文章详细分析了视频信息的特点,包括直观性、确定性、高效性和广泛性,并指出视频信号的高带宽性。随后,文章探讨了视频压缩编码的必要性及可能性,重点介绍了预测编码和变换编码的原理。文章还概述了视频编码系统的基本结构,分为基于波形的编码和基于内容的编码两大类,并简要提及了立体视频编码的发展方向。最后,文章介绍了数字电视的基本概念、PCM原理及数字电视信号的编码参数,强调了数字电视在

2025-05-23 19:00:00 1309

原创 音视频之H.265/HEVC速率控制

 视频传输带宽通常都会受到一定限制,为了在满足信道带宽和传输时延限制的情况下有效传输视频数据,保证视频业务的播放质量,需要对视频编码过程进行速率控制。所谓速率控制,就是通过选择一系列编码参数,使得视频编码后的比特率满足所需要的速率限制,并且使得编码失真尽量小。速率控制属于率失真优化的范畴,速率控制算法的重点是确定与速率相关的量化参数(QuantizationParameter,QP)。

2025-05-20 16:35:31 1502

原创 音视频之H.265/HEVC率失真优化

   为了将具有庞大数据量的视频在有限信道内传输、存储,高压缩率的编码算法往往会造成编码重建视频与原始视频存在差别,即重建视频产生失真,该类压缩被称为有损压缩。对于有损压缩算法,其性能需要根据编码输出的比特率和编码带来的失真度共同衡量。编码比特率和失真度相互制约、相互矛盾,如降低比特率往往会增加视频的失真度,相反要想获得更好的视频质量,又会提高视频的编码比特率。因此,视频编码的主要目的就是在保证一定视频质量的条件下尽量减少编码比特率,或在一定编码比特率限制条件下尽量地减小编码失真。在固定的编码框架下,为了应

2025-05-19 18:41:45 1229

原创 音视频之H.265/HEVC编解码并处理

新一代视频压缩标准 H.265/HEVC 在很大程度上是为了满足人们对于高分辨率视频的需求,而对于高清乃至超高清视频,分辨率达到了4kx2k或8kx4k,无论是从编码还是从解码的角度,其计算复杂度都是极高的。而为了提高H.265/HEVC的网络适应能力,其压缩性能与H.264/AVC 相比显著提高,相同条件下的码率可以降低50%,获得性能提升的代价就是编解码复杂度的大大提高。 与H.264/AVC相比,H.265/HEVC的复杂度主要体现在以下几点:H.265/HEVC 的帧内预测模式增多,

2025-05-06 16:52:40 1340

原创 音视频之H.265/HEVC网络适配层

H.265/HEVC也采用了视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer,NAL)的双层架构,以适应不同的网络环境和视频应用。网络适配层的主要任务是对视频压缩后的数据进行划分和封装,并进行必要的标识,使其可以很好地适应复杂多变的网络环境。当前的网络类型多种多样,不同的网络环境具有不同的特性,压缩视频在其中进行传输时必然会受到影响。例如,不同类型的网络支持的最大传输单元(Maximum Transmission Unit,MTU)可能有所

2025-04-29 16:19:10 1191

原创 音视频之H.265/HEVC熵编码

熵编码是指按信息熵原理进行的无损编码方式,无损编码也是有损视频编码中的一个关键模块,它处于视频压缩系统的末端。编码把一系列用来表示视频序列的元素符号转变为一个用来传输或存储的压缩码流,输入的符号可能包括量化的变换系数、运动矢量信息、预测模式信息等。熵编码可以有效去除这些视频元素符号的统计几余,是保证视频编码压缩效率的重要工具之一。

2025-04-27 18:12:18 1573

原创 音视频之H.265/HEVC环路后处理

类似于以往的视频编码标准,H.265/HEVC 仍采用基于块的混合编码框架,方块效应、振铃效应、颜色偏差以及图像模糊等失真效应仍存在于采用 H.265/HEVC 标准的压缩视频中。为了降低这类失真对视频质量的影响,H.265/HEVC中采用了环路滤波技术叫(In-loop Filtering),包括去方块滤波(Deblocking Filter)和像素自适应补偿(Sample Adaptive Offset)两个模块。去方块滤波用于降低方块效应,像素自适应补偿用于改善振铃效应,这两个模块在编码框架中的位置如

2025-04-24 19:12:37 1577

原创 音视频之H.265/HEVC量化

量化 (Quantization) 是指将信号的连续取值(或大量可能的离散取值)映射为有限多个离散幅值的过程,实现信号取值多对一的映射。在视频编码中,残差信号经过离散余弦变换 (DCT) 后,变换系数往往具有较大的动态范围。因此对变换系数进行量化可以有效地减小信号取值空间,进而获得更好的压缩效果。同时,由于多对一的映射机制,量化过程不可避免地会引入失真,它也是视频编码中产生失真的根本原因。

2025-04-24 15:02:06 1426

原创 音视频之H.265/HEVC变换编码

变换编码图像变换编码是指将以空间域中像素形式描述的图像转换至变换域,以变换系数的形式加以表示。绝大多数图像都含有较多平坦区域和内容变化缓慢的区域,适当的变换可使图像能量在空间域的分散分布转为在变换域的相对集中分布,以达到去除空间几余的目的,结合量化、“z”扫描和熵编码等其他编码技术,可以获得对图像信息的有效压缩。H.265/HEVC标准规定,在帧内4x4式亮度分量残差编码中使用4x4 整数 DST,而在帧内其他模式、帧间所有模式,以及所有色差分量的残差编码中一律使用整数DCT。这主要是由于帧内预测利用周围已

2025-04-18 18:02:20 1516

原创 音视频之H.265/HEVC预测编码

预测编码是视频编码中的核心技术之一。对于视频信号来说,一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之间也有很强的时间相关性。因此,先进的视频编码往往采用帧内预测和帧间预测的方式,使用图像内已编码像素预测邻近像素,或利用己编码图像预测待编码图像,从而有效去除视频空域和时域的相关性。视频编码器对预测后的残差而不是原始像素值进行变换、量化、熵编码,由此大幅提高编码效率。自差分编码被应用于视频压缩以来,预测编码一直是视频编码标准的重要内容。

2025-04-16 18:04:11 1366

原创 音视频之H.265/HEVC编码框架及编码视频格式

H.265/HEVC采用混合编码框架,包括变换、量化、熵编码、帧内预测、帧预测以及环路滤波等模块。但是,H.265/HEVC几乎在每个模块都引入了新的编码技术。

2025-04-12 18:48:01 1764

原创 音视频之H.265码流分析及解析

 H.265又称为HEVC(全称High Efficiency Video Coding,高效率视频编码,本文统称为H.265),是 ITU-T H.264/MPEG-4 AVC标准的继任者。2004年由ISO/IEC Moving Picture Experts Group(MPEG)和 ITU-T Video Coding Experts Group(VCEG)作为ISO/IEC 23008-2 MPEG-H Part 2或称作ITU-T H.265开 始制定。第一版的HEVC/H.265视频压缩标准在

2025-03-19 10:30:35 2671

原创 LearnOpenGL之Shader编程——生成设计

网格噪声基于距离场,这里的距离是指到一个特征点集最近的点的距离。比如说我们要写一个 4 个特征点的距离场,我们应该做什么呢?对每一个像素,计算它到最近的特征点的距离。也就是说,我们需要遍历所有 4 个特征点,计算他们到当前像素点的距离,并把最近的那个距离存下来。

2025-02-28 18:03:26 1010

原创 LearnOpenGL之Shader编程用算法绘画

 如果你曾经有用计算机绘图的经验,你就知道在这个过程中你需要画一个圆,然后一个长方形,一条线,一些三角形……直到画出你想要的图像。这个过程很像用手写一封信或一本书 —— 都是一系列的指令,需要你一件一件完成。        Shaders 也是一系列的指令,但是这些指令会对屏幕上的每个像素同时下达。也就是说,你的代码必须根据像素在屏幕上的不同位置执行不同的操作。就像活字印刷,你的程序就像一个 function(函数),输入位置信息,输出颜色信息,当它编译完之后会以相当快的速度运行。

2025-02-28 18:03:05 939

原创 LearnOpenGL之骨骼动画

  (动画)插值就是关键帧的中间值。比如我们使用Blender制作动画,不需要设置每一帧的骨骼位置,只需要在几个关键帧中记录它们的位置,旋转,缩放等等信息。然后由程序自动计算出的中间的过渡帧就是我们的插值。通常插值可以使用曲线描述,比如我们的贝塞尔曲线。

2025-02-13 17:26:50 980

原创 GL C++显示相机YUV视频数据使用帧缓冲FBO后期处理,实现滤镜功能。

帧缓冲对象(Framebuffer Object, FBO)是 OpenGL 中用于管理渲染目标的核心工具。它允许你将渲染结果输出到纹理、渲染缓冲对象(Renderbuffer)或其他自定义的缓冲区,而不是默认的屏幕缓冲区。帧缓冲在图形渲染中具有重要作用。        以下是帧缓冲的主要作用和应用场景:

2025-01-23 20:41:18 1812 1

原创 LearnOpenGL之高级OpenGL(2)

当使用多于一个的着色器时,尽管大部分的uniform变量都是相同的,我们还是需要不断地设置它们,所以为什么要这么麻烦地重复设置它们呢?        OpenGL为我们提供了一个叫做Uniform缓冲对象(Uniform Buffer Object)的工具,它允许我们定义一系列在多个着色器程序中相同的全局Uniform变量。当使用Uniform缓冲对象的时候,我们只需要设置相关的uniform一次。当然,我们仍需要手动设置每个着色器中不同的uniform。并且创建和配置Uniform缓冲对象会有一点繁琐

2025-01-21 11:08:29 932

原创 LearnOpenGL之高级OpenGL(1)

帧缓冲对象的初始化首先要创建一个帧缓冲对象,并绑定它,这些都很直观:接下来我们需要创建一个纹理图像,我们将它作为一个颜色附件附加到帧缓冲上。我们将纹理的维度设置为窗口的宽度和高度,并且不初始化它的数据:创建渲染缓冲对象:将渲染缓冲对象附加到帧缓冲的深度和模板附件上:绑定到帧缓冲区,像往常一样绘制场景以着色纹理。

2025-01-17 16:03:44 964

原创 OpenGL C++视频中添加图片及文字水印播放并录制

根据前置储备,该功能的实现流程:创建一个GLThread的OpenGL运行环境;YUV数据绘制到OpenGL纹理中;图片纹理创建绘制到glViewport;文字渲染绘制到glViewport;录制视频的surface并根据此切换GLContext上下文交换(swapBuffer)渲染与显示的视频数据 ;MediaCodec获取出encodeData写入MediaMuxer成为MP4文件格式的视频

2024-11-14 21:33:46 1536

在编译FFmpeg过程中加入第三方X264库编译

在编译FFmpeg过程中加入第三方X264库编译

2025-08-26

Ubuntu系统下交叉编译Android的X264库

android平台NDK为android-ndk-r27c交叉编译X264的脚本,及交叉编译结果。

2025-08-22

NDK交叉编译FFmpeg

使用android-ndk-r27c-linux交叉编译ffmpeg-5.1.6。

2025-06-30

kotlin基础

kotlin语言文档

2017-07-09

Android自定义画布及环形菜单

1.画布绘制控件的方法,控件应该是一个可以自定义的; 2.画布是可以缩放,且提供一个缩放的方法供外使用; 3.控件之间连线的方法; 4.画布缩放之后手势滑动的识别实现; 5.环形菜单的实现。

2017-07-02

Android 画布Canvas之连线动画Demo

实现在画布中连线的动画的效果,可以控制连线动画的速度,连线的颜色及线宽!!!!!!!!!!!11!!!!!

2017-12-11

Android 画布Canvas之控件连线操作Demo

1.在画布中的控件A长按能进行控件的连接,只有在控件B范围内抬起控件之间的连线才能连接成功; 2.当控件连线成功后,拖动控件AB之间的连线随着控件的拖动随之变化; 3.控件连线在屏幕上随着手势滑动触碰到连接则断开连线; 4.控件拖动时如拖动到其他控件的范围位置之内则弹回原来的位置且控件的连线也恢复原来的位置(控件在屏幕上不能重叠); 5.控件放置时如有控件之间的连线相交则也恢复原来的位置(在屏幕上控件间的连线不能相交); 6.控件拖动到连线上也会弹回; 7.进行控件的连续连接。

2017-07-24

Android中RecyclerView的item运用覆盖view的方法实现item的动画效果

Android中RecyclerView的item运用覆盖view的方法实现item的动画效果,Android中RecyclerView的item运用覆盖view的方法实现item的动画效果

2017-04-04

Android中RecyclerView的item运用覆盖view的方法实现item的动画效果1

item实现item的动画效果,item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果item实现item的动画效果

2017-04-04

Android下自动连接指定SSID的WIFI的简单实现的demo

Android下自动连接指定SSID的WIFI的简单实现的demo,  需求分析:在很多的智能设备上并没有可用于交互的界面。这种情形在智能设备就可以提供指定SSID和密码的wifi自动连接。

2018-10-31

Android自定义万能Canvas画布Demo

1.在自定义的画布中实现可缩放手势,摇一摇可对控件进行整理排序; 2.画布中可以添加位置设定的控件,控件可以响应点击、长按、拖动事件; 3.控件A长按事件会隐藏画布中的控件除了A之外,显示另一个控件B;当A在在底层画布中拖动,拖动结束之后回到原画布;当A移动B的位置范围响应操作(可以添加另方面功能)。

2017-07-17

GamepadView、JostickView仿创客工场中的遥感的自定义View

仿创客工场中GamepadView、JostickView的操纵杆的自定义View!!!!!!!!!!!!!!!!1

2018-08-04

Android Blockly积木编程源码对Workspace中的block数据保存及读取的流程,及改造原生代码实现Trash垃圾桶中的block保存及读取

Android Blockly积木编程源码对Workspace中的block数据保存及读取的流程,及改造原生代码实现Trash垃圾桶中的block保存及读取。

2018-01-31

Coverflow源码改造之后的代码

Coverflow源码改造之后的代码,实现在控件左右两边限制了卡片的数量,并在下一个卡片出现之后要消失的卡片随之隐藏需求的的要求。

2017-09-18

StickyLayoutDemo

StickyLayoutDemo

2017-04-08

空空如也

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

TA关注的人

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