自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lenn Louis' Scribe

电气工程半道出家的计算机编程爱好者,持续输出C++和Linux开发相关内容。

  • 博客(223)
  • 收藏
  • 关注

原创 ModernC++-constexpr

(技术上来讲,它们的值在翻译期(translation)决议,所谓翻译不仅仅包含是编译(compilation)也包含链接(linking),除非你准备写C++的编译器和链接器,否则这些对你不会造成影响,所以你编程时无需担心,把这些。)它也意味着以前相对严格的编译期完成的工作和运行时完成的工作的界限变得模糊,一些传统上在运行时的计算过程能并入编译时。如果你想编译器保证一个变量有一个值,这个值可以放到那些需要编译期常量(compile-time constants)的上下文的地方,你需要的工具是。

2025-10-20 14:43:29 935

原创 FFmpeg+QT输出音频

使用SDL作为音视频输出。

2025-10-20 14:38:44 363

原创 FFmpeg暂停、逐帧和音量

⾳频回调接⼝请求数据帧时直接填0读取数据是否要停⽌?⾳视频包缓存队列满时进⼊休眠。暂停->继续 :时钟的恢复暂停:toggle_pause()暂停/继续切换状态。

2025-09-30 14:09:14 418

原创 FLV解码器FlvParser的实现

这里可以看到 flv 的格式,本内容只介绍 flv 解析部分,其他就不介绍了。

2025-09-30 14:04:44 492

原创 FFmpeg-vflip滤镜使用

这段代码创建并配置了一个vflip(垂直翻转)滤镜,用于将视频画面进行垂直方向的翻转。下面我将全面解析这个滤镜的功能和用法。

2025-09-28 22:25:54 875

原创 Creating a Qemu Windows 10 VM on Linux

【代码】Creating a Qemu Windows 10 VM on Linux。

2025-09-28 22:24:47 831

原创 FFmpeg过滤器实战:混音

这个 Demo 展示了如何使用 FFmpeg 的过滤器系统来做混音。比如我们在做直播的时候如何将麦克风输入音频和 BGM 合成在一起,以及一些细节的操作。和水印 Demo 不同的是,这里我们使用了面相对象的思想进行了封装。

2025-09-28 22:21:56 475

原创 FFmpeg过滤器实战:水印处理

这个 Demo 展示了如何使用 FFmpeg 的滤镜系统对视频进行处理,实现将视频上半部分倒置并与下半部分叠加的效果。下面我将详细解析这个代码。

2025-09-28 22:21:19 450

原创 FFmpeg过滤器框架分析

重点完整结构体/**/**/**/**这个结构体里定义了很多回调函数,在使用的过程中只要实现回调函数赋值即可。重点// overlay// 定义了filter本身的能力,拥有的pads,回调函数接口定义/**/**/**/**/**/***/ /**/*** failure./**/**/*** code./**/**} AVFilter;/**

2025-09-25 09:52:14 831

原创 split过滤器使用

split滤镜是FFmpeg中一个非常实用的滤镜,它的主要功能是将输入流复制成多个相同的输出流。下面我将详细解释这段代码及其工作原理。

2025-09-25 09:51:33 1266

原创 FFmpeg过滤器之crop

这段代码创建并配置了一个crop(裁剪)滤镜,用于从视频帧中提取特定区域。下面我将全面解析这个滤镜的功能和用法。

2025-09-24 09:28:50 800

原创 H264编码格式原理详解

H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待审核。在 ITU 的标准里称为 H.264,在 MPEG 的标准里 MPEG-4的一个组成部分 MPEG-4 Part 10,又叫 Advanced Video Codec,因此常常被称为 MPEG-4 AVC 或者直接叫 AVC。

2025-09-24 09:26:53 1281

原创 FFmpeg&Linux开发环境开荒

各位朋友,在上一篇中我们完成了 Mac 平台上 FFmpeg 的编译安装,这一节我们分享 Linux 上的 FFmpeg 编译安装(以 Ubuntu 为例),如果需要其他发行版的文档可以私信我。为了方便后续的实战代码编写,我们会保证不同平台上安装目录的名字一样。老规矩,代码传送门在文末!

2025-09-23 09:33:12 1065

原创 SDL渲染输出YUV视频流

想要渲染输出YUV的视频裸流,我们首先需要了解YUV的存储格式。下面我简单说一下,我们还是把主要精力放在代码实战上:其实YUV是一种颜色编码系统,与RGB不同,他把图像数据分成Y(亮度),U(色彩饱和度),V(色调)。那么这里所说的YUV并不是颜色编码系统。在音视频中说的YUV一般默认是YUVp(YUV Planar)即YUV的平面存储格式。YUV 420色度采样方式:指 UV 分量在水平和垂直方向均减半采样(每 4 个 Y 共享 1 组 UV)通用概念:不限定数据排列方式,仅描述采样规则。

2025-09-23 09:31:17 811

原创 LazyVim配置Rust

这样配置后,你应该能在LazyVim中获得完整的Rust开发体验,包括代码补全、格式化、调试等功能。LazyVim默认使用。

2025-09-19 14:00:53 317

原创 LazyVim配置C++

要在LazyVim中配置基于CMake的代码补全,你需要设置一个能够理解CMake项目的代码补全引擎。

2025-09-19 13:59:45 331

原创 Bpftrace cmd & examples

这里统计进程号为18644的进程执行内核函数sys_read()的返回值,并打印出直方图。根据进程名,以直方图的形式显示read()调用花费的时间,时间单位为纳秒。Maps会在bpftrace结束(如按Ctrl-C)时自动打印出来。在 Linux 中运行。支持静态和动态追踪内核和用户空间的进程。“bpftrace -l” 列出所有探针,并且可以添加搜索项。是“-”的时候,bpftrace 会从标准输入读取程序。使用内核动态跟踪技术显示read()返回字节数的直方图。按Ctrl-C后打印进程的系统调用计数。

2025-09-18 15:46:50 718

原创 ROS2&C++核心基础

*话题:**ROS2中节点间进行异步数据传输的命名通道**作用:**作为数据传递的桥梁,连接发布者和订阅者**特点:**基于发布-订阅模式,支持一对多、多对一、多对多通信fill:#333;color:#333;color:#333;fill:none;客户端发送请求接收响应继续执行首先创建自定义服务接口:int64 aint64 b---int64 sumpublic:private:) {return 0;

2025-09-18 15:44:23 1048

原创 mp4格式分析

mp4文件格式又被称为 MPEG-4 Part 14,出自 MPEG-4标准第14部分。他是一种多媒体格式工具,广泛用于包装视频和音频数据流、海报、字幕和元数据等。(顺便⼀提,⽬前流⾏的视频编码格式AVC/H264定义在MPEG-4 Part 10)mp4文件格式基于 Apple 公司的 QuickTime 格式,因此,QuickTime File Format Specification 也可以作为我们研究 mp4的重要参考。

2025-09-17 10:13:56 1434

原创 ffmpeg解复用aac

[AAC ADTS格式分析]]目标:从 MP4 格式的视频格式中抽取 aac 音频单独保存。

2025-09-17 10:12:30 537

原创 LazyVim剪贴

在。

2025-09-16 19:00:34 481

原创 在LazyVim中配置Rust开发环境

这样配置后,你应该能在LazyVim中获得完整的Rust开发体验,包括代码补全、格式化、调试等功能。LazyVim默认使用。

2025-09-16 18:59:12 430

原创 FLV编码格式

FLV (Flash Video) 是 Adobe 公司推出的一种流媒体格式,由于其封装后的视频文件体积小、封装简单等特点。非常适合互联网上使用。目前主流的视频网站基本都支持 FLV。采用 FLV 格式封装的文件后缀为.flv。FLV 封装格式是由一个头文件(file header)和文件体(file body)组成。其中,FLV body 由一对对的(Previous Tag Size + Tag)组成。Previous Tag Size 字段排列在 Tag 之前,占用4个字节。

2025-09-16 09:26:53 1205

原创 H264编码分析

H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待审核。在 ITU 的标准里称为 H.264,在 MPEG 的标准里 MPEG-4的一个组成部分 MPEG-4 Part 10,又叫 Advanced Video Codec,因此常常被称为 MPEG-4 AVC 或者直接叫 AVC。

2025-09-16 09:26:04 823

原创 LazyVim设置tab

在 LazyVim(Neovim)中,将 Tab 默认宽度从 2 格改为 4 格,需要修改 Neovim 的缩进设置。

2025-09-15 16:46:20 312

原创 LazyVim行跳转

(基于 Neovim)中,跳转到指定行号或使用相对行号(relative line numbers)非常方便。相对行号(Relative Numbers)可以让你更方便地使用。配置完成后,你可以更高效地在代码中导航!

2025-09-15 16:45:39 451

原创 ffplay数据读取线程

从ffplay框架分析我们可以看到,ffplay有专⻔的线程read_thread()读取数据,且在调⽤av_read_frame读取数据包之前需要做例如打开⽂件,查找配置解码器,初始化⾳视频输出等准备阶段,主要包括三⼤步骤:准备⼯作For循环读取数据退出线程处理准备工作创建上下⽂ic->打开媒体⽂件读取媒体⽂件的包获取更多的stream信息检测是否指定播放起始时间,如果指定时间则seek到指定位置avformat_seek_file。

2025-09-14 22:43:22 825

原创 ffplay数据结构分析

为避免内存泄漏,在 av_frame_move_ref(dst, src) 之前应先调⽤ av_frame_unref(dst) ,这⾥没有调⽤,是因为frame_queue在删除⼀个节点时,已经释放了frame及frame中的AVBuffer。rindex表示上⼀次播放的帧lastvp,本次调⽤ video_refresh() 中,lastvp会被删除,rindex会加 1,即是当调⽤frame_queue_next删除的是lastvp,⽽不是当前的vp,当前的vp转为lastvp。

2025-09-14 22:42:40 622

原创 AAC ADTS格式分析

有的时候当你编码AAC裸流的时候,会遇到写出来的AAC文件不能在PC和手机上播放的问题,很大可能是AAC文件的每一帧缺少ADTS头信息文件的包装拼接。简单来说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。这两种header的格式也是不同的,目前一般编码后的和抽取出的都是ADTS格式的音频流。标准定义的有损音频压缩格式,由Fraunhofer发展,Dolby,Sony和AT&T是主要的贡献者。每一帧ADTS头文件都包含了音频的采样率,声道,帧长度等信息,这样解码器才能解析读取。

2025-09-13 22:33:31 994

原创 FFmpeg合成mp4

本章主要介绍如何使用FFmpeg来将一个音频文件和一个视频文件合成一个MP4文件,以及在这个过程中我们如何对编码过程进行封装以及sample_rate 重采样的过程(由于提供的音频文件的编码类型为S16,所以我们需要转化为MP4支持的FLTP浮点类型)。

2025-09-13 22:31:54 670

原创 YUV 和 YUVp

YUV 文件是一种存储视频原始数据的格式,它不进行压缩(或仅轻度压缩),主要用于专业视频处理、图像分析、计算机视觉等领域。1. YUV 是什么?YUV是一种颜色编码系统,与常见的 RGB(红绿蓝)不同,它将图像数据分成:Y(亮度/Luma):决定图像的明暗信息(黑白部分)。U & V(色度/Chroma):存储颜色信息(色彩饱和度、色调)。这种分离设计最初是为了兼容黑白与彩色电视信号,现在广泛用于视频压缩(如 H.264、H.265)和数字视频处理。2. YUV 文件的特点原始数据。

2025-09-12 00:25:07 1204

原创 ffplay音视频解码线程

数据来源:从read_thread线程⽽来数据处理:在video_thread进⾏解码,具体调⽤get_video_frame数据出⼝:在video_refresh读取frame进⾏显示。

2025-09-12 00:22:23 935

原创 ffplay音频重采样

⾳频重采样在 audio_decode_frame() 中实现, audio_decode_frame() 就是从⾳频frame队列中取出⼀个frame,按指定格式经过重采样后输出(解码不是在该函数进⾏)。defined。

2025-09-12 00:21:31 210

原创 ffplay音频输出

总览总览ffplay的⾳频输出通过SDL实现。SDL⾳频回调函数读取数据,这个时候我们就要从FrameQueue读取frame填充回调函数提供的buffer空间。audio的输出在SDL下是被动的,即在开启SDL⾳频后,当SDL需要数据输出时则通过回调函数的⽅式告诉应⽤者需要传⼊多少数据,但这⾥存在⼀些问题:ffmpeg解码⼀个AVPacket的⾳频到AVFrame后,在AVFrame中存储的⾳频数据⼤⼩与SDL回调所需要的数据不⼀定相等 (回调函数每次要获取的数据量都是固定);

2025-09-11 00:11:15 430

原创 ffplay视频输出和尺寸变换

我们开始分析视频(图像)的显示。205main函数主要步骤如下:SDL_Init,主要是SDL_INIT_VIDEO的⽀持SDL_CreateWindow,创建主窗⼝SDL_CreateRender,基于主窗⼝创建renderer,⽤于渲染输出。event_loop,播放控制事件响应循环,但也负责了video显示输出。这⾥我们重点分析set_default_window_size的原理,该函数主要获取窗⼝的宽⾼,以及视频渲染。

2025-09-11 00:10:41 586

原创 ffplay播放pcm

采样率、声道数、采样格式”四个关键点。查看支持列表,再尝试不同组合,直到声音正常即可。播放 PCM 裸流时,必须手动告诉它“如果忘记具体格式,可先执行。

2025-09-10 22:36:45 575

原创 ffmpeg内存模型

# AVPacket和AVFrame内存模型从现有的Packet拷贝到一个新Packet的时候,有两种情况:两个Packet的buf引用的是同一个数据缓存空间,这时候就要注意数据缓存空间的释放问题;两个Packet的buf是引用的不同的数据缓存空间,每个Packet都有数据缓存空间的copy;第一种方式可以理解为引用计数,有多个对象对一段内存进行操作。第二个就是两个对象有各自的数据域,不会互相影响。

2025-09-10 22:36:04 756

原创 关于ffplay在macos上运行奔溃的问题

然后重新编译,我是吧 SDL2 和 ffmpeg 全部重新编译了一遍,但我估计只要重新编译 SDL2 就可以了。这个问题大概是由于 MacOS 的问题引起的,奔溃的地方在 SDL2 的代码中,如果直接使用。安装 SDL2就会遇到这个问题,所以需要修改 SDL2源码然后再编译安装。

2025-05-30 18:06:28 853

原创 DPDK用户态协议栈-TCP Posix API 2

到目前为止,IP/TCP和IP/UDP的协议栈都写完了,但是没有并发效果;这个后面会解决。下一步是探索一下协议的扩展,写一个dns服务器来看一下如何基于tcp或者udp来扩展协议。

2024-12-12 21:20:45 587

原创 网络层分析

网络访问层仍受到传输介质的性质和相关适配器的设备驱动程序的影响很大。网络层与网络适配器的硬件性质几乎是完全分离的。为什么是几乎呢?该层不仅负责发送和接受网络数据,还负责在彼此不直接连接的系统之间转发和路由分组。查找最佳路由并选择适当的网络设备来发送分组,也涉及对底层地址簇的处理(比如特定硬件的 MAC 地址)。ip_rcv。

2024-12-12 21:17:54 442

基于Qt的Windows网络嗅探器

基于Qt的网络嗅探器,使用了一些flatui。 使用Winpacp库,支持IPV4,IPv6,ICMP,ARP等网络数据包抓取。 有配套文章。 使用QtCreator环境,pro文件组织工程。 开发不易,收取少量积分。

2024-07-21

C++的gRPC资源包

C++的grpc库和使用方法,配合文章使用。

2023-08-24

空空如也

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

TA关注的人

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