当前位置:首页 > 文章中心 > 正文内容

开源项目:OpenHarmony WMA音频解码器

dgx6663个月前 (09-10)文章中心16

OpenHarmony WMA音频解码器

项目概述

本项目是参加 OpenHarmony 多媒体编解码竞赛 的参赛作品,旨在为 OpenHarmony 平台开发一个完整的 WMA 音频解码器,支持 WMA V1/V2/PRO 格式解码,提供 NDK 接口和 ArkTS 应用层。

目前仓库还是私有状态,待比赛结束后会开放出来,有兴趣的朋友可以先加个关注或私聊。

竞赛要求

  • 支持格式 : WMA V1/V2/PRO音频解码
  • 平台要求 : OpenHarmony 5.0+ (API 15)
  • 接口要求 : NDK接口支持,支持能力查询
  • 输出要求 : PCM数据,播放声音正常
  • 文档要求 : API参考、开发指南 #技术分享

项目特色

  • 静态链接方案 : 避免动态加载问题,提升性能
  • 完整技术栈 : FFmpeg + NDK + NAPI + ArkTS
  • 模拟数据支持 : 提供真实音频体验的测试环境
  • 详细文档 : 完整的API参考和开发指南

技术架构

整体架构(静态链接)

┌─────────────────────────────────────────────────────────────┐
│                    OpenHarmony 应用                         │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                    ArkTS 应用层                          │ │
│  │  ┌─────────────────┐  ┌─────────────────┐  ┌──────────┐ │ │
│  │  │   音频播放器    │  │   文件管理器    │  │  测试应用 │ │ │
│  │  └─────────────────┘  └─────────────────┘  └──────────┘ │ │
│  └─────────────────────────────────────────────────────────┘ │
│                              │                               │
│                              ▼                               │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                    NAPI 函数 (内置)                     │ │
│  │  ┌─────────────────────────────────────────────────────┐ │ │
│  │  │              napi_wrapper_c.c                       │ │ │
│  │  │  o queryCapabilities() -

│ │ │ o createDecoder() -

│ │ │ o decode() -

│ │ │ o getInfo() -

│ │ │ o destroyDecoder() -

│ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ NDK 接口层 │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ │ │ oh_wma_decoder.cpp │ │ │ │ │ │ o OHWmaDecoder_Create() -

│ │ │ o OHWmaDecoder_Init() -

│ │ │ o OHWmaDecoder_Decode() -

│ │ │ o OHWmaDecoder_GetInfo() -

│ │ │ o OHWmaDecoder_Destroy() -

│ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 核心解码层 │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ │ │ wma_decoder_c.c │ │ │ │ │ │ o wma_decoder_create() -

│ │ │ o wma_decoder_init() -

│ │ │ o wma_decoder_decode() -

│ │ │ o wma_decoder_get_info() -

│ │ │ o wma_decoder_destroy() -

│ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ │ │ pcm_processor_c.c │ │ │ │ │ │ o PCM 缓冲区管理 │ │ │ │ │ │ o 音频格式转换 │ │ │ │ │ │ o 重采样处理 │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 第三方库层 │ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────┐ │ │ │ │ │ libavcodec │ │ libavutil │ │libswresample│ │ │ │ │ │ (WMA 解码) │ │ (工具函数) │ │ (重采样) │ │ │ │ │ └─────────────────┘ └─────────────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘

技术栈

  • 平台 : OpenHarmony 5.0+ (API 15)
  • 开发语言 : C/C++ (NDK层) + ArkTS (应用层)
  • 核心解码库 : FFmpeg 6.1 (libavcodec)
  • 音频框架 : OHAudio
  • 接口桥接 : NAPI
  • 构建工具 : OpenHarmony NDK + CMake
  • 链接方式 : 静态链接

静态链接优势

  1. 避免动态加载问题 : 所有代码直接编译进应用
  2. 更好的性能 : 静态链接减少运行时开销
  3. 更简单的部署 : 单一可执行文件,减少依赖管理
  4. 编译时错误检查 : 在编译时就能发现错误
  5. 无运行时依赖 : 不依赖外部模块加载

开发路线

阶段一:基础架构搭建

  • FFmpeg交叉编译 (OpenHarmony aarch64)
  • 核心解码器实现 (C语言)
  • NDK接口层设计
  • NAPI桥接层实现
  • 静态链接方案实施

阶段二:应用集成

  • OpenHarmony应用创建
  • ArkTS界面开发
  • 模拟数据生成
  • 功能测试验证

阶段三:真机验证

  • 真机部署测试
  • WMA文件解码验证
  • 音频播放集成
  • 性能优化

阶段四:完善优化

  • 完整错误处理
  • 性能基准测试
  • 文档完善
  • 示例应用

当前进展

已完成工作

1. FFmpeg交叉编译

  • 成功交叉编译FFmpeg 6.1 for OpenHarmony aarch64
  • 包含libavcodec、libavutil、libswresample
  • 支持WMA V1/V2/PRO格式解码

2. C语言核心解码器

  • 核心解码器: wma_decoder_c.c (8,718 字节)
  • PCM处理器: pcm_processor_c.c
  • 完整的WMA解码逻辑实现

3. NDK接口层

  • NDK接口: oh_wma_decoder.cpp (15,436 字节)
  • C++包装器,提供C风格API
  • 完整的错误处理和资源管理

4. NAPI桥接层

  • NAPI桥接: napi_wrapper_c.c (18,496 字节)
  • 模块注册为 @ohos/wma-decoder
  • 完整的函数导出和类型转换

5. 静态链接方案

  • 修改CMakeLists.txt,直接编译所有源码
  • 正确链接FFmpeg静态库
  • 避免动态模块加载问题
  • 所有代码编译进应用,无外部依赖

6. OpenHarmony应用集成

  • 应用编译成功
  • ArkTS代码编译成功
  • UI界面正常工作
  • 模拟模块提供完整功能测试

编译统计

  • 总编译时间 : ~39秒
  • ArkTS编译 : 成功
  • C/C++编译 : 成功
  • 链接 : 成功
  • 应用启动 : 成功

运行效果

应用界面

  • 应用正常启动
  • 按钮交互正常
  • 日志输出详细
  • 测试结果显示

模拟解码器功能

  • 生成真实的PCM音频数据(440Hz正弦波)
  • 支持44.1kHz, 2声道, 16位音频格式
  • 完整的解码器接口实现
  • 错误处理和资源管理

运行日志示例

 静态链接已完成,使用模拟模块进行测试
 真实NAPI模块已编译进应用,等待运行时支持
解码器能力: {
  "supportedFormats": 7,
  "maxSampleRate": 48000,
  "minSampleRate": 8000,
  "maxChannels": 8,
  "maxBitDepth": 32,
  "minBitDepth": 8
}
解码器初始化成功,ID: 1
WMA解码器初始化成功,配置: {"sampleRate":44100,"channels":2,"bitDepth":16,"format":2}
解码成功: 1024字节, 44100Hz

运行条件

开发环境要求

  • 操作系统 : macOS 12.0+ / Ubuntu 20.04+ / Windows 10+
  • OpenHarmony SDK : 15.0+
  • DevEco Studio : 4.0+
  • NDK工具链 : OpenHarmony NDK 15.0+
  • 内存 : 8GB+
  • 存储 : 10GB+ 可用空间

运行环境要求

  • 设备 : 支持OpenHarmony 5.0+的设备
  • 架构 : ARM64 (aarch64)
  • 内存 : 2GB+
  • 存储 : 1GB+ 可用空间

各平台配置要点

macOS 配置要点(强烈建议使用mac)

1. 环境变量配置

export OHOS_NDK_HOME=/Users/你的用户名/Library/OpenHarmony/Sdk

echo $OHOS_NDK_HOME

2. 工具链检查

ls $OHOS_NDK_HOME/15/native/llvm/bin/clang

ls $OHOS_NDK_HOME/15/native/llvm/bin/

3. 常见问题

  • 权限问题 : 确保DevEco Studio有足够权限访问SDK目录
  • 路径问题 : macOS路径区分大小写,注意路径准确性
  • 工具缺失 : 如果缺少wget,使用 brew install wget 或修改脚本使用curl

Ubuntu/Linux 配置要点

1. 依赖安装

sudo apt update
sudo apt install build-essential cmake git wget curl

sudo apt install openjdk-11-jdk

2. 环境变量配置

export OHOS_NDK_HOME=/opt/openharmony/sdk
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

source ~/.bashrc

3. 权限设置

chmod +x $OHOS_NDK_HOME/15/native/llvm/bin/*

Windows 配置要点

1. 环境变量设置

# 在系统环境变量中添加

OHOS_NDK_HOME=C:\Users\你的用户名\AppData\Local\OpenHarmony\Sdk JAVA_HOME=C:\Program Files\Java\jdk-11

# 添加到PATH

%OHOS_NDK_HOME%\15\native\llvm\bin

2. 工具链配置

  • 使用Windows版本的OpenHarmony NDK
  • 确保使用正确的路径分隔符(反斜杠)
  • 在PowerShell或CMD中验证环境变量

3. 常见问题

  • 路径长度 : Windows路径长度限制,避免过深的目录结构
  • 权限问题 : 以管理员身份运行DevEco Studio
  • 防火墙 : 确保构建脚本可以访问网络

通用配置检查

1. 环境验证脚本

#!/bin/bash
echo "=== OpenHarmony环境检查 ==="

if [ -z "$OHOS_NDK_HOME" ]; then echo " OHOS_NDK_HOME 未设置" exit 1 else echo " OHOS_NDK_HOME: $OHOS_NDK_HOME" fi

if [ ! -d "$OHOS_NDK_HOME" ]; then echo " SDK 目录不存在: $OHOS_NDK_HOME" exit 1 else echo " SDK 目录存在" fi

TOOLCHAIN="$OHOS_NDK_HOME/15/native/llvm/bin" if [ ! -f "$TOOLCHAIN/clang" ]; then echo " clang 编译器不存在" exit 1 else echo " clang 编译器存在" fi

if [ ! -f "$TOOLCHAIN/clang++" ]; then echo " clang++编译器不存在" exit 1 else echo " clang++编译器存在" fi

echo " 环境检查通过"

2. 构建前检查清单

  • OpenHarmony SDK已正确安装
  • 环境变量已正确设置
  • 工具链文件存在且可执行
  • 网络连接正常(用于下载FFmpeg)
  • 磁盘空间充足(至少10GB)
  • 权限设置正确

3. 故障排除

./start.sh check

./start.sh clean

export OHOS_NDK_HOME=/path/to/your/sdk

$OHOS_NDK_HOME/15/native/llvm/bin/clang --version

ls hmaudiodecoder/third_party/ffmpeg/lib/

./start.sh ffmpeg ./start.sh core ./start.sh app

运行说明

一键启动(推荐)

export OHOS_NDK_HOME=/path/to/OpenHarmony/Sdk

./start.sh

一键启动脚本功能

  • 自动检查环境和项目结构
  • 构建FFmpeg库(智能跳过已构建)
  • 构建核心解码器和NDK接口
  • 构建OpenHarmony应用
  • 提供运行指导

脚本选项

./start.sh
./start.sh cleanall
./start.sh ffmpeg
./start.sh core
./start.sh app
./start.sh check
./start.sh clean
./start.sh help

手动构建(可选)

1. 环境配置

macOS/Linux:

export OHOS_NDK_HOME=/path/to/OpenHarmony/Sdk

echo $OHOS_NDK_HOME

Windows:

# 设置环境变量(在系统设置中或命令行中)

set OHOS_NDK_HOME=C:\path\to\OpenHarmony\Sdk

# 验证环境

echo %OHOS_NDK_HOME%

2. 项目构建

cd hmaudiodecoder

./shell/build_ffmpeg.sh

./shell/build_c_version.sh

3. 应用运行

hvigor build
08-30 02:43:56.629   54945-709429  A00000/testTag                                        I     Ability onCreate
08-30 02:43:56.636   54945-709429  A00000/testTag                                        I     Ability onWindowStageCreate
08-30 02:43:56.638   54945-709429  A00000/testTag                                        I     Ability onForeground
08-30 02:43:56.884   54945-709429  A00000/testTag                                        I     Succeeded in loading the content.
08-30 02:43:56.919   54945-709429  A03d00/JSAPP                                          I      静态链接已完成,使用模拟模块进行测试
08-30 02:43:56.919   54945-709429  A03d00/JSAPP                                          I      真实NAPI模块已编译进应用,等待运行时支持
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     解码器能力: {
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     "supportedFormats": 7,
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     "maxSampleRate": 48000,
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     "minSampleRate": 8000,
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     "maxChannels": 8,
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     "maxBitDepth": 32,
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     "minBitDepth": 8
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     }
08-30 02:43:56.923   54945-709429  A03d00/JSAPP                                          I     解码器初始化成功,ID: 1
08-30 02:43:56.923   54945-709429  A00000/testTag                                        I     WMA解码器初始化成功,配置: {"sampleRate":44100,"channels":2,"bitDepth":16,"format":2}
08-30 02:44:00.235   54945-709429  A00000/testTag                                        I     解码成功: 1024字节, 44100Hz
08-30 02:44:39.775   55201-710772  A00000/testTag                                        I     Ability onCreate
08-30 02:44:39.776   55201-710772  A00000/testTag                                        I     Ability onWindowStageCreate
08-30 02:44:39.777   55201-710772  A00000/testTag                                        I     Ability onForeground
08-30 02:44:39.847   55201-710772  A00000/testTag                                        I     Succeeded in loading the content.
08-30 02:44:39.877   55201-710772  A03d00/JSAPP                                          I      静态链接已完成,使用模拟模块进行测试
08-30 02:44:39.877   55201-710772  A03d00/JSAPP                                          I      真实NAPI模块已编译进应用,等待运行时支持
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     解码器能力: {
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     "supportedFormats": 7,
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     "maxSampleRate": 48000,
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     "minSampleRate": 8000,
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     "maxChannels": 8,
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     "maxBitDepth": 32,
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     "minBitDepth": 8
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     }
08-30 02:44:39.878   55201-710772  A03d00/JSAPP                                          I     解码器初始化成功,ID: 1
08-30 02:44:39.878   55201-710772  A00000/testTag                                        I     WMA解码器初始化成功,配置: {"sampleRate":44100,"channels":2,"bitDepth":16,"format":2}
08-30 02:50:05.012   56903-719116  A00000/testTag                                        I     Ability onCreate
08-30 02:50:05.013   56903-719116  A00000/testTag                                        I     Ability onWindowStageCreate
08-30 02:50:05.014   56903-719116  A00000/testTag                                        I     Ability onForeground
08-30 02:50:05.097   56903-719116  A00000/testTag                                        I     Succeeded in loading the content.
08-30 02:50:05.101   56903-719116  A03d00/JSAPP                                          I      静态链接已完成,使用模拟模块进行测试
08-30 02:50:05.101   56903-719116  A03d00/JSAPP                                          I      真实NAPI模块已编译进应用,等待运行时支持
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     解码器能力: {
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     "supportedFormats": 7,
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     "maxSampleRate": 48000,
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     "minSampleRate": 8000,
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     "maxChannels": 8,
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     "maxBitDepth": 32,
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     "minBitDepth": 8
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     }
08-30 02:50:05.102   56903-719116  A03d00/JSAPP                                          I     解码器初始化成功,ID: 1
08-30 02:50:05.102   56903-719116  A00000/testTag                                        I     WMA解码器初始化成功,配置: {"sampleRate":44100,"channels":2,"bitDepth":16,"format":2}

4. 构建说明

shell/build_c_version.sh 脚本会自动构建以下组件:

  • 核心解码器 : WMA解码器和PCM处理器
  • NDK接口层 : C++包装器,提供C风格API
  • NAPI桥接层 : NAPI包装器,连接ArkTS应用
  • 静态库 : 生成所有必要的静态库文件

5. 功能测试

  1. 启动应用
  2. 点击"测试解码器"按钮
  3. 查看解码器能力信息
  4. 验证音频数据生成
  5. 检查日志输出

测试说明

模拟器测试

  • 功能测试 : 解码器接口调用正常
  • 数据测试 : PCM数据生成正确
  • 格式测试 : 支持多种音频格式
  • 错误处理 : 异常情况处理正常

真机测试(待完成)

  • 部署测试 : 应用安装和启动
  • 性能测试 : 内存和CPU使用情况
  • 兼容性测试 : 不同设备适配
  • 稳定性测试 : 长时间运行测试

测试用例

  1. 解码器能力查询
  2. 输入: 无
  3. 输出: 支持的格式、采样率范围等
  4. 预期: 返回完整的能力信息
  5. 解码器初始化
  6. 输入: 音频配置参数
  7. 输出: 解码器实例ID
  8. 预期: 成功创建解码器实例
  9. 音频数据解码
  10. 输入: WMA音频数据
  11. 输出: PCM音频数据
  12. 预期: 正确解码并输出PCM数据

待优化项

短期优化(1-2周)

  1. 真机验证
  2. 在真机上测试应用
  3. 验证NAPI函数调用
  4. 测试WMA文件解码功能
  5. WMA文件测试
  6. 准备测试用的WMA文件(V1/V2/PRO格式)
  7. 验证解码功能
  8. 测试音频输出质量

中期优化(1个月)

  1. 音频播放集成
  2. 集成OpenHarmony OHAudio框架
  3. 实现PCM数据实时播放
  4. 添加音频流控制(播放/暂停/停止)
  5. 性能优化
  6. 内存使用分析
  7. CPU占用测试
  8. 解码速度基准测试

长期优化(2-3个月)

  1. 完整功能
  2. 支持所有WMA格式
  3. 完整的错误处理
  4. 用户友好的界面
  5. 文档和示例
  6. API文档完善
  7. 使用示例
  8. 部署指南

项目结构

hm-audio-decoder/
├── start.sh
├── hmaudiodecoder/
│   ├── src/
│   │   ├── decoder/
│   │   │   ├── wma_decoder_c.c
│   │   │   ├── wma_decoder_c.h
│   │   │   ├── pcm_processor_c.c
│   │   │   └── pcm_processor_c.h
│   │   ├── ndk/
│   │   │   ├── oh_wma_decoder.cpp
│   │   │   └── oh_wma_decoder.h
│   │   └── napi/
│   │       └── napi_wrapper_c.c
│   ├── entry/
│   │   ├── src/main/
│   │   │   ├── cpp/
│   │   │   └── ets/
│   │   └── libs/ohos/aarch64/
│   ├── third_party/
│   │   ├── ffmpeg/
│   │   ├── ffmpeg-6.1/
│   │   ├── build_ohos/
│   │   └── install_ohos/
│   ├── shell/
│   │   ├── build_ffmpeg.sh
│   │   └── build_c_version.sh
│   ├── build/
│   │   ├── output/
│   │   ├── build_core/
│   │   ├── build_ndk/
│   │   └── build_napi/
│   ├── docs/
│   └── samples/
├── 运行效果/
├── 赛事相关说明/
└── 文档总入口.md

平台相关文件说明

构建脚本(需要根据平台调整)

  • shell/build_ffmpeg.sh - FFmpeg交叉编译脚本
  • shell/build_c_version.sh - C版本构建脚本
  • 这些脚本中的路径分隔符和命令可能需要根据平台调整

编译产物(平台无关)

  • entry/libs/ohos/aarch64/ - 所有编译产物都是ARM64架构
  • 这些文件可以在任何支持OpenHarmony的设备上运行

开发工具(平台相关)

  • macOS: 使用bash脚本,路径使用正斜杠
  • Windows: 需要PowerShell或WSL,路径使用反斜杠
  • Linux: 使用bash脚本,路径使用正斜杠

技术贡献

  • FFmpeg项目 - 提供WMA解码核心库
  • OpenHarmony项目 - 提供平台和开发工具
  • DevEco Studio团队 - 提供开发环境
  • DeepSeek - 提供开发技术路线指引

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

竞赛信息

  • 竞赛名称 : OpenHarmony多媒体编解码竞赛
  • 竞赛官网 : gitee.com/openharmony…
  • 参赛作品 : WMA音频解码器
  • 技术栈 : OpenHarmony + FFmpeg + NDK + NAPI
  • 项目状态 : 基础架构完成,功能测试通过

--- 项目版本 : v1.0 最后更新 : 2025年08月30日 维护者 : hfqf123@126.com 项目 : OpenHarmony WMA 音频解码器

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/4132.html

分享给朋友:

“开源项目:OpenHarmony WMA音频解码器” 的相关文章

CAD运行需要什么样的电脑配置

最近发现很多小伙伴都在问一个问题,学习CAD 需要什么样的电脑配置,游戏本是不是能满足CAD的绘图需求?预算3000-4000元能不能买到能画CAD的笔记本?今天小编跟大家简单探讨一下这个问题,因为小编并不是计算机专业的,所以你对本文章有不同看法,请尽情留言,一同探讨。基本上只要提到学习CAD,用C...

CAD快速测量面积与周长

这篇来教大家如何用CAD梦想画图快速测出规则图形与不规则图形的面积、首先这些图形都需要是封闭图形。操作工具操作系统:Windows10CAD软件:CAD梦想画图步骤1.首先我们画一个规则的矩形与一个用多边形绘制的不规则封闭图形,如下图动画所示:绘制图形2.然后点击功能菜单下的测量选项,系统会弹出“测...

win11怎么将便签固定在桌面?

用电脑办公的人士或多或少会用到自带的便签工具,在使用便签工具的时候,发现便签无法固定在桌面,每次使用时只能重复操作打开非常浪费时间,要是能将便签固定在桌面就可以快速记录备忘内容,也能节省不少时间,现在有很多第三方的便签软件能够固定在电脑桌面上,那么win11电脑可以用哪款便签软件?固定在桌面使用。小...

系统小技巧:恢复开始按钮右键菜单“控制面板”选项

源于强化系统的新式“设置”,淡化传统控制面板的设计思想,微软在新版Windows 10的“开始”按钮右键菜单(或用Win+X组合键激活的菜单)中,去掉了“控制面板”这一命令。但这个命令对一些老用户来说仍特别有用。那么,如何才能恢复这一选项呢?1. 命令+小工具 恢复“控制面板”选项首先创建一个控制面...

office 2010安装及破解方法

2010版,相信很多人都不会感到陌生在校园,学校上课的计算机教室的电脑里几乎都还是在用2010版本的office软件,甚至还有用2007版本的,2010版本比较稳定好用,所以大家比较喜欢这个版本但是在网上下载下来的软件一安装就会附带很多垃圾流氓软件我们会感到很烦躁,所以今天给大家带来一些比较老的好用...

方正兰亭黑系列/汉仪旗黑家族/思源黑体介绍与区别

一.介绍1. 方正兰亭黑系列方正兰亭黑系列字体,是方正字库(北京北大方正电子有限公司)开发的版权字体,出自设计师齐力之手,按字体粗细分10个字重,从细到粗分别为方正兰亭超细黑、方正兰亭纤黑、方正兰亭细黑、方正兰亭黑、方正兰亭准黑、方正兰亭中黑、方正兰亭中粗黑、方正兰亭粗黑、方正兰亭大黑、方正兰亭特黑...