自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (14)
  • 问答 (1)
  • 收藏
  • 关注

原创 视频格式之VP8

VP8 是 Google 推出的,也可封装进 MKV。VP8 基于块的混合视频编码标准,仅支持 YUV 4:2:0 8 比特采样,无 B 帧,仅 I/P 帧。整套码流由独立帧构成,每一帧划分为若干,分区间可并行解码。解码器核心流水线:BoolCoder 熵解码 → 预测模式 / MV 解码 → 残差反量化逆变换 → 像素预测叠加 → 环路滤波输出重建图像。

2026-07-01 13:57:02 363

原创 YUV/RGB格式之间互相转换

如果全部按照第一章的浮点进行计算,计算量将会很大,所以可以采用一种近似计算,加快计算效率。对小数部分,乘以256进行取整,如。JPEG没有 Limited Range,强制 Full Range(0~255),带固定偏移 64/16,无浮点误差,硬件 / 软件都用整数运算。4,420 → 444(先纵向到 422,再横向到 444)步骤2,反向缩放,还原full range色差空间。,不做色彩空间、采样缩放,仅调整字节存储顺序。步骤1,去除电视域偏移,得到缩放前色差。采用全域RGB计算公式,带入。

2026-07-01 10:19:49 374

原创 YUV格式介绍

每 1 个 Y 对应 1 个 U、1 个 V,无压缩,画质无损像素块:2×2,4Y 4U 4V。

2026-06-30 16:03:08 227

原创 视频格式之H265

字段比特数位置含义1bit[0]必须为0(保留位)6bit[1:6]NAL Unit 类型标识6bit[7:12]层ID(用于SVC/MVC)3bit[13:15]时间层ID+1。

2026-06-30 10:05:42 426

原创 视频格式之H264

H.264采用先进的编码技术,如帧内预测、帧间预测、变换编码和熵编码,相比前代标准(如MPEG-2)可节省约50%的码率。分层设计视频编码层(VCL):负责核心编码功能,生成压缩后的视频数据。网络抽象层(NAL):将VCL数据封装为NAL单元(NALU),便于传输和存储。支持多种应用场景支持从低分辨率(如移动设备)到超高清(4K/8K)的视频编码。适应不同网络环境,通过参数集(SPS/PPS)实现灵活配置。字段位数含义取值范围1禁止位0=正常,1=语法错误2参考重要性0~3;

2026-06-29 19:50:41 391

原创 音频之静音检测(VAD)

静音检测主要区分语音帧与静音 / 噪声帧,广泛用于通话降噪、录音分段、直播降噪、语音识别前置处理。

2026-06-29 09:55:22 166

原创 音频混音原理(MIXer)

混音本质就是多路独立音频信号,经过音量、声像、均衡、压缩、效果器处理后,合并为单 / 双 / 多声道输出信号,解决声音冲突、塑造空间层次、平衡响度,最终得到清晰好听的成品音频。

2026-06-28 22:40:49 171

原创 音频格式编解码原理介绍

音频压缩格式一般分为有损压缩和无损压缩,常见的有损压缩格式有MP3、AAC、AC3和OPUS等,常见的无损压缩格式由flac和alac。PCM为原始采样数据,其实也可算作是无损数据。由于原始采样的数据,数据量太大,从而存在存储占用空间太大、网络传输带宽压力过大,无法满足嵌入式小设备播放等问题,因此需要对原始的PCM数据进行压缩。

2026-06-27 17:29:38 341

原创 音频格式解码之ALAC

是苹果公司开发的无损音频编码格式,能够在不损失音频质量的前提下压缩音频数据,通常可实现的压缩率。

2026-06-26 13:59:27 277

原创 音频格式解码之APE

│ APE 文件 ││ 可选 必选 必选 可选 必选 可选 可选 ││▼│ │ FindDescriptor()│───▶│ 版本判断 │ ││ │ ││ ▼ ▼ ││ │ │ ││ ▼ ▼ ││ │ APE_FILE_INFO 结构 │ ││ │ (采样率/声道/时长/比特率/索引表等) │ │。

2026-06-26 13:24:25 306

原创 音频格式解码之flac

│ FLAC 文件结构 ││ Metadata Blocks (可变数量) ││ ├── STREAMINFO (必需,第一个) ││ ├── PADDING (可选) ││ ├── APPLICATION (可选) ││ ├── SEEKTABLE (可选) ││ ├── VORBIS_COMMENT (可选) ││ ├── CUESHEET (可选) ││ └── PICTURE (可选) ││ Audio Frames (多个) │。

2026-06-25 17:57:09 704

原创 音频格式解码之opus

字段位含义Magic64Opus 文件标识"OpusHead"Version8版本 ,固定为18声道数Pre-skip16无预跳过32采样率,这是原始输入(编码前)的采样率,单位为赫兹。这个字段并不是用于播放编码数据的采样率。16增益调整,8标准立体声(无映射表)N时才有,从编码流到输出通道的映射这是输出通道的数量。这可能与编码通道的数量不同,编码通道数量可能会在每个数据包中变化。这个值不能为零。最大允许值取决于通道映射类型,并可能大到 2552,Pre-skip。

2026-06-25 11:37:47 309

原创 音频格式解码之OGG

1:Mono 单声道2:Left / Right 立体声6:L R C LFE BL BR(5.1 环绕)

2026-06-24 22:25:14 345

原创 音频格式解码之EAC3

premixcmpsel、drcsrc、premixcmpscl 前置压缩选择mixdata/mixdata2/mixdata3 多层混音私有数据扩展各声道独立缩放:extpgml/c/r/lss/rss/lfe 缩放位addche 辅助声道缩放(全景声对象声道)spchdat 人声对白增强元数据(语音增益、衰减控制)

2026-06-23 20:16:52 158

原创 音频格式解码之AC3

AC3(Audio Coding 3),杜比第三代音频编码格式,也称杜比数字。.ac3AC3 增强升级版,标准 A/52 Annex E,2005 年标准化,裸流后缀。

2026-06-23 19:08:06 489

原创 音频格式解码之AAC

解码帧数据的时候,分标准模式和ER模式,对比项标准模式ER 模式对象类型解析方式逐元素解析,读取类型标识按固定顺序解析比特流开销每个元素有类型标识(3 bits)无类型标识,开销更低容错能力依赖外部纠错内置错误恢复机制适用场景本地文件播放流媒体、广播1.2.3 标准模式的element_type介绍值元素类型说明0x0SCESingle Channel Element(单声道)0x1CPEChannel Pair Element(立体声对)0x2CCE。

2026-06-22 19:50:34 162

原创 音频格式解码之MP3

标识符 -|- 歌曲标题 -|- 艺术家 -|- 专辑 -|- 发行年份 -|- 注释 -|- 流派3字节 -|- 30字节 -|- 30字节 -|- 30字节 -|- 4字节 -|- 30字节 -|- 1字节占用字节字段名称详细约束规则3标识符 Tag固定TAG,判断是否存在 ID3v1 的唯一标识30歌曲标题 TitleASCII 字符,最多 30 个字符;不足 30 位用\0(0x00)填充,读取时截断空字符30艺术家 Artist。

2026-06-18 14:58:17 411

原创 webrtc peerconnection_client 介绍

/Conductor类是WebRTC示例的核心控制器,继承多个观察者接口。// 它管理PeerConnection生命周期,处理信令、ICE候选及媒体流事件,// 并协调UI与对等连接客户端,实现登录、连接 peers 及消息收发等功能。Conductor 类是 WebRTC C++ 示例程序(peerconnection_client)中的核心控制器。它充当了“大脑”的角色,负责协调底层 WebRTC 引擎、信令服务器通信以及用户界面(UI)之间的交互。

2026-06-17 17:22:24 339

原创 音频格式解码之AIFF与AIFC

标识名称字节说明ID4固定字符“FORM”SIZE4后续字符总数,size+8 = 文件总字符数type4“AIFF” 或者为“AIFC”标识名称字节说明ID4固定字符“COMM”SIZE4该子块后续字节,一般为18channels2声道数4采用帧总数(总样本数/声道数)2采用位数10采样率,IEEE 754 扩展精度浮点数‌表示的采样率(Hz),这是AIFF最独特的解析难点AIFF 使用IEEE 754 位扩展精度浮点数else名称。

2026-06-17 16:21:14 237

原创 音频格式解码之WAV

RIFFchunk结构分为3个子块,chunk id、chunk size和chunk format。2.2子块字节数含义Chunk id4“RIFF”, 所有的wav都固定为这个值。Chunk size4该子块之后文件的总字节数。文件长度 - 8 =Chunk size。4“WAVE”, 所有的wav都固定为这个值。子块字节数含义ID4"fmt ",固定值。Size4。

2026-06-16 17:51:10 974

原创 webrtc peerconnection_server 模块介绍

peerconnection_server是webrtc一个简单的信令服务器示例,它位于 src/examples/peerconnection/server/ 目录下。它的主要目的是配合 peerconnection_client(另一个示例客户端)使用,演示两个 WebRTC 对等端(Peer)如何通过一个中间服务器交换建立连接所需的元数据(SDP 和 ICE Candidates),从而完成 P2P 握手。• 它仅用于学习和测试 WebRTC 的信令流程。

2026-06-16 09:56:42 390

原创 音频格式解码之PCM

PCM(Pulse Code Modulation,脉冲编码调制) 是最基础、无损的原始音频格式,绝大多数音频文件、播放设备的底层数据都是 PCM。PCM是把连续的模拟声波,按固定间隔采样、量化、编码,转换成数字二进制数据,全程无压缩、无损耗。狭义点讲,PCM数据可以理解为麦克风采样后的原始数据,也是扬声器播放的基础数据。PCM未经过压缩,每个点的数据是标准时间点的采样2进制数据。

2026-06-15 19:49:36 561

原创 webrtc RTC_P2P源码解析

文件路径作用定义 ICE Candidate 数据结构定义 Port 接口,所有端口类型的基类实现本地 UDP 端口,生成 Host Candidate实现 STUN 客户端逻辑,生成 Srflx Candidate实现 TURN 客户端逻辑,生成 Relay Candidate核心类:管理 ICE 状态机、配对、排序、Ping 调度代表单个候选者对,执行具体的 STUN Ping/Pong封装 STUN 请求的发送、重传和超时处理创建底层 UDP/TCP Socket 的工厂。

2026-06-15 11:52:46 251

原创 webrtc StunServer源码介绍

public:private:• 底层 UDP Socket,绑定在特定端口(默认 3478)。• 负责接收原始字节流并发送响应字节流。• 在构造函数中传入,析构时销毁。StunServer 是 WebRTC P2P 连接建立过程中的第一个里程碑。1. 客户端向 StunServer 发送 Binding Request。2. StunServer 回复:“你的公网地址是 X.X.X.X:Port”。

2026-06-15 10:28:11 468

原创 webrtc TURN 主要源码介绍

TURN(Traversal Using Relays around NAT)是 WebRTC 中用于在‌直接 P2P 连接失败时‌,通过中继服务器转发音视频数据的协议,是保障复杂网络下通信可用性的“最后防线”。webrtc的TURN 实现严格遵循 RFC 5766 (TURN) 标准,提供了完整的中继、权限控制和通道绑定功能。

2026-06-15 10:18:15 571

原创 webrtc RtpRtcp模块化测试-MockRtpRtcp

MockRtpRtcp 是 WebRTC 测试框架中用于模拟(Mock)RTP/RTCP 模块行为的类。它继承自 RtpRtcp 接口,并使用 Google Mock (gmock) 库将几乎所有虚方法转换为 mock 方法。它通过虚拟化复杂的 RTP/RTCP 协议栈交互,使得上层业务逻辑(如视频编码、拥塞控制、流管理)的单元测试变得简单、快速且可靠。MockRtpRtcp使得开发者在编写单元测试时,可以隔离依赖,精确控制 RTP/RTCP 模块的行为,并验证上层逻辑是否正确调用了预期的接口。

2026-06-15 09:44:58 288

原创 webrtc源码解析概要介绍

webrtc提供的对外二次开发库,包含有7,1. audio- 音频相关的有各种音频编码格式(如g711、ilbc/ops等)、音频帧,音频混音器、回音控制,回音探测和回声消除等对外接口库;2. video-视频内置视频编解码、流解析、帧编码、图像编码、视频帧和视频流编解码等对外接口库;3. transport- 数据传输相关的, 音频接口、视频接口、流媒体接口、码率设置、GCC、网络控制等对外接口;4. crypto- 加解密接口, 帧的加密解密库,加解密库和参数设置库;

2026-06-13 23:26:11 396

原创 WebRTC 完整调用流程(前端纯 JS 实现,最简可运行)

WebRTC,需自行实现信令(WebSocket/Socket.IO 交换 SDP、ICE 候选)。

2026-06-13 11:44:11 237

原创 QUIC 协议新手入门与实战部署指南

很多时候,我们都有过这样的体验:在信号一般的地铁里,或者跨国访问某个资源时,网页加载那个旋转的小圆圈转得让人心烦。明明带宽足够,但首屏内容就是迟迟出不来,甚至稍微切换一下网络,整个连接就断了,得重新刷新。这种“慢”和“不稳”,往往不是服务器不够强,而是底层的传输协议在作祟。传统的 TCP 协议在互联网早期表现卓越,但在如今高延迟、高丢包且网络环境频繁变化的移动场景下,它的握手繁琐、队头阻塞等老毛病逐渐暴露出来。

2026-06-12 16:21:48 312

原创 webrtc pacing 平滑发包模块

编码器输出:I 帧 / 大帧一次性产生几十甚至上百个 RTP 包(突发)。入队 Pacer:所有包进入排队。GCC 给速率:GCC(GoogCc)预估带宽 → 设置(通常是预估带宽的 2–2.5 倍,留余量)。漏桶平滑按匀速发包,把突发拉平。优先级插队:音频 / 重传包优先发送,保证实时性。队列积压处理:队列过长时动态提速,避免延迟累积。

2026-06-12 15:17:01 344

原创 webrtc 拥塞控制GCC 和PCC

GoogCcNetworkController 是 WebRTC 中实现 Google Congestion Control (GCC) 算法的核心类, specifically 针对**发送端带宽估计(Send-Side Bandwidth Estimation, SS-BWE)**进行了优化。它是 NetworkControllerInterface 的主要实现之一,负责协调多个子模块,根据网络反馈(丢包、延迟)动态调整视频/音频的发送码率,以在保证流畅度的同时最大化画质。

2026-06-12 14:10:01 511

原创 webrtc 音频混音介绍

webrtc的音频混音源码都在modules\audio_mixer目录下,最核心的文件为frame_combiner.h/frame_combiner.cc,该文件的类为class FrameCombiner。FrameCombiner是 WebRTC 音频混音器(Audio Mixer)模块中的核心组件,负责将多个输入的音频帧(AudioFrame)**混合(Mix/Sum)**成一个单一的输出音频帧。

2026-06-12 10:24:04 211

原创 WebRTC QoS 实战:从原理到弱网优化

对于追求极致体验的场景,通用的 GCC 算法可能不够用。这时可以考虑引入自定义的拥塞控制逻辑。例如,结合业务场景的特征:在屏幕共享场景中,文字清晰度比帧率更重要,可以采用“恒定性码率 + 高分辨率”策略,容忍一定的延迟;而在游戏直播场景中,低延迟是生命线,可以采用“激进的降码率 + 极小缓冲”策略。自定义算法的核心在于重写带宽估算的反馈函数。你可以基于历史 RTT 趋势和丢包模式,训练一个简单的预测模型,提前预判网络走势,而不是等到丢包发生了才反应。

2026-06-11 11:08:37 349

原创 webrtc QOS-RemoteBitrateEstimator接收端带宽估计-四个实例(2)

与传统的基于包到达间隔(Inter-arrival time)的估算器不同,它利用 RTP 头部扩展中的 24 位绝对发送时间戳,计算包的**单向传播延迟(One-Way Delay)**变化,从而更准确地检测网络拥塞。它的核心目的是动态选择并代理具体的带宽估算器实现。由于 WebRTC 支持多种带宽估算策略(主要是传统的基于到达时间的 REMB 和现代的基于发送时间戳的 TWCC/GBR),这个类负责根据接收到的 RTP 包头部信息,自动判断应该使用哪种估算器,并将所有调用转发给当前选中的实例。

2026-06-11 10:35:21 399

原创 webrtc QOS-RemoteBitrateEstimator接收端带宽估计(1)

RemoteBitrateEstimator为webrtc的接收端带宽估计基类,它的主要职责是通过分析接收到的 RTP 数据包的到达时间、大小和序列号,估算当前网络下行链路的可用带宽,并将该估算值通过 RTCP 反馈包(REMB)发送给发送端,以便发送端调整视频码率。RemoteBitrateEstimator是 WebRTC 接收端拥塞控制的大脑。它不直接发送数据,而是通过“监听” incoming 数据包的特征,推断网络的承载能力,并间接指导发送端“应该发多快”。

2026-06-11 09:39:01 747

原创 webrtc视频Ulpfec介绍

UlpfecGenerator 是 WebRTC 中用于生成 ULPFEC (Uneven Level Protection Forward Error Correction) 冗余包的核心类。它实现了 VideoFecGenerator 接口,主要负责根据视频帧的重要性(关键帧 vs 差值帧)和当前的网络状况,动态计算并生成前向纠错码(FEC),并将这些 FEC 数据封装在 RED (Redundant Audio Data) 格式或直接作为独立的 FEC 包发送,以对抗网络丢包。

2026-06-10 09:30:47 357

原创 webrtc 视频传输Flexfec模块

FlexfecReceiver 和FlexfecSender 是webrtc用于处理视频FEC的接收和发送模块:FlexfecReceiver 是 WebRTC 中用于处理 FlexFEC (Flexible Forward Error Correction) 接收逻辑的类。它的主要职责是接收包含媒体数据或 FlexFEC 冗余数据的 RTP 包,利用纠删码(Erasure Code)算法从冗余包中恢复丢失的媒体包,并将恢复后的包传递给上层模块进行解码和播放。

2026-06-10 09:14:34 391

原创 webrtc 音频模块FEC模块

FecControllerPlrBased 模块是 WebRTC 音频网络适配器(Audio Network Adaptor, ANA)中的一个控制模块。它的核心职责是根据网络丢包率(Packet Loss Rate, PLR)和上行带宽动态决定是否启用前向纠错(FEC)。FEC 是一种通过发送冗余数据来对抗网络丢包的技术,但它会占用额外的带宽。因此,需要在“抗丢包能力”和“带宽消耗”之间取得平衡。这个类就是用来做这个权衡决策的。

2026-06-09 20:01:01 195

原创 WebRTC 视频RTP 优化模块

media_opt_util.h 是WebRTC 能够在复杂网络环境下保持视频流畅性的关键组件之一,它在带宽开销(FEC/NACK 占用额外带宽)和视频质量(抗丢包能力)之间寻找最佳平衡点。media_opt_util.h 定义了 WebRTC 视频编码模块中用于**媒体优化(Media Optimization)的核心逻辑,特别是针对丢包保护策略(Loss Protection)**的选择和参数计算。

2026-06-09 16:11:44 328

原创 webrtc RTP config

RtpConfig 结构体定义了 WebRTC 中单个 RTP 发送流(Send Stream)或接收流的配置参数。它涵盖了从基本的标识符(SSRC)、编解码器信息到高级的差错控制机制(NACK, FEC, RTX)等所有关键设置。RtpConfig 是 WebRTC 媒体流建立的蓝图。它在 VideoSendStream 或 AudioSendStream 创建时被传入,决定了:1. 身份:我是谁(SSRC, MID, CNAME)。

2026-06-09 14:43:37 269

opus 格式标准文档, rfc6716 rfc7845

opus 格式标准文档, rfc6716 rfc7845

2026-06-25

oggvorbid标准文档,ogg

oggvorbid标准文档,ogg

2026-06-24

ac3/eac3格式标准文档, 官方文件

ac3/eac3格式标准文档, 官方文件

2026-06-23

cipd.exe webrtc下载, depot-tools工具

webrtc下载, depot_tools工具, 这个不一定匹配对应的环境,需要在Google网站下载 https://chrome-infra-packages.appspot.com/client?platform=windows-x64&version=git_revision:这个地方要带版本号 https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=git_revision:这个地方要带版本号 https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=latest(最新版本)

2026-04-21

软件工程 详细说明书

一份好的文档说明,能提高开发效率,一份好的文档格式,能让你的开发周期缩短,你还有什么可以拒绝捏。。

2012-03-24

YDT 3966-2021-软件定义光传送网(SDOTN)总体技术要求

YDT 3966-2021-软件定义光传送网(SDOTN)总体技术要求

2022-12-05

webrtc视频客户端 ( 基于duilib)

http://download.csdn.net/detail/qazwsxwtc/9390341 资源的客户端程序 实现了一个视频会话

2016-01-07

webrtc房间流媒体服务端exe

流媒体房间及中转服务器,改程序的客户端会在稍后完善后提交上来

2016-01-05

XCounter.rar

支持c,c++,c#,java,python语言的代码统计工具, 比sourcecounter统计更加准确。这是发布的一个版本,后期会持续优化发布支持更多编程语言。

2019-09-10

c++面试题

在为找工作发愁吗? 在为c++面试发愁吗? 不用慌,这里有你的好帮手

2012-03-20

软件工程 需求分析,概要设计,详细设计等13张模板

总共有13张模板:操作手册,测试分析报告,测试计划,概要设计说明书,开发进度月报,可行性分析研究报告,模块开发卷宗详细设计,数据库设计说明书,用户手册。 绝对超值的开发文档,你的需求。

2012-03-27

hls m3u8切片程序

windows下的hls协议的m3u8运行程序,

2016-01-22

webrtc cng源码

需要自己编译,工程自己生成就行,代码不多。

2015-10-15

libev开源库源码

libev是libevent之后的一个事件驱动的编程框架,其接口和libevent基本类似。官方介绍,其性能比libevent还要高,bug比libevent还少

2016-10-08

windows IOCP文档

IOCP文档,基本详细介绍了IOCP机制

2015-02-01

webrtc android demo 源码

该webrtc android demo为linux编译webrtc后自动生成的demo

2016-03-17

UML建模说明书格式

UML建模说明书格式,遗忘了吧,没有模板吧,这里给你最好的建模说明书模式

2012-03-20

live555 vs工程

可以在windows平台编译的live555工程,主要针对RTSP/RTP

2013-09-18

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

TA关注的人

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