- 博客(574)
- 资源 (4)
- 收藏
- 关注
原创 ffmpeg编解码器相关函数
(或// 1. 找到解码器// 2. 分配上下文// 3. 从 AVCodecParameters 拷贝参数// 4. 打开解码器// 5. 循环解码// 处理解码后的 frame,比如显示或保存// 6. 清理资源在 FFmpeg 中,处理音视频数据的各个组件是基于不同的结构体来管理的。这里我会简要讲解一下与音视频解复用、编码解码相关的结构体,重点关注AVStreamAVCodecAVPacket和AVFrame等。
2025-04-09 21:18:16
562
原创 ffmpeg函数简介(封装格式相关)
读取一个包(packet),即从文件或流中读取一帧音视频数据。创建的 AVFormatContext,那么用它来释放。从媒体文件中读取流信息,比如视频流、音频流、字幕流等。,包含了解码器、流信息、文件路径、数据缓冲等信息。几乎所有操作媒体文件的函数都围绕这个结构体展开。获取流信息,比如帧率、分辨率、码率、时长等。这个函数更灵活,允许设置查找时间戳范围。但通常我们更常用的是。(即打开文件并准备读取媒体信息)。打开一个输入媒体文件,并填充。关闭输入文件并释放相关资源。,适合更复杂的跳转需求。
2025-04-09 21:05:36
927
原创 ffmpeg基础知识入门
容器是一种媒体封装格式,用来将音频流、视频流、字幕流等打包在一个文件中。媒体流是指某一类连续的媒体数据,通常是视频流、音频流或字幕流。Frame(帧):解码后的数据单位(未压缩)视频帧是一张图片音频帧是一段 PCM 采样点Packet(包):压缩后的数据单位(经过编码器压缩后,准备写入容器的)Codec = COder + DECoder,即“编码器/解码器”。复用器(Muxer)把多条媒体流(音频、视频)打包进容器,形成一个完整的媒体文件或媒体流。解复用器(Demuxer)从容器中。
2025-04-05 18:50:53
681
原创 SDL中SDL_AudioSpec结构体参数
int freq;// 采样频率(Hz)// 采样点格式// 通道数// 静音值(用于填充缓冲)// 每次回调请求的采样数(缓冲区大小)// 已弃用// 缓冲区字节大小(自动计算)// 回调函数// 用户自定义数据(传入回调)
2025-04-05 18:30:28
1070
原创 SDL读取PCM音频文件
/ 每次读取2帧数据, 以1024个采样点一帧 2通道 16bit采样点为例1024222// 每次读取2帧数据, 以1024个采样点一帧 2通道 16bit采样点为例 # define PCM_BUFFER_SIZE(1024 * 2 * 2 * 2)定义了每次读取音频数据的缓存大小。每帧音频数据由 1024 个采样点组成,2 个通道(立体声),每个采样点占 2 字节(16 位)。字节。// 音频PCM数据缓存// 目前读取的位置// 缓存结束位置。
2025-04-05 16:21:22
888
原创 SDL显示YUV视频
这个程序通过 SDL2 创建一个视频播放窗口,读取并显示 YUV 文件的每一帧视频数据。它通过一个单独的线程来周期性触发视频帧的刷新,保持视频播放的流畅。
2025-04-05 14:39:10
539
原创 SDL多线程编程
SDL 提供了多线程编程的基本支持,包括线程创建、互斥锁和条件变量等机制。通过合理的多线程设计,可以提高应用程序的性能,尤其是在需要处理大量并发任务的场景中。然而,使用多线程时需要小心资源同步和线程安全问题,确保线程间不会产生竞争条件或死锁。
2025-04-05 14:00:04
127
原创 SDL事件循环
事件循环(Event Loop)用户点击关闭窗口按下键盘移动鼠标、点击鼠标控制器输入窗口尺寸变化等如果你不写事件循环,SDL 窗口会直接“卡死”或“无响应”。
2025-04-05 13:55:36
104
原创 SDL视频显示函数
这些函数是 SDL2 中用于图形和渲染的一些基本操作。初始化 SDL 库。创建窗口和渲染器。创建纹理并更新数据。使用渲染器将纹理渲染到屏幕。控制程序的帧率(通过最后清理 SDL 资源。这些操作通常在游戏开发或图形应用中使用,用于在窗口中绘制动态内容或图像。下面是一个使用 SDL2 创建简单窗口并进行图像渲染的示例程序。这个程序展示了如何使用你提到的 SDL 函数来创建窗口、渲染器、纹理,并进行图像绘制。
2025-04-05 09:41:46
497
原创 SDL介绍和移植
Qt用于管理应用程序生命周期和事件循环。SDL2用于创建窗口、处理图形和多媒体事件。程序使用WinMain作为入口,创建了 SDL 窗口并开始事件循环,同时允许 Qt 在 SDL 的事件循环中处理事件。这种方式适合需要同时处理图形渲染和 Qt 事件系统的应用程序。
2025-04-05 09:26:05
272
原创 ubuntu安装ffmpeg
FFmpeg 是一个开源的跨平台音视频处理工具,广泛用于音视频编解码、转码、剪辑、合成、流媒体处理等。它支持几乎所有的视频和音频格式,提供了命令行工具和丰富的开发接口。ffmpeg: 命令行工具,用于音视频的录制、转换和流式处理。ffplay: 一个简单的媒体播放器,用于播放音视频文件。ffprop: 用于处理流式音视频数据。libavcodec: 提供音视频编解码的核心库。: 提供多种格式的封装格式处理。libavutil: 提供音视频处理的各种实用工具。libswscale。
2025-04-05 07:00:00
589
原创 音视频学习(ffmpeg、ffplay、ffprobe的区别)
FFmpeg是一个多功能的音视频处理工具,支持音视频转换、编辑、流式处理等操作。FFplay是一个简化的音视频播放器,基于 FFmpeg 库,适合快速预览和播放音视频文件,具有命令行界面。FFprobe是一个用于提取多媒体文件信息的工具,适用于获取音视频文件的详细元数据,如格式、时长、编码类型等。工具主要用途常见命令示例FFmpeg音视频格式转换、剪辑、合并、流媒体推流等处理FFplay音视频播放工具,快速播放和测试音视频文件FFprobe提取音视频文件的详细信息和元数据分析FFmpeg。
2025-04-05 07:00:00
311
原创 ffmpeg常见命令3
FFmpeg 提供的过滤器系统非常灵活和强大,能够帮助你对视频进行多种处理,例如添加文字水印、图片水印、画中画以及多宫格效果等。通过掌握这些过滤器,你可以在 FFmpeg 中执行几乎所有常见的视频编辑任务,所有这些都可以通过简单的命令行实现,无需复杂的图形界面操作。
2025-04-04 20:24:09
510
原创 ffmpeg常见命令2
FFmpeg 提供了强大的音视频处理能力,涵盖了从提取音视频数据到格式转换、裁剪、合并、录制、直播等多种功能。通过简单的命令行操作,FFmpeg 可以高效地完成音视频文件的各种处理任务。理解这些基本命令的使用,有助于你在日常工作中更加灵活地进行音视频处理。
2025-04-04 20:21:34
604
原创 ffmpeg音视频处理流程
输入文件(Input File)读取和解封装输入文件中的音视频数据。编码数据包(Encoded Packets)解封装器提取编码后的音视频数据包,为解码做准备。解码后的数据帧(Decoded Frames)使用解码器解码编码数据包,得到可操作的音视频数据帧。处理后的数据帧(Processed Frames)对解码后的数据帧进行处理,例如缩放、转码、加特效等操作。编码数据包(Encoded Packets)将处理后的数据帧重新编码为数据包,以适应目标格式和压缩要求。
2025-04-04 20:13:55
803
原创 ffmpeg基础指令学习
FFmpeg 是一个功能强大的多媒体处理工具,可以进行各种视频和音频操作,包括格式转换、剪切、合并、音频提取、调整比特率、视频编码等。熟悉并掌握常见的 FFmpeg 基础指令后,可以实现对音视频文件的广泛处理。
2025-04-04 19:48:04
441
原创 音视频基础(音频常用概念)
帧长短(高 FPS)画面更流畅,但数据量增大。,总比特率=视频比特率 + 音频比特率。音频比特率表示每秒钟传输的音频数据量。这样在低带宽条件下,能够提升视觉上的流畅度。,两者可以互换使用。非交错模式(Progressive)又称。(Frame)是视频或音频的最小单元。帧长(Frame Length)指的是。交错模式(Interlaced)是一种。下面详细讲解这些概念及其影响。,只是在不同语境下使用不同的术语。音视频处理涉及多个重要概念,包括。比特率(Bitrate)指的是。,即每一帧都完整显示,不分场。
2025-04-04 13:45:49
769
原创 音视频基础(YUV存储格式)
YUV 主要用于视频压缩,因为人眼对亮度更敏感,色度数据可以被压缩。不同的 YUV 采样格式(4:4:4、4:2:2、4:2:0)主要是为了在画质与数据量之间取舍。存储方式(Planar、Packed、Semi-Planar)决定了数据存放的结构。YUV 需要转换为 RGB 才能显示在普通屏幕上。如果你有更具体的应用场景,比如在硬件或编解码方向上的问题,可以进一步探讨!😊。
2025-03-31 21:13:37
839
原创 音视频基础(图像的基础概念)
在图像和视频处理中,有几个重要的基础概念需要理解,包括像素、分辨率、位深、帧率、码率和。这些概念是图像与视频处理的基础,掌握它们有助于更深入理解。
2025-03-31 20:35:09
881
原创 音视频基础(音视频的录制和播放原理)
这张图展示了音视频播放的基本流程,包括从媒体文件的解析、解码、同步处理到最终输出的全过程。以下是具体的解析:音视频播放的基本流程包括:这个流程适用于本地播放器(如 VLC、PotPlayer)以及流媒体播放(如 YouTube、Netflix)。这张图展示了音视频播放的基本流程,包括从媒体文件的解析、解码、同步处理到最终输出的全过程。以下是具体的解析:音视频播放的基本流程包括:这个流程适用于本地播放器(如 VLC、PotPlayer)以及流媒体播放(如 YouTube、Netflix)。
2025-03-31 20:29:53
937
原创 RK3568使用gpio子系统完成led驱动程序编写
正点原子的RK3568中,LED灯被用于了心跳灯,所以在这里我们需要关闭这个心跳灯,使用status = "disable"即可关闭。
2025-03-30 21:17:20
570
原创 RK3568 pinctrl内容讲解
pinctrl机制通过在设备树中配置引脚的功能、复用、输入输出模式、电气特性等,确保系统中的硬件引脚得到合理的管理和使用。它在嵌入式系统中尤其重要,帮助开发者正确配置硬件引脚,避免引脚冲突,提高硬件资源的利用效率。这段设备树定义了 5 个 GPIO 控制器,每个控制器管理一组 GPIO 引脚。控制器的基地址和大小。相关时钟源和中断配置。配置每个控制器的引脚数量和中断管理。通过这些配置,系统可以正确地控制 GPIO 引脚,处理中断事件,并确保硬件时钟的正常运行。
2025-03-29 16:26:06
683
原创 RK3568 驱动和设备匹配的几种方法
在实际开发中,选择合适的匹配方式能提高驱动程序的兼容性和可移植性。进行匹配,以便正确加载并控制设备。Linux 提供了多种。I2C、SPI 总线上的设备(如传感器、EEPROM)。不同的匹配方式适用于不同的总线和设备类型。USB 设备,如 U 盘、键盘、鼠标。该匹配方式用于系统所有总线级设备匹配。,不同类型的设备使用不同的匹配方法。PCI 设备,如显卡、网卡。(如 SoC 内部设备)。
2025-03-26 21:33:08
716
原创 RK3568 设备树基础语法讲解
设备树(Device Tree, DT)是一种用于描述硬件的数据结构,主要用于及其他嵌入式系统中,以独立于内核代码的方式提供硬件信息。它的作用是让内核在启动时能够动态解析硬件配置,而无需对内核代码进行修改。在 ARM 体系中,设备树广泛用于Linux 内核、Bootloader(如 U-Boot),它解决了传统的“板级文件”模式(即在内核中硬编码硬件信息)的问题,使得同一份内核可以适用于不同的硬件平台。.dts设备树源文件,定义具体开发板的硬件信息。.dtsi设备树包含文件,用于公共配置,被多个。
2025-03-26 21:23:02
769
原创 uboot(bootrom的作用)
它会初始化硬件环境,并决定从哪个存储介质加载操作系统或用户程序。(Boot Read-Only Memory)是一种。,意味着其内容在芯片出厂时已经写入,无法更改。当设备上电或复位时,BootROM 负责。,用于存放设备启动时执行的。BootROM 代码通常。BootROM 也是。
2025-03-23 18:52:58
912
原创 uboot 编译过程
Kconfig 语法类似 C 语言宏定义,支持变量、条件、依赖项等。U-Boot(Das U-Boot)是一个常见的嵌入式引导加载程序,采用类似 Linux 内核的。Kconfig 是 Linux 内核、U-Boot 等项目使用的。,它解析 Kconfig 文件并生成菜单供用户选择,最终输出。预处理指令,但更强大,提供了层次化、菜单式的配置方式。U-Boot 支持多个硬件平台,每个平台有一个。配置文件,控制内核或其他项目的编译行为。,用于定义编译选项,类似 C 语言的。预设配置文件,存放在。
2025-03-23 10:33:29
685
原创 uboot中的.config文件
config文件是什么?.config是 U-Boot(或者 Linux 内核等)构建系统的配置文件,它记录了所有的编译选项和系统参数。这个文件是Kconfig处理后生成的最终配置,用于控制 U-Boot 的编译过程。在 U-Boot 或 Linux 内核中,.config记录用户选择的编译选项作为 Makefile 和 C 代码的编译输入影响最终的二进制文件(如 U-Boot 镜像或 Linux 内核).config文件的格式.config常见的配置值配置值含义CONFIG_X=y。
2025-03-16 20:38:34
711
原创 Linux中的dup函数
函数用于复制文件描述符,使新的文件描述符指向与原文件描述符相同的文件对象。这样,多个文件描述符可以共享同一个文件(或设备、管道等),并且它们的读写操作互相影响。在 Linux(以及 POSIX 兼容的系统)中,如果想让新的文件描述符指向一个指定的值,可以使用。共享文件偏移量,所以两次。
2025-03-09 09:10:35
100
原创 E22-xxxT22D lora模块配置
主要介绍了 E22-230T22D 模块的寄存器参数及其作用,适用于 230MHz 频段的 LoRa 模块。寄存器用于配置模块的地址、网络 ID、串口参数、空中速率、信道等功能。波特率默认9600bps/s。
2025-03-05 19:46:27
494
原创 E22-xxxT22D lora模块介绍
LoRa 模块是基于 LoRa 调制技术的无线通信模块,它可以在。:相比传统无线技术(如 Wi-Fi、蓝牙、Zigbee),LoRa 可在。(如 433MHz、868MHz、915MHz)工作,无需申请频率许可证。(成都亿佰特):支持 LoRa 扩频、22dBm 功率、5km 传输距离。(Ai-Thinker):低成本 LoRa 模块,适用于 DIY 开发。适用于点对点通信,比如单片机(MCU)与 LoRa 模块直接通信。,适用于物联网(IoT)应用,如智能农业、工业控制、智慧城市等。
2025-03-02 21:48:16
936
原创 STM32Cubemx配置RTTHread工程
链接地址:https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc。,这是一款集成开发环境,支持与 STM32CubeMX 联合使用,简化 RT-Thread 项目的创建和配置。rt_kprintf():RT-Thread 提供的 printf() 替代函数(默认输出到串口)。rt_thread_mdelay(1000):任务休眠 1 秒。rt_thread_startup():启动任务。1024:任务堆栈大小(单位:字节)
2025-03-02 21:40:34
1039
原创 串口屏第一个工程案例
这段代码用于设备上电初始化,设置了一些全局变量、串口参数、屏幕背光等。它还通过串口向外发送了一些启动信息,并指定上电时显示第0页面的内容。串口屏使用串口协议与外部设备通信,可以通过字符串指令协议控制显示内容。这些初始化设置帮助设备在上电时完成基础配置,并确保设备能够通过串口与其他系统进行通信。
2025-02-16 09:56:48
407
1
原创 串口屏介绍及开发环境搭建
串口屏(Serial LCD/LED Screen)是一种通过串口通信协议(如RS232、TTL等)与其他设备(如单片机、开发板等)连接的显示屏。它通常由一个液晶屏(LCD)或LED显示屏和一个内置的控制模块组成,可以通过串口数据传输来控制显示内容。
2025-02-16 09:37:59
1156
原创 C++使用Json保存配置参数
使用 JSON 来管理配置文件的思路通常是通过将配置信息以结构化的方式存储在一个易于读取和修改的文本文件中。JSON(JavaScript Object Notation)作为一种广泛使用的轻量级数据交换格式,特别适用于配置文件管理,因为它既简单易读又容易与编程语言的对象模型对接。以下是使用 JSON 管理配置文件的核心思路及其实现步骤。首先,你需要确定配置文件的结构。这取决于你的应用程序需要管理的配置项。这里的配置文件包含了两个主要部分: 和 。每个部分都是一个键值对,值可以是基本类型(如字符串、数
2025-02-09 09:28:06
590
原创 Linux中getifaddrs函数
它提供了一种简单的方法来获取所有网络接口的地址信息,例如。下面的代码枚举所有网络接口,并打印其 IPv4 和 IPv6 地址。是 Linux(以及其他 Unix-like 系统)中用于获取。
2025-02-09 08:47:43
779
Cmake 3.27版本
2023-07-16
SG90舵机使用手册pdf
2023-06-13
STM32F407智能小车学习代码
2023-06-13
基于STM32智能小车
2022-12-17
智能指针的类型方法及使用方法
2023-03-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人