自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 问答 (2)
  • 收藏
  • 关注

原创 whisper.cpp参数调优

音频分段,滑动窗口输入 -》 特征提取 -》 mel频谱特征 -》 多层次Transformer -》 输出 embeddings(向量化)-》 首次解码后state.tokens=prompt。模型加载 -》 音频样本归一化 -》模型参数设置 -》 编码解码 -》 state.tokens文本转化自然语言处理。(如1.8-2.0):对重复更敏感,更容易触发重试,适合处理"优优独播剧场"这类循环输出。温度=0.4,best-of=1: "今天天气很棒"(单次随机采样)

2025-09-16 10:31:45 516

原创 Ubuntu 下搭建 whisper.cpp 本地环境

TEN VAD是由 TEN 团队开发的企业级实时语音活动检测(Voice Activity Detection)系统,于2025年7月正式开源,专门针对低延迟、高精度的语音识别场景设计。核心技术特性帧级检测精度:TEN VAD 采用深度学习架构,实现帧级别的语音活动检测,能够准确识别音频帧中是否包含人类语音并过滤背景噪声。相比传统方法,其检测精度显著提升,在手动标注的测试集上表现优于 WebRTC VAD 和 Silero VAD。超低延迟性能。

2025-09-16 09:30:39 480

原创 WebRTC C++ Native项目编译

学习和掌握WebRTC C++ Native源码编译(Windows客户端)的价值和意义主要体现在以下几个方面:深入理解WebRTC底层架构与实现细节WebRTC是一个复杂的实时通信框架,包含音视频采集、编码、传输、解码、渲染等多个模块。通过编译和阅读其C++ Native源码,开发者能够深入理解这些模块之间是如何协作的,特别是在Windows平台下具体的实现方式,如多线程管理、系统调用封装、网络传输机制等。掌握跨平台实时音视频开发核心技术。

2025-08-24 01:54:32 605

原创 RTCP详解

使用角色报文类型功能说明RTP源发送端SR汇报发送统计、时间戳映射,用于流同步和带宽估计纯接收端(不发包)RR反馈接收质量统计,报告丢包、抖动及延时信息既发送又接收端同时发送SR和RR发送SR报告自己的发送情况,同时发送RR反馈其他流的接收质量在多点会议或视频通话场景中:每个发送方周期性发送SR,通报自身状态;每个纯接收方发送RR,反馈网络接收质量;发送方如果同时也是接收方,则发送SR时携带对应数量的RR报告块,实现双重角色。

2025-08-13 17:45:17 1174

原创 RTP 扩展字段

0xA0 CE → 1010 0000 ID=10,len=0字节,0xCE=1100 1110 → V=1,level=0x4E=78(AudioLevel)0x51 00 00 → 0101 0001 ID=5,len=1字节,数据全0(多为 TransportWideCc 2字节占位)0xBE 0xDE 0x00 0x03 → RFC5285 one-byte扩展头,长度=3个32-bit字=12字节扩展数据。作用:RTP 流标识符,用于区分同一媒体源的不同编码流(如联播)

2025-08-13 17:44:48 1036

原创 国标gb28181 SIP协商详细分析

部分设备在解析SDP时,若遇到额外字段或非标准行会判定为“协议不兼容”,主动结束会话并发 BYE。在客户端(平台)与设备之间双向抓取完整SIP对话(INVITE、200 OK、ACK、BYE),通常是设备端对上级返回的 SDP 或消息头不满足自身解析/会话匹配规则而主动终止会话。时,的确是同一次会话的ID和Tag,否则设备会因“找不到匹配事务”而发 BYE。映射在设备支持列表中,避免设备因不支持编码格式而退出。7下级域发送设备信息,可能一次只发送两个设备的信息。2发送catalog请求,查看设备信息。

2025-07-31 17:29:53 1023

原创 接入海康设备mark全是false解决方案

海康设备发出的rtp数据是mark位字段全是false。海康设备音频格式布局是0XBD + 0XC0,与前两者不同,有携带私有数据字段。使用时间戳机制判断rtp完整帧,完整帧存在同时拥有音频和视频。在解析ps流时需要视频和音频要直接处理。

2025-07-23 18:04:02 1031

原创 国标GB/T 28181协议

在SIP协议基础上,GB28181定义了三个关键的扩展协议:MANSCDP(监控报警联网系统控制描述协议)用于设备控制和信息查询,SDP(会话描述协议)用于媒体协商,MANSRTSP(监控报警联网系统实时流协议)用于历史视频回放控制。预置位命令包括设置预置位(PresetSet)、调用预置位(PresetQuery)、删除预置位等操作,每个预置位通过唯一的ID进行标识,支持最多255个预置位的管理。说明会话发起协议(SIP)呼叫流的图表,详细说明了会话建立、实时传输协议(RTP)媒体流和会话终止的消息。

2025-07-23 18:03:21 1763

原创 SRS流媒体服务器(8)源码分析之rtc/rtmp互相转码详解

RTC服务器配置VHOST RTC配置。

2025-06-29 23:07:16 1328

原创 SRS流媒体服务器之本地测试rtc推流bug

WebRTC推流必须是HTTPS或者localhost:HttpsRequiredError Please use HTTPS or localhost to publish, read。解决: 把ip换成localhost通过。,这是现代浏览器的安全策略要求。

2025-06-29 22:34:08 379

原创 WebRtc ICE 模块分析

ICE(Interactive Connectivity Establishment,交互式连通建设形式)是WebRTC中用于解决NAT穿越问题的核心技术。ICE的基本思想是每个代理都有各种各样的Candidate Transport地址(IP地址和端口的组合),用于与其他代理进行通信。ICE协议解决了现代网络中NAT设备和防火墙带来的连接难题,使浏览器和设备能够直接建立实时媒体传输连接。ICE模式ICE协议中角色分为controlling和controlled两种。

2025-06-17 14:48:56 827

原创 RFC8489-STUN

Karn 算法通过避免使用重传后的 ACK 来更新 RTT 估计,提高了 RTT 估计的准确性。这对于 TCP 的拥塞控制和流量控制非常重要,因为它可以更准确地反映网络的实际延迟情况,从而更好地适应网络条件的变化。

2025-06-06 13:53:27 934

原创 视频存储开源方案

客户端 API 提供了一组全面的作来管理存储桶和对象。类别描述存储桶作创建新存储桶列出所有存储桶检查存储桶是否存在删除存储桶对象作上传对象下载对象获取对象元数据删除对象列出存储桶中的对象复制对象将文件作为对象上传将对象下载到文件删除多个对象Multipart启动分段上传上传对象的一部分完成分段上传中止分段上传特殊作使用 SQL 查询对象内容获取存储桶事件的通知通过组合其他对象来创建对象。

2025-05-26 16:59:28 1217

原创 SRS流媒体服务器之RTC播放环境搭建

srs版本rtc.conf。

2025-05-25 22:38:03 787

原创 SRS流媒体服务器(7)源码分析之拉流篇

从SrsRtmpConn::stream_service_cycle()函数切入,它是RTMP拉流处理的核心入口,负责协调不同类型RTMP连接(播放或推流)的初始化和资源分配,为后续数据交互奠定基础。→ SrsRecvThread::do_cycle() → SrsProtocol::recv_message 协程接收RTMP消息。→ SrsRtmpConn::stream_service_cycle() RTMP连接处理主逻辑,→ SrsRtmpConn::publishing 开始发布流。

2025-05-25 20:10:06 885

原创 SRS流媒体服务器(6)源码分析之推流篇

本文详细介绍了RTMP协议在SRS流媒体服务器中的实现,重点分析了推流过程中的关键代码和流程。首先,文章强调了RTMP基础知识的重要性,并推荐了相关的学习资源。随后,文章深入探讨了SRS服务器中RTMP连接的启动、推流对象的创建、以及FMLE推流的具体实现。接着,文章详细解析了RTMP消息的接收、处理、分发过程,包括音频、视频、聚合消息和元数据的处理逻辑。文章还介绍了SRS中的核心组件如Hub、Bridger和Consumer的作用及其在流媒体分发中的协作方式。最后,文章分享了ATC时间戳处理、jitter

2025-05-19 21:13:43 981

原创 SRS流媒体服务器(5)源码分析之RTMP简单和复杂握手

学习RTMP握手逻辑前,需明确RTMP协议的连接流程及简单握手与复杂握手的区别。RTMP握手过程包括接收客户端发送的C0C1数据,解析C1,生成并发送S0S1S2数据,最后接收C2数据。复杂握手优先尝试,若失败则转为简单握手。复杂握手通过Schema0和Schema1两种方式解析C1,其中Schema0为固定位置验证,Schema1则通过时间戳计算Digest位置,安全性更高。简单握手中C1和S1从第9字节开始为随机数,S2是C1的复制,C2是S1的复制。代码示例展示了复杂握手和简单握手的实现细节,包括数据

2025-05-16 23:10:49 658

原创 SRS流媒体服务器(4)源码分析之RTMP端口监听

RTMP 监听的核心流程是:SrsServer→ 初始化→ 每个管理一个→通过协程循环接受新连接 → 连接通过回调传递给SrsServer处理业务逻辑。下列给出程序开始到rtmp监听整体时序图:学习资料分享。

2025-05-10 12:39:33 905

原创 SRS流媒体服务器(3)视频通话环境搭建和源码分析

本文档介绍如何通过,涵盖环境配置、服务器编译启动、逻辑分析及测试方法。

2025-05-07 20:10:37 896

原创 SRS流媒体服务器(2)配置性能优化

SRS (Simple Realtime Server) 中提供的各种性能优化选项。这些选项允许您针对不同场景优化 SRS,从而在延迟、吞吐量和资源利用率之间取得平衡。有关常规配置的信息,请参阅。1.1 性能提升目标如上图所示,SRS 提供了几类性能优化,可以对其进行配置以匹配您的特定使用。

2025-05-06 21:29:21 1338

原创 SRS流媒体服务器(1)概述和环境搭建

SRS(Simple Realtime Server)是一款高性能、跨平台的流媒体服务器,支持多种协议,包括 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 和 GB28181。本文介绍了 SRS,包括其用途、关键功能、架构和支持协议。SRS 旨在创建一个免费的开源社区,帮助开发人员构建高质量的流媒体和 RTC 平台。它已获得 MIT 许可,使其适用于商业和非商业用途。目标和设计理念SRS 旨在成为一种简单、高效和实时的流媒体服务器,其基本功能侧重于性能和稳定性。

2025-05-05 18:52:22 897

原创 WebRTC 服务器之Janus视频会议插件信令交互

7. 最后 关闭所有的handles并关闭相关的相应的PeerConnections;消耗destroy会话session。创建⼀个或多个handle 以attach到插件(plugin)(例如videoroom、videocall等插件);连接到janus server并创建create⼀个会话session;与创建交互(发送/接收消息,协商PeerConnection);,并传递其依赖项(依赖项可选);,即是包含janus.js;连接服务器 & 创建会话。

2025-05-04 19:08:07 1370

原创 WebRTC 服务器之Janus架构分析

适合刚学习 WebRTC 的场景,简单易实现,但实际应用中因上行带宽占用大、线性资源占用等问题,超过 4 人时问题明显,几乎无人在真实场景中使用。,可以根据终端下行网络状况进行流控,如根据带宽、网络延时情况选择性地丢弃一些媒体数据,以保证通信的连续性,更好地适应不同的网络状况和终端设备。,作为音视频网关,通过解码、再编码可以屏蔽不同编解码设备之间的差异化,满足更多客户的集成需求,提升用户体验和产品竞争力。- 统一画面输出,将多路视频混合成一路,所有参与者看到的是相同的画面,有助于提供一致的客户体验。

2025-05-03 18:24:00 1678

原创 WebRTC 服务器之Janus概述和环境搭建

Janus 是由 Meetecho 开发的通用 WebRTC 服务器,它为构建 WebRTC 应用程序提供了一个模块化框架。服务器目标:实际功能是在浏览器通过 Janus 核心连接的服务器端插件中实现的。这种模块化架构允许占用空间小,同时提供最大的灵活性。主要特点。

2025-05-03 13:55:47 2085

原创 深入理解ffmpeg第四章封装与解封装

书籍基本信息书名: 《深入理解FFmpeg》作者: 刘歧、杜金房、宋韶颍 等出版社: 电子工业出版社出版时间: 2020 年适合读者: FFmpeg 开发者、音视频工程师、对 FFmpeg 源码感兴趣的技术人员。深入理解。

2025-03-06 17:39:53 295

原创 去中心化技术P2P框架代码示例

第七步 接收到p2p连接请求,回发 NTY_PROTO_P2P_CONNECT_ACK 一方切换成p2p消息状态。一个典型的P2P打洞(UDP hole punching)的过程。第四步 p2p连接,把自己id和p2p id发送给服务器。或不p2p 发送消息】这是一个典型的P2P应用架构,类似于早期P2P通信软件的基本实现方式。【第八步 双方切换成p2p消息状态,消息发送。第九步:P2P模式消息接收,进行ack回复】第六步 接收到p2p方ip 进行udp连接。搜索正则过滤:第[^步]*步。

2025-03-03 15:17:06 574

原创 去中心化技术P2P框架

1.双方属于完全锥型NAT (1次 p2p大概率成功)2.双方属于限制类型nat (受限,则通过中继服务器转发,最终p2p)3.两边是对称nat ()4.NAT1为限制锥型NAT,NAT2为对称NAT。总结:步骤3由于是锥形,不会产生记录。所以需要额外记录这次nat ip:port,步骤4 又产生多余的记录。只能靠猜测4是ip:port+1的模式,进行尝试。最后客户机1根据上述两点进行猜测。

2025-02-25 15:27:35 1483 3

原创 ubuntu20 磁盘清理和扩容

【代码】ubuntu磁盘清理垃圾文件。

2025-02-21 20:03:01 499

原创 Qt接入deepseekv3 API 提供openssl 1.1.1g安装包

记得复制api,避免丢失频繁创建。

2025-02-13 12:40:49 1239

原创 深入理解ffmpeg第三章FFmpeg工具使用基础

在使用前,我们应该确定ffmpeg版本是否支持我们的需求!

2025-01-23 18:23:08 1140

原创 深入理解ffmpeg第二章FFmpeg简介

FFmpeg 的许可证FFmpeg 的发布许可证取决于编译时的选项LGPL-2.1(及之后):适用于使用动态链接库的情况,允许闭源使用。GPL-2.0(及之后):适用于使用静态链接库或修改 FFmpeg 源代码的情况,要求开源。开发者可以根据需求选择合适的许可证版本。总结FFmpeg既是一个多媒体工具集(包含 ffmpeg、ffplay、ffprobe),也是一个开发套件(提供丰富的 API 和工具库)。其核心功能包括音视频编解码、格式转换、流媒体处理、色彩与采样率转换等。

2025-01-23 16:48:19 796

原创 深入理解ffmpeg第一章多媒体基础

傅里叶变换将时域信号转换为频域信号,揭示信号的频率组成。时域表示信号随时间的变化,频域表示信号中不同频率的振幅。通过旋转三维视图,可以更直观地观察频谱分布。时域和频域是同一信号的两种表示方式,各有其应用场景。声音的大小变化并不是线性的,即声音的刺激与人真正听到的感觉不是线性的,而是呈对数关系一个对数曲线示意图如图1-6所示,x轴为声音的刺激量,y轴为人的感觉量,即声音的响度(音量)​,声音的响度以分贝(dB)表示频率大小决定听到的内容。人耳对响度和频率的敏感度。

2025-01-21 12:50:25 974

原创 Android NDK开发入门2之适应idm环境

前面已经运行了一个简单的初始程序,现在我们来往初始程序添加类和函数,并成功运行的实验。上述讨论了如何导出不同的动态库,现在如果只想根据x86架构导出单个so库如何实现?1、可执⾏⼆进制⽂件的格式以及⽀持的内容类型,⼆进制⽂件如:程序、共享库...32位Intelx86架构,主要用于模拟器和部分低端设备。学习如何指定动态库导出路劲,并根据动态库切换,实现多种版本调用。64位Intelx86架构,主要用于模拟器和高性能设备。:主要用于模拟器,通过二进制翻译可以运行ARM架构的代码。

2025-01-07 18:06:32 1279 1

原创 Android NDK开发入门3之基本语法

使用。

2025-01-07 18:06:06 1330

原创 Android NDK开发实战之环境搭建篇(so库,Gemini ai)

音视频安卓开发首先涉及到ffmpeg编译打包,先了解动态库之间的cpu架构差异性。然后再搭建可运行的Android 环境。

2025-01-04 11:54:54 1247 2

原创 ffmpeg filter 滤镜命令

FFmpeg filter滤镜是一种强大的功能,可以用于处理和操作视频和音频数据。视频处理调整视频分辨率、宽高比、帧率等属性执行视频剪辑和裁剪操作应用各种视觉特效,如模糊、锐化、色彩校正等合成多个视频源,如画中画、叠加文字等音频处理调整音量、均衡、混合多个音频轨道添加回声、噪音抑制等音频特效执行音频剪辑和拼接格式转换在不同的编解码器和容器格式之间进行转换,实现视频和音频的解复用操作。分析和调试测量视频和音频的质量指标,如 PSNR、SSIM 等获取视频和音频的元数据信息。

2025-01-03 14:44:24 1867

原创 ffmpeg常用命令

【代码】ffmpeg常用命令。

2025-01-03 14:19:05 1168

原创 音视频采集推流时间戳记录方案

落点值 = T = current systime - starttime //当前系统时间 – 起始时间。frameTimeStamp = current systime - start time //第一帧时间戳= 系统时间–起始时间。//如果当前帧的计算时间戳(CurrentFrameTS)与系统时间差值(T)的绝对值大于等于一个半帧间隔,那么我们就应该将当前帧的时间戳直接设置为系统时间差值T。初始化 starttime = systime。

2024-12-26 13:51:56 2427

原创 Easylogging++日志库介绍和崩溃解决方案

Easylogging++ 是一个轻量级、高性能且易于使用的 C++ 日志库。它被设计用于在 C++ 项目中提供可靠、灵活和可定制的日志记录功能。跨平台支持Easylogging++ 可以在 Windows、Linux 和 macOS 等主流操作系统上工作。它具有良好的跨平台兼容性。易于集成和使用Easylogging++ 只需要包含单个头文件就可以在项目中使用。它没有任何外部依赖,易于集成。它提供了直观的 API,使用起来非常简单,开发者可以快速上手。高度可配置。

2024-12-23 15:07:37 1100

原创 boost asio 高性能服务器

这小部分主要就是socket绑定的内容。后续我们关注重点放在发送和接收数据。为什么要提供这些api?其实这里涉及到粘包问题:三个解决方案1.读固定字节 2.读特定符号停止 比如“\r\n” 3.header + body形式 头部放body长度。write_some 可以每次向指定的空间写入固定的字节数。read_until 一直读取,直到读取指定字符结束。read和send recvice/writer 一次阻塞读完,能保证数据不丢。

2024-12-22 23:32:07 1410

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

TA关注的人

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