html导航栏学习
控制body、html等元素的样式 1234567891011121314body, html { margin: 0; padding: 0; width: 100%; height: 100%; font-family: 'Arial', sans-serif; /*background: linear-gradient(135deg, #0f0c29, #302b63, #24243e);*/ background-image: url('./background.jpg'); /* 背景图片的路径 */ background-repeat: no-repeat; /* 禁止背景图片重复 */ background-size: cover; /* 背景图片适应整个容器 */ background-position: center center; /* 背景图片居中 */ color:...
Python3_Sort
beat_sort 算法思想 遍历两遍list,第一遍[遍历次数],第二遍[遍历数据]。相邻的两个数,如果后面的数rod_lower大于前面的数rod_upper,就进行两个数的交换。 1234567891011# 交换两个数sequence[i] -= rod_upper - rod_lowersequence[i + 1] += rod_upper - rod_lower# 它就类似于t = sequence[i]sequence[i] = sequence[i + 1]sequence[i + 1] = t# 优点:两行代码# 缺点:不能处理负数 时间复杂度:$O(n^2)$ 代码 1234567891011121314def bead_sort(sequence: list) -> list: if any(not isinstance(x, int) or x < 0 for x in sequence): raise TypeError("Sequence must be list of non-negative...
Python3在Leetcode中的学习
1. 两数之和 题目链接 题目思路 定义一个idx的map,用于存储遍历到的每一个数所对应的下标。 当遍历到下标为$j$的数时,先查找在idx中是否存在target - nums[j], 如果存在,直接返回答案。 如果不存在,将nums[j]存入idx中 Code 1234567class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: idx = {} for j, x in enumerate(nums): if target - x in idx: return [idx[target - x], j] idx[x] = j map定义 idx = {}: enumerate关键字 返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。 enumerate() 返回的迭代器的...
SDL播放音频
代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <iostream>#include <sdl/SDL.h>#include <fstream>#pragma comment(lib, "SDL2.lib")#undef mainusing namespace std;// =======(四)=======void AudioCallBack(void* userdata, Uint8* stream, int len){ cout << "AudioCallBack" << endl; SDL_memset(stream, 0, len); auto ifs = (ifstream *)userdata; ifs->read((char*)stream,...
责任链设计模式
责任链 责任链设计模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者与接收者之间的耦合。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 责任链模式的核心概念 请求的发送者不需要知道哪个对象会处理请求。 请求的接收者可以决定是否处理请求或将其传递给下一个接收者。 可以动态地添加或删除责任链上的处理者(处理对象)。 结构 Handler(处理者):定义一个处理请求的接口。如果处理者能够处理该请求,则进行处理,否则将请求传递给链上的下一个处理者。 ConcreteHandler(具体处理者):实现处理者接口,具体处理请求的类。如果不能处理请求,则将请求转发给下一个处理者。 Client(客户端):向链上的具体处理者对象提交请求。 工作流程 客户端创建一个包含多个 ConcreteHandler 对象的链。 客户端将请求发送到链中的第一个 ConcreteHandler。 如果 ConcreteHandler 能处理请求,它就会进行处理。 如果...
编码encoder,解码decoder,复用mux,解复用demux关系
四者之间的区别 编码(encoder)、解码(decoder)、复用(mux),和解复用(demux)是多媒体处理中的四个重要概念,它们各自承担不同的任务,用于处理音频、视频等数据。下面是它们的关系和区别: 1. 编码(Encoder) 编码是将原始的音视频数据转换为另一种格式的过程,这通常是为了压缩数据以减少文件大小,同时保持一定的质量。编码器通过一种算法(如 H.264、AAC 等)对音视频数据进行压缩,生成一种特定的编码格式的数据流。编码的目的是为了更高效地存储和传输音视频数据。 举例: 视频编码器:H.264、H.265、VP9 等。 音频编码器:MP3、AAC、Opus 等。 编码后的数据称为 码流(bitstream)。 2. 解码(Decoder) 解码是将编码后的数据流还原为原始格式或能够播放的格式的过程。解码器使用与编码器相反的算法,读取编码后的数据流,将其解压缩或转换为可以播放或进一步处理的格式。 举例: 视频解码器:解码 H.264、H.265 格式的视频流。 音频解码器:解码 MP3、AAC...
截取一段视频
...
AVPacket
基本介绍 AVPacket 是 FFmpeg 库中的一个重要结构体,用于表示音频、视频或字幕等媒体数据的一个数据包(packet)。在多媒体处理流程中,AVPacket 是最基本的传输和处理单元,它包含了编解码数据以及与数据相关的元信息,如时间戳、数据大小等。 AVPacket 的作用 AVPacket 是在解复用(demuxing)和复用(muxing)过程中传递音视频数据的结构体。解复用器从多媒体文件中提取出 AVPacket,解码器处理 AVPacket 中的数据,并生成帧(AVFrame)。同样,编码器会将帧编码成 AVPacket,复用器会将这些 AVPacket 写入多媒体文件。 AVPacket 结构体的主要成员 以下是 AVPacket 结构体中一些关键的成员变量及其作用: uint8_t *data:指向数据包的实际数据。它包含了经过编码的音频或视频数据,通常是压缩的格式(如 H.264 视频或 AAC 音频)。 int size:表示数据包的大小,以字节为单位。这个值表示 data 指针指向的数据区域的大小。 int64_t...
AVCodecParameters
AVCodecParameters 是 FFmpeg 库中的一个数据结构,用于存储与媒体流(如视频流、音频流、字幕流等)相关的编解码参数。这些参数包括编解码器的类型、编码格式、分辨率、比特率、采样率等。AVCodecParameters 的引入是为了分离编解码器相关的参数信息,以便在不同的上下文中使用这些参数,而不需要依赖于实际的编解码器上下文。 AVCodecParameters 的主要成员变量 以下是 AVCodecParameters 结构中一些关键的成员变量及其作用: enum AVMediaType codec_type:表示媒体类型,即流的类型。它是一个枚举类型,可能的值包括 AVMEDIA_TYPE_VIDEO、AVMEDIA_TYPE_AUDIO、AVMEDIA_TYPE_SUBTITLE 等。 enum AVCodecID codec_id:表示编解码器的 ID,指示该流使用的具体编解码器类型(例如 AV_CODEC_ID_H264 表示 H.264 视频编码,AV_CODEC_ID_AAC 表示 AAC 音频编码)。 int64_t...
AVStream、AVFormatContext
AVStream AVStream 是 FFmpeg 中用于表示媒体文件中每个流(如视频流、音频流、字幕流等)的数据结构。每个媒体文件通常包含一个或多个流,例如一个视频文件可能包含一个视频流和一个音频流。 AVFormatContext AVFormatContext 是 FFmpeg 库中的一个核心数据结构,用于表示一个多媒体文件或流的上下文。它包含了文件或流的全局信息以及其中的各个流(如视频流、音频流、字幕流等)的详细信息。这个结构体在处理多媒体文件的过程中起着至关重要的作用,几乎所有与多媒体文件相关的操作都依赖于它。 AVFormatContext 的主要作用 AVFormatContext 是处理多媒体文件的中心,它负责: 管理文件的全局信息:包括文件的格式、持续时间、比特率等。 管理文件中的各个流:如视频流、音频流、字幕流等,每个流的信息都保存在 AVStream 结构中,AVFormatContext 通过一个流数组(streams)来管理这些流。 与多媒体文件的 I/O...