- 博客(87)
- 资源 (1)
- 收藏
- 关注
原创 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
898
原创 FFmpeg实现音视频转码
编译 FFmpeg 生成动态库(avformat、avcodec、avutil、swscale、swresample等)通过以上步骤,可构建一个基础的 MP4 转码 SDK,实际开发中需根据需求扩展功能(如多格式支持、硬件加速等)。:转码时需通过av_packet_rescale_ts()调整时间戳,避免音视频不同步。· 音频:设置采样率(如 44100Hz)和声道数(如立体声)· 视频:使用sws_scale()转换像素格式 / 分辨率。:分辨率、比特率、帧率、编码格式等。
2025-08-10 18:00:20
737
原创 rtp、rtcp、rtsp、rtmp协议详解
协议核心功能传输内容底层协议典型场景与其他协议的关系RTP实时媒体数据传输音视频帧UDP 为主视频通话、直播数据传输依赖 RTCP 反馈质量RTCP监控 RTP 传输质量、反馈信息控制指令、统计UDP 为主配合 RTP 使用RTP 的 “控制助手”RTSP媒体流控制(播放 / 暂停等)控制指令TCPIP 摄像头、点播控制媒体数据通过 RTP/RTCP 传输RTMP音视频 + 控制消息传输媒体数据 + 指令TCP直播推流 / 拉流。
2025-07-29 20:39:08
2669
原创 C++面试宝典
在网络编程中,多路复用(I/O Multiplexing) 是一种让单个进程 / 线程高效处理多个 socket 连接的技术。它通过监控多个文件描述符(socket 对应的 fd),当某个 fd 处于 “就绪状态”(可读 / 可写 / 异常)时,再通知进程进行处理,避免了传统多线程 / 多进程模型的资源开销(如线程切换、内存占用)。一、常见的多路复用技术及其优缺点select原理。
2025-07-28 20:59:32
796
原创 音视频中一些常见的知识点
ICE Candidate 通过包含 IP、端口、类型、优先级等信息,使通信双方能够在复杂网络环境(尤其是 NAT 后)中找到可互通的路径,是 P2P 实时通信(如 WebRTC)的核心机制之一。
2025-07-23 19:51:30
1224
原创 iOS上使用WebRTC推拉流的案例
代码中的 STUN 服务器使用了 Google 的公共服务器,生产环境中建议使用自己的 STUN/TURN 服务器。这个示例仅仅提供了基础的推拉流框架,你可以根据实际需求进行扩展和优化。在实际使用中,需要将代码中注释掉的信令发送部分替换为实际的网络请求。这个示例缺少信令服务器的实现,你需要自己搭建一个信令服务器。然后执行 pod install 安装库。核心类oc:WebRTCManager.m。调用OC:ViewController.m。
2025-07-23 15:58:56
913
原创 webrtc整体架构
媒体采集:客户端通过 API(如 getUserMedia)采集本地音视频,经媒体引擎预处理。信令交换:双方通过信令服务器交换 SDP(媒体能力)和 ICE 候选者(网络地址)。P2P 连接:ICE 框架基于候选者建立最优连接(优先直连,失败则用 TURN 中继)。媒体传输:音视频通过 RTP 实时传输,RTCP 动态调整质量;数据通过 RTCDataChannel 传输。渲染播放:接收端解码后渲染音视频,完成实时通信。
2025-07-23 15:34:19
1177
原创 ffmpeg音视频处理大纲
转码:通过解码 + 编码 + 格式转换实现压缩:通过编码器参数控制比特率提取:通过流选择机制丢弃不需要的流截取:通过时间戳控制实现拼接:通过 concat 滤镜或协议实现合并:通过复用器(Muxer)将多个流写入同一容器录屏:通过设备驱动(libavdevice)获取系统音视频输入源码中最核心的逻辑位于ffmpeg.c的transcode()函数,它串联了整个处理流程。理解 FFmpeg 的架构和数据结构是深入掌握其功能的关键。
2025-07-15 19:43:36
776
原创 AAC编解码
AAC 的编解码流程核心是 “基于心理声学的选择性保留”:编码通过频域变换、量化和熵编码去除冗余,解码通过逆过程恢复信号。其高效性源于多种技术的结合(MDCT、TNS、LTP、SBR 等),使其在相同比特率下音质优于 MP3,成为主流音频编码标准之一。
2025-07-15 15:41:24
1150
原创 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
1843
原创 H265相对于H264的不同和优势
H.265 通过更精细的块划分、更多预测模式和优化的熵编码,实现了50% 以上的码率节省,尤其适合高分辨率、低带宽场景。但其编码 / 解码复杂度显著提升,需依赖现代硬件支持。未来,随着 8K 普及和硬件成本下降,H.265 有望逐步取代 H.264 成为主流。
2025-07-15 14:29:45
2215
原创 H264的SVC扩展技术
H.264 SVC 通过分层编码实现质量、空间、时间的三维可伸缩性,使视频流能根据网络条件、终端能力和用户需求动态调整资源分配。这种灵活性显著提升了流媒体的适应性和用户体验,尤其适用于异构网络环境和多终端场景。尽管 SVC 编码复杂度较高,但随着硬件性能提升,其应用正在逐渐普及。
2025-07-14 20:43:16
1145
原创 H264三种码率控制方法
H.264 的码率控制通过调节 QP 和比特分配策略,在带宽、画质和延迟之间寻求平衡。选择哪种方法取决于具体场景:实时应用优先 CBR,存储应用优先 VBR,而 CQP 则用于特殊需求。现代视频系统通常结合多种策略,以适应复杂多变的网络环境和用户需求。
2025-07-14 20:24:55
1222
原创 H264的帧内编码和帧间编码
I 帧:通过丰富的帧内模式提供独立解码能力,但压缩效率最低。P 帧:智能混合帧内 / 帧间模式,平衡了压缩率和错误恢复能力。B 帧:双向预测大幅减少冗余,仅在必要时使用帧内模式,压缩效率最高。这种分层策略使 H.264 在不同场景下都能实现高效编码,广泛应用于视频会议、流媒体和存储等领域。H.264 的帧间编码通过运动估计与补偿、多参考帧和灵活块划分,显著减少了视频序列的时间冗余。这种技术使 H.264 在相同画质下比 H.263 等旧标准节省 50% 以上的码率,成为视频编码领域的主流标准。
2025-07-14 20:11:10
962
原创 H264的两种封装
H.264 视频编码的封装方式主要分为 Annex B 和 AVCC(也称为 ISO Base Media File Format)两种,它们在结构、应用场景和解析方式上有显著差异。
2025-07-14 17:54:03
1057
原创 H264的NALU结构
H.264 的 NALU(Network Abstraction Layer Unit)是视频数据在网络传输或存储中的基本单元,负责将 VCL(Video Coding Layer)生成的压缩数据封装为适合不同网络环境的格式。下面从 NALU 的结构组成、关键字段、类型分类及封装方式等方面详细解析。
2025-07-14 17:36:31
1355
原创 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
888
原创 蓝牙协议分析(1)基本概念
自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
918
原创 iOS常见内存错误码
“DEAD BEEF” 可理解为 “死亡牛肉”,象征指针指向的内存已 “死亡”。:“BAD IDEA” 直译为 “坏主意”,暗示开发者执行了不合理操作。:“FACE FEED” 可联想为 “调试器喂脸”,象征调试阶段的标记。:“CAFE BABE” 谐音 “咖啡馆宝贝”,无实际含义,仅作为标记。:“4 BAD F00D” 可理解为 “内存食物不足”,象征分配失败。:“8 bad f00d” 谐音 “坏食物”,暗示后台任务 “过期”。:“2 BAD IDEA” 强化 “双重坏主意”,暗示启动流程异常。
2025-07-04 10:52:17
1333
原创 Significant Location Change
Significant Location Change(重大位置变化)” 是苹果 iOS 系统中一项用于在应用未主动运行时,监测设备位置显著变化的功能。
2025-06-06 10:52:22
1448
原创 Flutter如何支持原生View
Flutter 的平台视图机制为与原生组件集成提供了强大支持,通过合理选择实现方式(虚拟或混合)和优化策略,可以在保持 Flutter 开发效率的同时,获得接近原生的性能体验。但需注意其限制,避免在关键路径上过度使用,以保证应用的整体流畅性。
2025-06-04 17:09:02
1414
原创 详细讲解Flutter GetX的使用
Get.to():打开新页面。:通过路由名称打开新页面。Get.off():关闭当前页面并打开新页面。:关闭所有页面并打开新页面。Get.back():返回上一个页面。:返回到指定页面。:关闭指定路由页面。:打开具有参数的命名路由。GetX 是一个功能强大、易于上手的 Flutter 框架,通过统一的 API 解决了状态管理、路由和依赖注入三大痛点。其核心优势在于简洁高效和零 context 依赖,特别适合快速开发和中小规模项目。建议开发者在新项目中尝试使用,能显著提升开发体验和代码质量。
2025-06-04 16:42:34
1604
原创 Flutter知识点汇总
Flutter是Google开发的高性能跨平台移动应用开发框架,使用Dart语言编写,通过自绘UI实现跨平台一致性。其核心优势包括:热重载功能可快速预览代码修改,保留应用状态;通过Skia引擎直接渲染UI,性能接近原生;提供丰富的内置组件库。与其他框架相比,Flutter在代码复用率(接近100%)、UI一致性、性能表现等方面具有优势,但需学习Dart语言。热重载实现原理为增量编译和Dart虚拟机更新,大幅提升开发效率,尤其适合UI调试和动画调整,但对某些代码变更仍需要重启应用。Flutter架构使其成为追
2025-06-04 15:10:27
2165
原创 flutter架构解析
微任务用于处理优先级较高、需要尽快执行的任务,而事件队列用于处理响应事件、网络请求等异步任务。在 Dart 中,事件循环会不断地从微任务队列和事件队列中取出任务执行,这就是 Dart 异步编程的核心机制。
2025-05-31 22:40:56
1198
原创 鸿蒙开发11-ARKUI框架
ARKUI 框架通过声明式语法、组件化体系和高效的状态管理,大幅提升了 HarmonyOS 应用的开发效率和性能。开发者可通过 DevEco Studio 快速搭建项目,结合 Flex/Grid 布局、路由导航和动画能力,构建跨设备的响应式应用。同时,合理使用性能优化技巧(如状态监听、懒加载、硬件加速)可进一步提升用户体验。建议从官方文档和 Codelabs 入手,逐步掌握 ARKUI 开发的核心技能。
2025-04-19 12:48:34
1517
原创 Flutter 与原生通信
Flutter 与原生之间的通信主要基于通道机制,包括 MethodChannel、EventChannel 和 BasicMessageChannel。
2025-04-16 17:33:27
1765
1
原创 鸿蒙开发07-interface
interface 接口名称 {属性名: 属性类型;方法名(参数列表): 返回值类型;在上述代码中,Person 接口定义了一个对象应该具有 name(字符串类型)、age(数字类型)属性,以及一个无返回值的 sayHello 方法。
2025-04-14 18:32:57
531
原创 鸿蒙开发05-ArkTS中的箭头函数和闭包并和其他语言比较
闭包是指有权访问另一个函数作用域中变量的函数。即使该外部函数执行完毕,其作用域内的变量也不会被销毁,因为闭包持有对这些变量的引用。
2025-04-14 16:39:42
1272
1
原创 鸿蒙开发04-ArkTS基础(二)
在 ArkTS 里,运算符是用于执行各种操作的符号,可分为算术运算符、比较运算符、逻辑运算符、赋值运算符等。下面为你详细介绍各类运算符。
2025-04-14 15:27:06
855
原创 鸿蒙开发02--ArkTS基础
ArkTS:是一门用于开发鸿蒙应用的编程语言。,例:console.log(‘鸿蒙’, ‘Hello World’)
2025-04-14 14:36:09
1006
原创 鸿蒙开发03-对象、interface、class
对象是一组键值对的集合,键为字符串,值可以是任意类型。可以使用对象字面量来创建对象。// 创建一个简单的对象age: 25,// 对象中的方法${this// 创建一个简单的对象 let person = {name : "Alice" , age : 25 , // 对象中的方法 sayHello : function() {} };// 访问对象属性 console . log(person . name);// 调用对象方法 person . sayHello();`);
2025-04-14 12:05:26
588
原创 鸿蒙开发01
HarmonyOS官网 → 一探究竟 → DevEco Studio 下载地址:https://developer.huawei.com/consumer/cn/,安装。,安装、环境配置时,建议 自定义目录,注意:路径中不要有 中文、特殊字符。
2025-04-14 11:29:20
996
原创 WebRTC解析
首选场景:需要浏览器免插件、超低延迟、强加密的实时交互万级并发直播(需结合 CDN 架构)纯音频广播(HLS 更经济)快速开发:Agora/Sendbird自主可控:Mediasoup/Jitsi移动端:Pion/Flutter-WebRTC通过合理架构设计(如 SFU/MCU 模式选择),WebRTC 可支撑从 1v1 通话到万人直播的全场景需求,是下一代实时通信系统的基石技术。
2025-02-24 11:24:23
3168
原创 RTSP协议
需求推荐协议专业级媒体控制浏览器兼容直播WebRTC 或 HTTP-FLV超低延迟(<500ms) WebRTC 或 SRT大规模直播分发传统设备兼容RTMP建议结合具体业务需求进行协议栈设计,现代系统常采用混合架构(如 RTMP 接入 + HLS 分发)。
2025-02-24 10:41:46
1024
原创 rtmp协议
RTMP(Real-Time Messaging Protocol)是Adobe设计的基于TCP的实时流媒体传输协议,专为低延迟场景(如直播、视频通话)优化。消息结构由基本头(Basic Header)、消息头(Message Header)、扩展时间戳(Extended Timestamp,可选)和消息体(Message Payload)组成。默认端口1935,支持加密变种RTMPS(端口443)基于分块传输(Chunking)机制,支持消息拆解与重组。
2025-02-20 21:56:24
1232
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅