- 博客(94)
- 资源 (1)
- 收藏
- 关注
原创 移动端架构体系(四):View层的组织与调用方案
规范:文件分区、命名、懒加载/子视图创建方式、布局 API 统一。模式:以 MVC 为底色,按复杂度叠 MVCS / MVVM;VIPER 慎用但要知道适用边界。工具:布局库、路由、埋点/AOP、设计系统组件。协作:大中团队优先代码或声明式 UI;SB 谨慎;跨业务必走 Mediator。哲学:架构服务业务,而不是让业务给架构打工;接口越“傻瓜”、越稳。
2026-04-11 15:59:49
435
原创 移动端架构体系(三):网络层设计方案
健壮的网络层,本质是 在不确定的网络与频繁变更的后端之上,为产品提供稳定、可预测的抽象:离散且可命名的 API、清晰的数据契约与适配边界、可区分的错误语义、可取消的请求与可观测的链路,再加上分级的安全策略。按上表自检与分阶段落地,可以在不同团队规模下保持 可维护性与演进空间 的平衡。
2026-04-07 13:57:59
403
原创 移动端架构体系(二):本地持久化与动态部署
本地持久化的质量,本质是 边界是否清晰、语义是否可证明;动态部署的质量,本质是 把"可变"限制在商店与风险模型允许的层。
2026-04-06 21:43:21
423
原创 移动端架构体系(一):组件化
Action(公共,可被远程映射):open_detail(无 native_,允许经合法 Deep Link 打开详情)Action(仅本地):native_present_share_sheet(分享当前页截图等,禁止出现在对外 URL 映射里)cover_image:可选,仅本地传递(非常规对象)
2026-03-26 21:07:31
507
原创 大型工程跨全平台实践总结
在终端App开发的过程中往往面临着Android、iOS、Mac、PC、web 5端,现在还有鸿蒙端,大型工程千万行级别的代码量让每一次需求迭代都需要多端同步开发、发版,这对研发、产品、设计、测试全流程都是巨大挑战。不少超大型工程在初期架构设计中,会将底层网络、数据库及大部分业务逻辑抽离至 C++ 层实现多平台复用,但 UI 层仍由各平台独立开发,移动端与电脑端即便实现相同界面布局,也需要编写多台套逻辑代码,UI 跨平台成为行业普遍的核心痛点。业内曾尝试过H5、小程序等UI跨平台方案,但受限于性能或者体
2026-03-15 22:26:41
633
原创 SwiftUI语法大纲
1. 基础形状(Shape)Circle()Capsule()2. 自定义形状(实现 Shape 协议)path.move(to: CGPoint(x: rect.midX, y: rect.minY)) // 顶部path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY)) // 左下角path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY)) // 右下角。
2025-08-27 18:07:58
956
原创 FFmpeg实现音视频转码
编译 FFmpeg 生成动态库(avformat、avcodec、avutil、swscale、swresample等)通过以上步骤,可构建一个基础的 MP4 转码 SDK,实际开发中需根据需求扩展功能(如多格式支持、硬件加速等)。:转码时需通过av_packet_rescale_ts()调整时间戳,避免音视频不同步。· 音频:设置采样率(如 44100Hz)和声道数(如立体声)· 视频:使用sws_scale()转换像素格式 / 分辨率。:分辨率、比特率、帧率、编码格式等。
2025-08-10 18:00:20
838
原创 rtp、rtcp、rtsp、rtmp协议详解
协议核心功能传输内容底层协议典型场景与其他协议的关系RTP实时媒体数据传输音视频帧UDP 为主视频通话、直播数据传输依赖 RTCP 反馈质量RTCP监控 RTP 传输质量、反馈信息控制指令、统计UDP 为主配合 RTP 使用RTP 的 “控制助手”RTSP媒体流控制(播放 / 暂停等)控制指令TCPIP 摄像头、点播控制媒体数据通过 RTP/RTCP 传输RTMP音视频 + 控制消息传输媒体数据 + 指令TCP直播推流 / 拉流。
2025-07-29 20:39:08
3303
原创 C++面试宝典
在网络编程中,多路复用(I/O Multiplexing) 是一种让单个进程 / 线程高效处理多个 socket 连接的技术。它通过监控多个文件描述符(socket 对应的 fd),当某个 fd 处于 “就绪状态”(可读 / 可写 / 异常)时,再通知进程进行处理,避免了传统多线程 / 多进程模型的资源开销(如线程切换、内存占用)。一、常见的多路复用技术及其优缺点select原理。
2025-07-28 20:59:32
831
原创 音视频中一些常见的知识点
ICE Candidate 通过包含 IP、端口、类型、优先级等信息,使通信双方能够在复杂网络环境(尤其是 NAT 后)中找到可互通的路径,是 P2P 实时通信(如 WebRTC)的核心机制之一。
2025-07-23 19:51:30
1282
原创 iOS上使用WebRTC推拉流的案例
代码中的 STUN 服务器使用了 Google 的公共服务器,生产环境中建议使用自己的 STUN/TURN 服务器。这个示例仅仅提供了基础的推拉流框架,你可以根据实际需求进行扩展和优化。在实际使用中,需要将代码中注释掉的信令发送部分替换为实际的网络请求。这个示例缺少信令服务器的实现,你需要自己搭建一个信令服务器。然后执行 pod install 安装库。核心类oc:WebRTCManager.m。调用OC:ViewController.m。
2025-07-23 15:58:56
949
原创 webrtc整体架构
媒体采集:客户端通过 API(如 getUserMedia)采集本地音视频,经媒体引擎预处理。信令交换:双方通过信令服务器交换 SDP(媒体能力)和 ICE 候选者(网络地址)。P2P 连接:ICE 框架基于候选者建立最优连接(优先直连,失败则用 TURN 中继)。媒体传输:音视频通过 RTP 实时传输,RTCP 动态调整质量;数据通过 RTCDataChannel 传输。渲染播放:接收端解码后渲染音视频,完成实时通信。
2025-07-23 15:34:19
1259
原创 ffmpeg音视频处理大纲
转码:通过解码 + 编码 + 格式转换实现压缩:通过编码器参数控制比特率提取:通过流选择机制丢弃不需要的流截取:通过时间戳控制实现拼接:通过 concat 滤镜或协议实现合并:通过复用器(Muxer)将多个流写入同一容器录屏:通过设备驱动(libavdevice)获取系统音视频输入源码中最核心的逻辑位于ffmpeg.c的transcode()函数,它串联了整个处理流程。理解 FFmpeg 的架构和数据结构是深入掌握其功能的关键。
2025-07-15 19:43:36
825
原创 AAC编解码
AAC 的编解码流程核心是 “基于心理声学的选择性保留”:编码通过频域变换、量化和熵编码去除冗余,解码通过逆过程恢复信号。其高效性源于多种技术的结合(MDCT、TNS、LTP、SBR 等),使其在相同比特率下音质优于 MP3,成为主流音频编码标准之一。
2025-07-15 15:41:24
1286
原创 H265和H264的编解码流程
H.264 和 H.265 的编解码流程均遵循 “预测→残差处理→熵编码” 的逻辑,核心是去除空间、时间和统计冗余。H.265 通过更灵活的单元划分(CTU/CU/PU/TU)、更多预测模式、更高精度的运动补偿及增强的环路滤波,实现了比 H.264 更高的压缩效率,更适合高分辨率视频;但更高的复杂度也导致其编解码成本更高(硬件支持要求高)。目前,H.264 仍广泛用于中低分辨率场景(如 1080P 流媒体),而 H.265 逐渐成为 4K/8K 视频的主流标准。
2025-07-15 15:12:31
2100
原创 H265相对于H264的不同和优势
H.265 通过更精细的块划分、更多预测模式和优化的熵编码,实现了50% 以上的码率节省,尤其适合高分辨率、低带宽场景。但其编码 / 解码复杂度显著提升,需依赖现代硬件支持。未来,随着 8K 普及和硬件成本下降,H.265 有望逐步取代 H.264 成为主流。
2025-07-15 14:29:45
2840
原创 H264的SVC扩展技术
H.264 SVC 通过分层编码实现质量、空间、时间的三维可伸缩性,使视频流能根据网络条件、终端能力和用户需求动态调整资源分配。这种灵活性显著提升了流媒体的适应性和用户体验,尤其适用于异构网络环境和多终端场景。尽管 SVC 编码复杂度较高,但随着硬件性能提升,其应用正在逐渐普及。
2025-07-14 20:43:16
1222
原创 H264三种码率控制方法
H.264 的码率控制通过调节 QP 和比特分配策略,在带宽、画质和延迟之间寻求平衡。选择哪种方法取决于具体场景:实时应用优先 CBR,存储应用优先 VBR,而 CQP 则用于特殊需求。现代视频系统通常结合多种策略,以适应复杂多变的网络环境和用户需求。
2025-07-14 20:24:55
1391
原创 H264的帧内编码和帧间编码
I 帧:通过丰富的帧内模式提供独立解码能力,但压缩效率最低。P 帧:智能混合帧内 / 帧间模式,平衡了压缩率和错误恢复能力。B 帧:双向预测大幅减少冗余,仅在必要时使用帧内模式,压缩效率最高。这种分层策略使 H.264 在不同场景下都能实现高效编码,广泛应用于视频会议、流媒体和存储等领域。H.264 的帧间编码通过运动估计与补偿、多参考帧和灵活块划分,显著减少了视频序列的时间冗余。这种技术使 H.264 在相同画质下比 H.263 等旧标准节省 50% 以上的码率,成为视频编码领域的主流标准。
2025-07-14 20:11:10
1055
原创 H264的两种封装
H.264 视频编码的封装方式主要分为 Annex B 和 AVCC(也称为 ISO Base Media File Format)两种,它们在结构、应用场景和解析方式上有显著差异。
2025-07-14 17:54:03
1165
原创 H264的NALU结构
H.264 的 NALU(Network Abstraction Layer Unit)是视频数据在网络传输或存储中的基本单元,负责将 VCL(Video Coding Layer)生成的压缩数据封装为适合不同网络环境的格式。下面从 NALU 的结构组成、关键字段、类型分类及封装方式等方面详细解析。
2025-07-14 17:36:31
1508
原创 H264编码结构和解析
NAL 的核心作用是将 VCL 生成的压缩数据封装为适合网络传输的格式,解决不同网络(如 IP、广播、存储)的适配问题。其基本单元是NAL 单元(NALU,NAL Unit)。(1)NALU 的结构[NAL Header (1字节)] + [RBSP (可变长度)]NAL Header(头部)forbidden_zero_bit(1 位):禁止位,通常为 0;若为 1,表示该 NALU 存在严重错误,需丢弃。nal_ref_idc(2 位)
2025-07-14 17:09:38
973
原创 蓝牙协议分析(一):基本概念
自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个版本的修订后,发展为当前的状况。说实话,如今的蓝牙4.1,简直是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础,在功耗和传输速率之间左右为难。蜗蜗以为,这并不是优雅的设计。不过没关系,存在即合理。
2025-07-11 13:54:18
960
原创 iOS常见内存错误码
“DEAD BEEF” 可理解为 “死亡牛肉”,象征指针指向的内存已 “死亡”。:“BAD IDEA” 直译为 “坏主意”,暗示开发者执行了不合理操作。:“FACE FEED” 可联想为 “调试器喂脸”,象征调试阶段的标记。:“CAFE BABE” 谐音 “咖啡馆宝贝”,无实际含义,仅作为标记。:“4 BAD F00D” 可理解为 “内存食物不足”,象征分配失败。:“8 bad f00d” 谐音 “坏食物”,暗示后台任务 “过期”。:“2 BAD IDEA” 强化 “双重坏主意”,暗示启动流程异常。
2025-07-04 10:52:17
1467
原创 Significant Location Change
Significant Location Change(重大位置变化)” 是苹果 iOS 系统中一项用于在应用未主动运行时,监测设备位置显著变化的功能。
2025-06-06 10:52:22
1554
原创 Flutter如何支持原生View
Flutter 的平台视图机制为与原生组件集成提供了强大支持,通过合理选择实现方式(虚拟或混合)和优化策略,可以在保持 Flutter 开发效率的同时,获得接近原生的性能体验。但需注意其限制,避免在关键路径上过度使用,以保证应用的整体流畅性。
2025-06-04 17:09:02
1463
原创 详细讲解Flutter GetX的使用
Get.to():打开新页面。:通过路由名称打开新页面。Get.off():关闭当前页面并打开新页面。:关闭所有页面并打开新页面。Get.back():返回上一个页面。:返回到指定页面。:关闭指定路由页面。:打开具有参数的命名路由。GetX 是一个功能强大、易于上手的 Flutter 框架,通过统一的 API 解决了状态管理、路由和依赖注入三大痛点。其核心优势在于简洁高效和零 context 依赖,特别适合快速开发和中小规模项目。建议开发者在新项目中尝试使用,能显著提升开发体验和代码质量。
2025-06-04 16:42:34
1684
原创 Flutter知识点汇总
Flutter是Google开发的高性能跨平台移动应用开发框架,使用Dart语言编写,通过自绘UI实现跨平台一致性。其核心优势包括:热重载功能可快速预览代码修改,保留应用状态;通过Skia引擎直接渲染UI,性能接近原生;提供丰富的内置组件库。与其他框架相比,Flutter在代码复用率(接近100%)、UI一致性、性能表现等方面具有优势,但需学习Dart语言。热重载实现原理为增量编译和Dart虚拟机更新,大幅提升开发效率,尤其适合UI调试和动画调整,但对某些代码变更仍需要重启应用。Flutter架构使其成为追
2025-06-04 15:10:27
2302
原创 flutter架构解析
微任务用于处理优先级较高、需要尽快执行的任务,而事件队列用于处理响应事件、网络请求等异步任务。在 Dart 中,事件循环会不断地从微任务队列和事件队列中取出任务执行,这就是 Dart 异步编程的核心机制。
2025-05-31 22:40:56
1257
原创 鸿蒙开发11-ARKUI框架
ARKUI 框架通过声明式语法、组件化体系和高效的状态管理,大幅提升了 HarmonyOS 应用的开发效率和性能。开发者可通过 DevEco Studio 快速搭建项目,结合 Flex/Grid 布局、路由导航和动画能力,构建跨设备的响应式应用。同时,合理使用性能优化技巧(如状态监听、懒加载、硬件加速)可进一步提升用户体验。建议从官方文档和 Codelabs 入手,逐步掌握 ARKUI 开发的核心技能。
2025-04-19 12:48:34
1647
原创 Flutter 与原生通信
Flutter 与原生之间的通信主要基于通道机制,包括 MethodChannel、EventChannel 和 BasicMessageChannel。
2025-04-16 17:33:27
1816
1
原创 鸿蒙开发07-interface
interface 接口名称 {属性名: 属性类型;方法名(参数列表): 返回值类型;在上述代码中,Person 接口定义了一个对象应该具有 name(字符串类型)、age(数字类型)属性,以及一个无返回值的 sayHello 方法。
2025-04-14 18:32:57
571
原创 鸿蒙开发05-ArkTS中的箭头函数和闭包并和其他语言比较
闭包是指有权访问另一个函数作用域中变量的函数。即使该外部函数执行完毕,其作用域内的变量也不会被销毁,因为闭包持有对这些变量的引用。
2025-04-14 16:39:42
1343
1
移动端应用架构-组件化概要
2026-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅