自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(574)
  • 资源 (4)
  • 收藏
  • 关注

原创 ffmpeg编解码器相关函数

(或// 1. 找到解码器// 2. 分配上下文// 3. 从 AVCodecParameters 拷贝参数// 4. 打开解码器// 5. 循环解码// 处理解码后的 frame,比如显示或保存// 6. 清理资源在 FFmpeg 中,处理音视频数据的各个组件是基于不同的结构体来管理的。这里我会简要讲解一下与音视频解复用、编码解码相关的结构体,重点关注AVStreamAVCodecAVPacket和AVFrame等。

2025-04-09 21:18:16 562

原创 ffmpeg播放音视频流程

创建结构体 → 打开文件 → 查找流 → 找解码器 → 解码成帧 → 播放 → 释放资源。

2025-04-09 21:12:55 423

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

原创 音视频基础(视频的主要概念)

视频编码(如 H.264、H.265)使用。它决定了视频的清晰度和流畅度。

2025-04-04 13:32:18 535

原创 音视频基础(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 GPIO子系统

Linux 内核 GPIO 子系统的主要作用是。

2025-03-29 16:43:31 491

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

原创 uboot源码结构

U-Boot 代码结构清晰,主要包括 CPU 架构支持 (

2025-03-16 09:54:48 997

原创 Linux中的dup函数

函数用于复制文件描述符,使新的文件描述符指向与原文件描述符相同的文件对象。这样,多个文件描述符可以共享同一个文件(或设备、管道等),并且它们的读写操作互相影响。在 Linux(以及 POSIX 兼容的系统)中,如果想让新的文件描述符指向一个指定的值,可以使用。共享文件偏移量,所以两次。

2025-03-09 09:10:35 100

原创 STM32Cubemx配置E22-xxxT22D lora模块实现定点传输

定点传输(Fixed Transmission,也称为。

2025-03-05 21:28:42 1123

原创 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版本

CMake 是一个跨平台的开源构建工具,用于生成用于各种编译器、开发环境和操作系统的构建脚本(如 Makefile、Visual Studio 解决方案等)。它提供了一种简化构建过程的方式,可以自动化构建、测试和安装软件。 以下是 CMake 的一些重要特性和优势: 1.跨平台支持:CMake 可以在多个操作系统(如 Windows、Linux、macOS)上使用,并且与多种编译器和构建系统兼容。它提供了一种统一的构建配置方式,可以简化在不同平台上的构建过程。 2.简化的语法:CMake 使用一种简明直观的语法,可以轻松定义项目的目录结构、源文件、依赖项和构建选项。CMake 的语法是基于命令和变量,可以通过编写 CMakeLists.txt 文件来描述项目的配置和构建过程。 3.自动化构建:CMake 可以自动生成与所使用的构建系统和操作系统兼容的构建脚本。它可以根据不同的生成器生成 Makefile、Visual Studio 解决方案、Xcode 项目等,从而实现自动化构建。 4.模块化和可扩展:CMake 支持模块化的项目配置,可以根据需要添加或包含其他模块,以实现更复杂的构

2023-07-16

SG90舵机使用手册pdf

SG90舵机是一种小巧而精密的舵机,其具有体积小、价格便宜、静态扭矩大、转动速度快等优点,被广泛应用于机器人、遥控小车和无人机等领域。以下是SG90舵机使用手册的宣传介绍内容: “SG90舵机是一款精密的舵机,具有高精度、高速度、低功耗、低噪音等突出特点。其采用高精度电机、高精度电机驱动芯片和高质量的齿轮等核心部件,在保持稳定性的同时,具备更精确的运动控制能力。 SG90舵机具有开发简单、使用方便、适配性广等优势,可以与各种控制器(如Arduino)和传感器(如超声波传感器、红外传感器)相结合,开发自己的电子制作项目。其体积小巧、轻便,适用于各种小型设备,如自动化机器人、小型车辆、航模等应用场景。 SG90舵机使用方便简单,只需要将舵机与控制器进行连接即可。其精密的运动控制能力,可以实现高精度的角度控制,支持180度的转动范围。此外,SG90舵机还具备可靠性高、寿命长、成本低等特点,是一款性价比极高的舵机。 选择SG90舵机,选择高精度、高速度、高可靠性。我们的SG90舵机使用手册将带领您了解其操作方法、控制模式、输入信号电平和脉宽等相关知识,为您快速掌握使用技巧提供有力帮助,

2023-06-13

STM32F407智能小车学习代码

“掌握超声波模块、电机、PID、舵机等操作,开启智能小车编程之旅!无论是初学者还是专业程序员,我们的STM32智能小车都能够提供极具挑战性和趣味性的编程实践。通过不断的实践和探索,你将逐渐掌握控制智能小车的技能,并得到深刻的学习体验和成就感。让STM32智能小车成为你走向编程巨匠之路的阶梯!”

2023-06-13

蓝桥杯矩阵按键精简算法

蓝桥杯矩阵按键精简算法,使用此算法将大大减少代码的书写量,提高程序的运行效率。

2023-01-31

51入门单片机流水灯代码

51单片机入门流水灯代码

2022-12-30

51单片机入门,LED实验代码

学习51单片机,快速入门51单片机。

2022-12-30

基于STM32智能小车

智能小车是一个比较好的项目,对于刚刚入门STM32的人来说,就是需要做一些小的项目去提高自己的编程水平,智能小车涉及到多模块编程,需要编写者熟悉各种模块,并学会如何去调试各种模块。

2022-12-17

STM32LED框架式编程

此代码将带领大家去学习框架式编程,学会了框架式编程将让你的代码管理更加的方便简单。

2022-04-02

stm32 OLED智能手环小项目

stm32 OLED智能手环小项目

2022-02-03

C语言万年历的学习及代码

C语言万年历的学习及代码

2022-02-03

stm32串口聊天助手

stm32串口聊天助手

2022-02-03

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

TA关注的人

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