- 博客(306)
- 资源 (18)
- 收藏
- 关注
原创 ffmpeg + gstreamer: 投屏如此简单
FFmpeg 和 GStreamer 均为音视频处理工具。FFmpeg 可通过命令行将本地视频编码并推送至网络,实现投屏,如将视频流以 RTSP 协议发送到指定地址。GStreamer 则适合作为接收端播放,通过构建包含网络源、解码器、渲染器的管线,接收并播放 FFmpeg 推送的流。二者常配合使用:FFmpeg 负责编码和推送投屏内容,利用其强大的格式支持和高效编码能力;GStreamer 凭借灵活的管线架构,处理接收、解码和播放,实现跨平台的流畅播放体验,适用于多设备投屏场景。
2025-10-31 11:16:01
911
原创 OpenIPC 初探: GK7205 v200 出图记录
OpenIPC是一个开源固件项目,旨在替代IP摄像机的厂商闭源固件,提供更高的用户控制权和隐私保障。国科微GK7205V200芯片是其支持的硬件之一,支持1080P@30fps等视频规格。文章详细介绍了购买渠道、烧录OpenIPC固件的步骤(包括原厂SDK和官方固件),以及如何通过Web界面配置设备参数和使用RTSP流媒体功能。最终用户可通过浏览器或VLC等播放器实时查看监控画面。
2025-10-20 11:50:11
997
原创 OpenIPC初探: 编译
OpenIPC是一个基于Buildroot的开源IP摄像头固件项目,核心组件采用MIT许可证,但高性能流媒体器Majestic目前仍为专有软件。编译自定义固件需在Linux环境下使用OpenIPC构建器工具,支持特定设备并自动加载配置。构建过程包括安装依赖、克隆仓库、运行构建脚本(约30-60分钟),最终生成固件文件。常见问题包括GitHub访问、GLIBC版本过低等,可通过修改配置或升级系统解决。该项目强调开源协作,但Majestic的封闭性使其非完全开源。
2025-09-30 10:35:42
969
原创 AI: Android 运行ONNX模型
本文介绍了在Android平台上运行ONNX模型的五种实现方案,包括ONNX Runtime、TensorFlow Lite、PyTorch Mobile、MNN和NCNN框架。重点阐述了ONNX Runtime的集成方法,包括依赖引入、模型加载、数据预处理、推理执行和结果解析等关键步骤。以YOLOv8模型为例,演示了多输入/输出节点的处理方式,并提供了硬件加速优化建议。本文为移动端AI部署提供了实用的技术选型参考和实现.
2025-09-16 23:35:45
1565
原创 vlc-android: 编译自己的libvlc
本文介绍了VLC媒体播放器Android版的编译与使用。VLC支持多种多媒体格式和流媒体协议,兼容Android 4.2及以上版本及多种硬件架构。编译环境需配置Ubuntu 22.04、NDK 27等工具,编译过程中可能遇到CMake版本过旧、文件缺失等问题,文中提供了相应解决方案。最终生成aar文件后,可通过简单代码实现H264视频播放功能,示例包含XML布局和Java播放器实现代码。
2025-08-21 22:34:53
1064
1
原创 Android 设置/修改系统NTP服务地址
Android手机时间同步机制主要依赖网络NTP同步,同时结合GPS、移动网络和本地RTC时钟等多种来源协同工作。NTP同步是最主要的方式,通过访问预设服务器获取精确时间;GPS提供高精度时间校准,特别在无网络时;移动网络会传递基站时间;而离线时则依赖内置RTC芯片维持基本时间。系统会根据网络状态自动选择最优时间源,确保时间准确性。代码层面通过NetworkTimeUpdateService实现NTP查询,从系统配置或全局设置中获取NTP服务器地址,并定期强制刷新时间以保持同步。
2025-08-09 18:15:57
2442
原创 Ubuntu 抽取系统制作便于chroot的镜像文件
本文介绍了如何在Ubuntu 20.04系统中创建可移植的系统镜像文件,并部署到其他Ubuntu系统使用。主要内容包括:通过dd命令创建30GB空镜像并格式化为ext4;使用rsync复制系统文件(排除/proc等动态目录);将镜像传输到目标系统后,通过mount和chroot切换环境。文中还提供了注意事项,包括硬件兼容性检查、内核引导配置、权限管理和存储空间优化等建议,并附有相关参考链接。该方案适用于需要迁移开发环境或进行系统备份的场景。
2025-07-29 16:19:37
795
原创 OpenCV 4.10.0 移植 - Android
本文介绍了如何在Ubuntu环境下为Android平台编译OpenCV 4.10.0 SDK,并集成到Android Studio项目中。文章提供了两种编译方法:使用Python脚本或传统Make工具,详细说明了环境配置和编译参数设置,包括NDK路径、ABI类型选择等关键配置。编译完成后,SDK目录将包含native库和Java绑定文件。最后讲解了如何将编译好的OpenCV模块导入Android Studio项目,通过在settings.gradle中添加模块路径并在app模块中添加依赖来实现。
2025-07-10 11:36:55
767
原创 OpenCV 4.10.0 移植
本文介绍了OpenCV 4.10.0在aarch64平台上的移植过程。OpenCV作为计算机视觉领域的核心开源库,支持图像处理、目标检测、深度学习等功能。文章详细说明了在Ubuntu 18.04环境下配置交叉编译工具链,通过CMake构建脚本完成编译,生成包括核心库(core)、图像处理(imgproc)、图像编解码(imgcodecs)等关键模块。最后总结了各库文件的作用,如core提供基础数据结构,imgproc实现图像滤波变换,dnn支持深度学习推理等。该移植方案验证了OpenCV在嵌入式平台的基本可
2025-06-29 15:41:31
925
原创 Ubuntu 22.04: 使用chroot切换到Ubuntu18.04运行环境进行开发编译
使用chroot切换Ubuntu开发环境 摘要:本文介绍了使用chroot技术在不同Ubuntu版本间切换开发环境的方法。针对嵌入式开发中不同SDK对编译环境的特殊需求,作者详细讲解了如何通过chroot将安装在U盘的Ubuntu 18.04系统作为隔离环境运行在Ubuntu 22.04主机上。内容包括准备工作、挂载文件系统、进入/退出chroot环境的操作步骤,以及实用小贴士和自动化挂载脚本。这种方法避免了频繁切换系统和虚拟机资源消耗的问题,为嵌入式开发者提供了灵活的多版本环境管理方案。
2025-06-11 17:16:49
1159
原创 Buildroot 移植MiniGUI: 编写简单示例(基于君正X2000)
本文介绍了在X2000平台上使用MiniGUI-Threads模式编写并运行一个简单的MiniGUI程序的过程。首先,文章概述了MiniGUI的三种运行模式:MiniGUI-Threads、MiniGUI-Processes和MiniGUI-Standalone,并选择了MiniGUI-Threads模式进行开发。接着,提供了示例代码minigui_hello.c,展示了如何创建一个窗口并显示“Hello world!”文本。代码中还包括了X2000平台特定的FrameBuffer操作,以确保图像能够正确刷
2025-05-17 22:51:24
768
原创 Buildroot 移植MiniGUI
MiniGUI 是一个轻量级图形用户界面库,适用于嵌入式系统。本文将介绍如何将 MiniGUI 4.0.8 移植到 Buildroot 系统中。移植过程包括下载 MiniGUI 核心库、资源文件、第三方依赖库(如 FreeType、LibPNG、LibJPEG 等)以及附加组件(如 libmgutils、libmgplus)。首先,确保开发环境已安装 Buildroot 的依赖工具,并下载 Buildroot 源码。接着,配置 Buildroot 并添加 MiniGUI 支持。通过创建 MiniGUI 包定
2025-05-15 17:00:30
838
原创 Android adb 安装应用失败(安装次数限制)
Android Debug Bridge (ADB) 是一个功能强大的命令行工具,用于与 Android 设备通信。安装 APK 文件使用命令adb install <apk文件路径>可以将 APK 文件安装到设备上。突然出现的安装失败, 原因居然是安装次数的限制
2025-04-28 17:36:01
2272
原创 Android RK356X TVSettings USB调试开关
是瑞芯微(Rockchip)推出的一款高性能处理器,支持 USB OTG(On-The-Go)和 USB Host 功能。USB OTG 和 Host 的切换功能是 RK3568 的一项重要特性,允许设备在不同的 USB 角色之间动态切换,从而实现更灵活的应用场景。USB OTG 和 Host 的切换功能USB OTG 是一种允许设备在主机(Host)和设备(Device)之间动态切换的功能。
2025-04-21 14:57:59
1125
1
原创 Android OpenGLES 360全景图片渲染(球体内部)
360度全景图是一种虚拟现实技术,它通过对现实场景进行多角度拍摄后,利用计算机软件将这些照片拼接成一个完整的全景图像。这种技术能够让观看者在虚拟环境中以交互的方式查看整个周围环境,就好像他们真的站在那个位置一样。在Android设备上查看360度全景图片,可以使用一些专门的app, 不如Google相册, Google 街景, 第三方的全景图片查看应用。这些应用程序能够识别并以交互方式展示360度全景图像,让用户可以旋转、缩放和平移来探索整个场景。360全景图片渲染可以使用openGLES来轻松实现.
2025-03-31 17:31:33
672
原创 Buildroot 增加系统启动项并解决后台无法获取输入(串口)
Buildroot 是一款轻量级、高度可定制的开源工具集,专为嵌入式系统打造。它通过自动化构建流程(交叉编译工具链、Linux内核、根文件系统、引导程序),将复杂的嵌入式开发简化为“菜单配置”(make menuconfig)。开发者无需手动处理依赖与兼容性问题,只需勾选所需软件包,即可生成完整的可烧录镜像。在嵌入式场景中,服务进程的自动加载是刚需, 通常将启动脚本置于/etc/init.d/(SysV init)或编写systemd单元文件,实现服务的全自动托管。
2025-03-24 20:16:09
1210
原创 网件 R6220路由 OpenWRT 安装 ShellCrash
ShellCrash是为Linux系统提供便捷管理功能的工具,适用于路由器,可通过Web面板在shell环境下管理设备,支持多种模式切换、在线更新等,能灵活配置网络规则实现精准流量管理;网件R6220是2015年发布的家用无线路由器,性能稳定,采用联发科MT7621ST处理器,支持双频,有4个千兆LAN口和1个千兆WAN口,适合家庭网络使用;R6220要安装ShellCrash需先成功刷入OpenWRT系统,否则无法安装。
2025-02-17 11:00:00
3316
原创 Android GLSurfaceView 覆盖其它控件问题 (RK平台)
使用GLSurfaceView播放视频的过程中, 增加了一个播放控制面板, 覆盖在视频上方. 默认隐藏`setVisibility(View.INVISIBLE);`点击屏幕再显示出来. 然而, 在**RK3566**上这个简单的功能却无法正常工作.
2025-01-23 16:53:59
983
1
原创 Android 调用系统服务接口获取屏幕投影(需要android.uid.system)
借助 Android 5(API 级别 21)中引入的 android.media.projectionAPI,您可以将设备屏幕中的内容截取为可播放、录制或投屏到其他设备(如电视)的媒体流。Android 14(API 级别 34)引入了应用屏幕共享功能,让用户能够分享单个应用窗口(而非整个设备屏幕),无论窗口模式如何。应用屏幕共享功能会将状态栏、导航栏、通知和其他系统界面元素从共享显示屏中排除,即使应用屏幕共享功能用于全屏截取应用也是如此。系统只会分享所选应用的内容。
2025-01-14 17:20:07
1098
原创 Android 蓝牙开发-传输数据
传统蓝牙是通过建立来进行通信的,类似于socket通信,一台设备需要开放服务器套接字并处于listen状态,而另一台设备使用服务器的MAC地址发起连接。连接建立后,服务器和客户端就都通过对BluetoothSocket进行读写操作来进行通信。
2024-12-23 11:46:39
1074
原创 Android 开发者选项-模拟辅助显示设备
在Android开发中,模拟辅助显示设备通常指的是通过Android开发者选项来设置的一种虚拟显示设备,它允许开发者在一个设备上模拟另一个设备的显示特性。这种功能对于测试应用程序在不同屏幕尺寸、分辨率和DPI(每英寸点数)下的表现非常有用。另一个作用是, 它可以通过特定的开发技巧和功能来充当副屏,实现多屏显示的效果。这种功能在开发测试、多任务处理以及特定应用场景(如车载系统)中非常有用。
2024-12-11 14:36:36
3307
原创 Android 使用OpenGLES + MediaPlayer 获取视频截图
获取视频缩略图的方法: ContentResolver, MediaMetadataRetriever, ThumbnailUtils:几种方法存在一定的局限性, 比如, ContentResolver需要视频文件已经通过mediascanner 添加到系统数据库中, 使用MediaMetadataRetriever不支持某些格式等等. 常规的格式比如MP4, MKV, 这些接口还是很实用的. 为了丰富接口本文尝试使用MediaPlayer + OpenGLES来获取视频缩略图
2024-11-30 17:16:32
1835
原创 android:taskAffinity 对Activity退出时跳转的影响
在 Android 开发中,任务栈(Task)是一个核心概念。它决定了应用程序的 Activity 如何相互交互以及在后台运行时的行为。是 Activity 的一个属性,它直接影响 Activity 在任务栈中的组织方式。通常,是AndroidManifest.xml 中的一个属性,用于定义 Activity 所属的任务栈的“亲和性”。每个应用程序默认有一个任务栈,且应用内所有的 Activity 默认共享同一个。通过为不同的 Activity 定义不同的,可以控制它们被分配到不同的任务栈中。
2024-11-18 16:09:52
1151
原创 Steam deck 倒腾日记 - 安装Windows软件,玩上黑神话悟空
Steam Deck以其强大的性能、丰富的游戏库和出色的操作体验,满足了大多数游戏玩家的需求。尽管续航能力有待提升,但考虑到它能带来的PC级游戏体验,这个缺点也是可以接受的. 关键他还能玩上黑神话.悟空(正版)
2024-10-30 19:48:40
2855
原创 Android 图片相识度比较(pHash)
在 Android 中,要比对两张Bitmap图片的相似度,常见的方法有基于像素差异直方图比较、或者使用一些更高级的算法如SSIM(结构相似性)和感知哈希(pHash)。
2024-10-20 23:54:57
1564
原创 嘉楠科技AI芯片K230-初探
K230芯片是嘉楠科技 Kendryte®系列AIoT芯片中的最新一代SoC产品。该芯片采用全新的多异构单元加速计算架构,集成了2个RISC-V高能效计算核心,内置新一代KPU(Knowledge Process Unit)智能计算单元,具备多精度AI算力,广泛支持通用的AI计算框架,部分典型网络的利用率超过了70%。
2024-09-30 20:56:50
4911
原创 Android MediaPlayer + GLSurfaceView 播放视频
在Android开发中,使用OpenGL ES来渲染视频是一种常见的需求,尤其是在需要实现自定义的视频播放界面或者视频特效时。结合MediaPlayer,我们可以实现一个功能强大的视频播放器。以下是一个简单的示例,展示如何在Android应用中使用OpenGL ES和MediaPlayer播放本地视频。
2024-09-16 19:09:48
2955
1
原创 RK3568 Android 11 蓝牙BluetoothA2dpSink 获取用于生成频谱的PCM
音乐频谱是声音频率的分布图。声音是由不同频率的声波组成的,这些声波的振幅(强度)不同,就形成了不同的音色。频谱图就是将这些频率和振幅的关系用图形表示出来。RK3568 Android 11 中, 如何在A2dpSink中获取用于生成音频频谱的PCM数据
2024-08-28 16:26:10
2057
1
原创 Android TableLayout中TextView文本不居中问题
使用TableLayout布局电话的拨号按键界面, 开发过程的某次修改后, TextView在垂直方向的居中失效了, 即使设置了gravity 为center属性也不行
2024-08-21 15:03:30
1081
原创 CMake 使用 OpenCV:从库中查找包含头文件
在开发使用 OpenCV 的项目时,正确配置 CMake 是确保项目顺利构建和运行的关键。开发过程经常存在各种各样的意外和偶然, 是困难也是收获! 记录一次找不到头文件的经历
2024-07-25 17:40:46
1558
1
原创 RK3588 linux RGA初探
RGA(Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。
2024-07-08 18:16:51
5566
原创 Android AOSP 编译并烧录到Google Pixel4XL
AOSP(Android Open Source Project)是Android系统的开源版本,任何人都可以下载、编译和修改。手头上有一台Pixel 4XL,尝试编译AOSP并将其烧录到的设备上。
2024-06-24 23:14:21
1601
原创 Android 11 低电量自动关机失效
基于RK3568 Android 11 系统开发过程中, 移植了电源和电池相关的驱动后, 测试发现低电自动关机的功能失效了, 基于源码SDK排查问题过程记录
2024-06-08 21:27:47
1713
原创 Android ListView鼠标模式下ListView回滚问题
在 Android 应用程序中,ListView 是一种常用的控件,用于显示可滚动列表数据。然而,当在鼠标操作模式下使用 ListView 时,可能会遇到一个问题:点击列表项时,列表会回滚到指定位置,这可能会导致用户体验不佳。
2024-05-26 17:32:16
440
原创 Android 的 Timer 和 TimerTask
Timer 是 Java 中用于创建定时任务的类。它位于 `java.util` 包中。可以使用 Timer 来安排一次性或定期执行的任务。每个 Timer 对象都对应一个后台线程。此线程负责从任务队列中检索任务并按计划执行它们。
2024-05-09 20:58:44
2282
原创 Android 11 裁剪系统显示区域(适配异形屏)
在显示技术中,"OverScan"(超扫描)是一种调整显示图像边界的技术。通常情况下,OverScan 会在显示屏的边缘周围裁剪一小部分图像。这种裁剪是为了确保显示内容在屏幕上的完整可见性,尤其是在老式电视或投影仪等设备上,可能存在图像边缘出现失真或过多噪点的问题。OverScan 通过裁剪图像边缘,可以隐藏显示器边缘的任何不完美之处,例如边缘上的噪点、失真或黑边。这有助于确保图像在屏幕上的边缘部分看起来整洁且不受干扰,提供更好的观看体验。
2024-04-27 11:23:57
3731
2
原创 RK3588 linux 修改ulimit 配置
ulimit内核文件的大小限制进程数据块的大小限制Shell进程创建文件大小限制可加锁内存大小限制常驻内存集的大小限制打开文件句柄数限制分配堆栈的最大大小限制CPU占用时间限制用户最大可用的进程数限制Shell进程所能使用的最大虚拟内存限源于一次粗心大意, 编写的程序忘记了关闭打开的文件, 导致文件打开失败, 失败的原因是打开的文件太多
2024-04-17 19:05:35
1343
1
原创 Linux repo基本用法: 搭建自己的repo仓库[服务端]
Repo 是在 Git 之上构建的工具,用于大规模分布式开发环境中的多仓库协同管理。特别是那些包含了大量相互依赖的子模块或者子项目的工程,如 Android 开源项目 (AOSP)。Repo 可以简化对这些子仓库的初始化、同步、分支管理、提交以及推送等操作。它通过 manifest 文件来描述所有子项目的配置和依赖关系,从而提供了一种在顶层统一管理多个 Git 仓库的方法。
2024-03-28 11:20:49
3208
原创 RK3588 Buildroot 增加本地模块(单独编译/加入系统配置)
在RK3588开发板环境下,开发者通常利用Buildroot来定制适合RK3588芯片特性的嵌入式Linux系统。通过Buildroot,开发者能够根据实际需求裁剪系统组件、添加特定驱动、配置内核特性,并集成用户应用程序,最终生成最小化且高效的Bootloader、Linux内核镜像、根文件系统镜像(例如rootfs.ext2或 squashfs格式)以及其他必要的启动和系统配置文件。本文的小目标: 增加本地自定义软件模块!
2024-03-18 20:26:44
3670
1
OpenCV 4.10.0 移植 - Android 参考调用示例代码
2025-07-10
RK3568 Android 11 蓝牙A2DP SINK 补丁
2024-08-29
Android WebRTC 的一些资料
2022-12-01
rk3288 android 9.0 linker
2020-06-23
Launcher3_removeSearchBar.tar.gz
2020-09-03
linker_patch.tar.gz
2020-06-23
frameworks_rotateExternalScreen.tar.gz
2020-06-17
Android TensorFlow Lite 初探 数字分类器
2020-11-09
debug_wm_freeform_display_error.tar.gz
2020-06-03
usb_camera_no_sound.tar.gz
2020-07-23
no_sound_usb_camera_boot.tar.gz
2020-07-21
libamrwb_decoder.zip
2021-04-09
SpinnerTest.tar.gz
2021-02-07
live.2018.01.29.tar.gz|live.2018.01.29.tar.gz
2020-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅