自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-03-06 17:39:53 177

原创 去中心化技术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 421

原创 去中心化技术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 1133 3

原创 ubuntu磁盘清理垃圾文件

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

2025-02-21 20:03:01 410

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

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

2025-02-13 12:40:49 1119

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

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

2025-01-23 18:23:08 1037

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

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

2025-01-23 16:48:19 676

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

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

2025-01-21 12:50:25 883

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

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

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

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

使用。

2025-01-07 18:06:06 1212

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

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

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

原创 ffmpeg filter 滤镜命令

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

2025-01-03 14:44:24 1532

原创 ffmpeg常用命令

【代码】ffmpeg常用命令。

2025-01-03 14:19:05 657

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

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

2024-12-26 13:51:56 2223

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

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

2024-12-23 15:07:37 938

原创 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 1208

原创 播放器点播场景成本优化

本文主要总结 火山引擎视频点播产品负责人赵春波《如何利用播放器节省20%点播成本》文章。

2024-12-11 17:40:08 999

原创 播放器秒开优化2

我们在第一篇主要提到网络延迟优化以及较为细节的播放器参数优化。本篇我们结合业务场景,谈论优化点,首先提到容器格式,其次谈论预加载技术,最后根据场景细节分析优化点,最后谈到给预加载加一层代理缓存节点。

2024-12-11 13:44:08 748

原创 播放器秒开优化

结合公司实力进行优化,优先考虑缓存提速比如dns http这类连接耗时,tcp改进为fast open,cdn gop缓存机制。其次ijkplay源码,流媒体更改为格式固定版本,去除协议探测耗时。其次考虑源码参数,比如播放器缓存队列启动大小,引入池化技术。

2024-12-10 16:46:53 1294

原创 基于 http-flv 的端到端延迟优化

先让ai看看直播互动体验和商业应用场景(电商直播、在线教育等)需要低延迟高延迟会影响互动体验,降低用户参与度推流端延迟:编码、发送缓存等拉流端延迟:边缘节点加载延迟、本地缓存GOP Cache 策略:缓存 N 组 GOP 序列,降低加载延迟观众端本地缓存优化:解决网络抖动,但会增加总视觉延迟通过调整推流、转码、CDN 等配置,实现总视觉延迟 3-6 秒可能存在技术瓶颈,如网络带宽探测、播放流畅性等需要更复杂的算法和策略来平衡延迟和流畅性。

2024-12-10 14:06:26 696

原创 gdb从入门到精通

安装/升级gdb调试基本命令开始调试程序 -g编译 gdb ./exe。

2024-12-06 12:21:01 734

原创 qt环境 C11thread子线程关闭定时器问题

【代码】qt环境 C11thread子线程关闭定时器问题。

2024-12-04 16:08:39 420

原创 C++ 11重点总结2

std::recursive_timed_mutex,带超时的递归互斥量。包装可调用对象(如函数或 lambda 表达式)的类,可以异步执行该对象。std::recursive_mutex,递归互斥量,不带超时功能。std::time_mutex,带超时的独占互斥量,不能递归使用。std::mutex,独占的互斥量,不能递归使用。允许定义接受任意数量和类型参数的模板函数和模板类。折叠表达式(C++17)综合示例简单的线程池。

2024-11-27 19:16:44 797

原创 C++ 11重点总结1

auto_ptrunique_ptrshared_ptrweak_ptr: 自定义删除器。shared_ptrshared_ptrshared_ptrunique_ptrunique_ptrshared_ptr初始化灾难。new T会造成重复类型声明。代码可读性差删除器区别。需要指定删除器类型weak_ptrshared_ptrthisweak_ptr举个例子,监视某内存的释放。weak_ptr在使用前需要检查合法性。智能指针通常是安全的,但在多线程访问同一个shared_ptr对象时需要考虑线程安全性。

2024-11-27 15:45:11 1179

原创 OpenGL 变换

理论总结:向量与标量相加减乘除向量的长度计算向量取反向量单位化向量与向量相加减向量点乘向量叉乘矩阵介绍线性变换和仿射变换行主序和列主序矩阵与标量相加减和数乘计算虽然复杂,但是我们使用计算机计算,调库传参数足以。

2024-11-22 12:55:28 291

原创 OpenGL 纹理

纹理是什么,图片的坐标轴向在 OpenGL 中,纹理(Texture)是一种用于存储和管理二维图像数据的机制。它是一种非常重要的渲染技术,可以大大增强 3D 场景的细节和真实感。纹理的基本概念纹理图像纹理是由一个或多个二维图像组成的,也存在1D or 3D。这些图像包含了丰富的颜色和细节信息。纹理坐标纹理坐标是一个二维坐标系统,用于描述纹理图像上的某个位置。纹理坐标通常用 (s, t) 来表示,取值范围为 [0, 1]。还有r 和xyz相似。纹理映射将纹理图像映射到 3D 模型表面的过程叫做纹理映射。

2024-11-21 10:43:00 1070

原创 OpenGL 渲染

在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。

2024-11-19 22:45:56 926

原创 visual stdio 2022 搭建OpenGL环境

时间:2024年11月19日环境:windows 11 基于visual stdio 2022开发 64位。

2024-11-19 17:14:13 576

原创 播放器开发之ffmpeg 硬件解码方案

把解码当成解压缩文件,压缩算法越高级,得到的文件内存占用量就少。但是cpu使用率就高,硬件解码也是同一道理。硬件编解码器与软件编解码器的对比:硬件编解码器的输出质量通常低于优质的软件编解码器(如x264)。为了达到相同的感知质量,硬件编解码器需要更高的码率。在相同码率下,软件编解码器的输出质量通常更好。性能和效率:硬件编解码器的编解码速度更快,同时也更节省CPU资源。这使其更适合实时视频编解码的应用场景。功能支持:硬件编解码器往往只支持编解码器的部分功能配置,而不是全部。

2024-11-19 16:45:22 1513

原创 WebRTC API分析

本文详细描述常用的webrtc api。

2024-11-13 20:26:14 1291

原创 QT程序打包exe以及坑点描述

尝试运行单个可执行文件!

2024-11-13 20:24:28 422

原创 WebRTC项目一对一视频

信令服务器设计,主要是转发客户端发来的消息到对端,根据类型进行转发。学习资料分享。

2024-11-08 23:37:43 1144

原创 信令服务器设计之websocket基础

对于我们WebRTC项目而言,nodejs主要是实现信令服务器的功能,客户端和服务器端的交互我们选择websocket作 为通信协议,所以该章节的实战以websocket的使用为主。web客户端的websocket和nodejs服务器端的websocket有一定的差别,所以我们分开两部分进行讲解。本章节主要介绍后续信令服务器的协议websocket基本运用,后续对信令服务器进行详细描述学习资料分享。

2024-11-08 23:37:10 1218

原创 视频通话一对一 环境搭建

本文主要描述webrtc开发过程中所需的环境搭建。

2024-11-07 13:54:04 1542

原创 WebRTC基础理论和通话原理

WebRTC(Web RealTime Communication)是 Google于2010以6829万美元从 Global IP Solutions 公司购买,并 于2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让 WebRTC技术成为 H5标准之一。它定义了一组标准化的API,用于在浏览器和移动应用程序中进行实时语音、视频和数据通信,无需安装任何插件或其他软件。

2024-11-07 13:41:07 1170

原创 ubuntu编译ffmpeg

运行环境:vmware ubuntu 20.04时间:2024年10月24日权限问题:由于ubuntu权限问题 建议使用root权限编译,且~是根据用户组来进行定位的。

2024-10-26 20:32:24 992

原创 HLS协议之nginx-hls-多码率测试环境搭建

运行环境:ubuntu 20.04下载nginx。

2024-10-26 20:14:58 581

原创 HLS协议之TS格式分析2

本文主要对ts容器格式做出分析,先阐述ts核心流程,带着目的的学习ts协议内容。

2024-10-26 19:58:26 1517

原创 hls协议基础知识1

HLS (HTTP Live Streaming) 是由 Apple 公司开发的一种自适应比特率流媒体技术协议。它通过将整个视频流拆分成一系列小的 HTTP 文件片段来实现,每个片段描述了整个视频流的一小段时间。在播放过程中,客户端可以从多个不同码率的替代流中选择,从而根据可用带宽自动调整视频质量,确保流畅的播放体验。HLS 的主要特点包括:自适应比特率:HLS 可以根据用户的网络状况自动调整视频的码率和分辨率,确保视频播放的连续性。

2024-10-23 13:13:14 1646

原创 rtmp封包分析之flv格式封包细节

本文主要对flv sequence headern知识点进行补充,以及描述rtmp传输对flv封包流程。

2024-10-21 17:03:39 787

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

TA关注的人

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