Wan2.1 通过首尾帧生成视频
Wan2.1 通过首尾帧生成视频
flyfish
使用 Wan2.1-FLF2V-14B-720P 模型,通过输入两张图像(起始帧和结束帧),生成一段连贯的视频。
First Last Frame-to-Video 即 “首末帧到视频” 技术
import numpy as np
import torch
import torchvision.transforms.functional as TF
from modelscope import AutoencoderKLWan, WanImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
from modelscope import CLIPVisionModel# 加载模型
model_id = "Wan-AI/Wan2.1-FLF2V-14B-720P-Diffusers"
# 加载输入图像
first_frame = load_image("./first_frame.jpg")
last_frame = load_image("./last_frame.jpg")image_encoder = CLIPVisionModel.from_pretrained(model_id, subfolder="image_encoder", torch_dtype=torch.float32)
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
pipe = WanImageToVideoPipeline.from_pretrained(model_id, vae=vae, image_encoder=image_encoder, torch_dtype=torch.bfloat16
)
pipe.to("cuda") # 将模型移至GPU# 调整图像尺寸以匹配模型要求和最大面积限制
def aspect_ratio_resize(image, pipe, max_area=720 * 1280):aspect_ratio = image.height / image.widthmod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_valuewidth = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_valueimage = image.resize((width, height))return image, height, width# 居中裁剪并调整图像大小
def center_crop_resize(image, height, width):resize_ratio = max(width / image.width, height / image.height)width = round(image.width * resize_ratio)height = round(image.height * resize_ratio)size = [width, height]image = TF.center_crop(image, size)return image, height, width# 预处理图像
first_frame, height, width = aspect_ratio_resize(first_frame, pipe)
if last_frame.size != first_frame.size:last_frame, _, _ = center_crop_resize(last_frame, height, width)# 定义视频内容提示词
prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."# 生成视频
output = pipe(image=first_frame, last_image=last_frame, prompt=prompt, height=height, width=width, guidance_scale=5.5
).frames[0]# 导出视频
export_to_video(output, f"wan-ff2v.mp4", fps=16)
Wan2.1-FLF2V-14B-720P
模型文件结构
核心模型组件
- image_encoder
- 它的功能是把输入图像转变为特征向量,这些向量能够被后续的生成模型所运用。
- 该组件一般由预训练的视觉模型构成,像 CLIP 或者 ViT 模型。
- text_encoder
- 其作用是对文本提示进行编码,生成对应的文本嵌入(text embeddings),以此来引导视频生成的过程。
- 通常是基于 Transformer 架构的语言模型,例如 BERT 。
- transformer
- 这是模型的核心生成网络,它会结合图像特征和文本嵌入,进而生成视频帧序列。
- 模型名称中的 “14B” 代表该 Transformer 拥有 140 亿参数。
- vae(Variational Autoencoder)
- 负责图像的压缩与解压缩工作,能够在潜在空间(latent space)中对视频帧进行高效处理。
- 这里使用的是专门为视频生成优化过的
AutoencoderKLWan
版本。
- scheduler
- 作为扩散过程的调度器,它能够控制噪声的添加和移除步骤,从而影响生成视频的质量和多样性。
配置与元数据
- configuration.json
- 该文件包含了模型的基础配置信息,例如隐藏层维度、注意力头数量等架构参数。
- model_index.json
- 这是模型权重文件的索引,在使用多个分片文件时,它的作用尤为重要。
- tokenizer
- 其功能是将文本提示转换为模型能够理解的 token 序列,和 NLP 模型中的 tokenizer 作用相同。
- image_processor
- 用于对输入图像进行预处理,比如调整尺寸、归一化等操作,是图像编码器的前置处理组件。
流程
image_encoder
对输入的首帧和末帧图像进行编码。text_encoder
对文本提示进行编码。transformer
结合图像和文本特征,在潜在空间中生成视频帧。vae
将潜在空间中的视频帧解码为实际的图像帧。scheduler
控制整个扩散生成过程。
image_encoder
组件
基于 CLIP-ViT-H-14 视觉编码器
核心参数解析
1. 模型基础信息
"_name_or_path": "laion/CLIP-ViT-H-14-laion2B-s32B-b79K",
"architectures": ["CLIPVisionModelWithProjection"],
"model_type": "clip_vision_model",
- CLIP-ViT-H-14:是 OpenAI 开发的 Contrastive Language-Image Pretraining (CLIP) 模型的一种变体,使用 Vision Transformer (ViT) 架构,参数量约为 632M。
- H-14:表示使用 Hybrid 架构(结合 CNN 和 Transformer),并且 patch 大小为 14×14 像素。
- laion2B-s32B-b79K:表明该模型在 LAION-2B 数据集上训练,包含 20 亿图像-文本对。
2. 模型架构参数
"hidden_size": 1280,
"num_hidden_layers": 32,
"num_attention_heads": 16,
"intermediate_size": 5120,
- hidden_size=1280:每个 Transformer 层的隐藏状态维度为 1280(即特征向量长度)。
- num_hidden_layers=32:模型包含 32 个 Transformer 块,属于较深的架构。
- num_attention_heads=16:每层使用 16 个注意力头,并行处理不同子空间的信息。
- intermediate_size=5120:MLP 层的中间维度,通常是
hidden_size
的 4 倍(1280×4=5120)。
3. 图像输入参数
"image_size": 224,
"patch_size": 14,
"num_channels": 3,
- image_size=224:模型输入图像的分辨率为 224×224 像素。
- patch_size=14:将图像分割为 14×14 的 patch,每个 patch 被展平为一维向量。
- num_channels=3:输入图像为 RGB 三通道。
4. 投影层参数
"projection_dim": 1024,
- projection_dim=1024:模型输出的特征向量维度为 1024。这意味着输入图像最终会被编码为一个 1024 维的向量,用于后续的视频生成任务。
5. 正则化与数值稳定性
"attention_dropout": 0.0,
"dropout": 0.0,
"layer_norm_eps": 1e-05,
"torch_dtype": "bfloat16",
- dropout=0.0:不使用 dropout 正则化,因为预训练模型通常不需要。
- layer_norm_eps=1e-5:LayerNorm 层的稳定常数,防止数值计算中的除零错误。
- torch_dtype=“bfloat16”:使用 Brain Floating Point 16 位精度进行计算,比 FP16 更稳定,适合大规模模型。
6. 激活函数与初始化
"hidden_act": "gelu",
"initializer_range": 0.02,
- hidden_act=“gelu”:使用 GELU (Gaussian Error Linear Unit) 激活函数,比 ReLU 更平滑,能减少梯度消失问题。
- initializer_range=0.02:权重初始化的标准差为 0.02,控制初始参数的分布范围。
模型工作流程
- 图像预处理:输入图像被缩放到 224×224,分割为 16×16=256 个 patch(每个 patch 14×14 像素)。
- 嵌入生成:每个 patch 被线性映射为 1280 维的嵌入向量,并添加位置编码。
- 特征提取:通过 32 层 Transformer 处理这些嵌入,捕获图像的全局和局部特征。
- 投影输出:最终特征通过线性投影层转换为 1024 维的向量,作为视频生成模型的输入。
在视频生成中的作用
在 Wan2.1-FLF2V-14B-720P
模型中,这个 image_encoder
负责:
- 将输入的首帧和末帧图像编码为语义特征向量。
- 这些特征向量与文本提示的编码(由
text_encoder
生成)结合,指导transformer
生成中间帧。 - 1024 维的特征向量包含了图像的高级语义信息(如物体、场景、动作),帮助模型理解“要生成什么”。
scheduler
组件
制着扩散模型生成视频帧的具体过程。UniPCMultistepScheduler
是一种先进的多步求解器调度器。调度器(Scheduler) 是控制生成过程的核心组件,其作用类似于 “导演”,决定了如何逐步从噪声中 “提炼” 出最终的图像或视频。
核心参数解析
1. 调度器基础信息
"_class_name": "UniPCMultistepScheduler",
"_diffusers_version": "0.34.0.dev0",
- UniPCMultistepScheduler:是一种基于数值微分方程求解器的调度器,支持单步和多步模式,能以更少的采样步骤达到与 DDIM 等传统调度器相当的质量。
- diffusers_version:表明该调度器是为 diffusers 库的 0.34.0 版本开发的。
2. 噪声调度参数
"beta_start": 0.0001,
"beta_end": 0.02,
"beta_schedule": "linear",
"num_train_timesteps": 1000,
"timestep_spacing": "linspace",
- beta_start/end:噪声调度的起始和结束噪声水平,控制图像加噪和去噪的强度范围。
- beta_schedule=“linear”:噪声强度随时间线性增加(从 0.0001 到 0.02),这是扩散模型最常用的调度方式。
- num_train_timesteps=1000:训练时使用的时间步总数,实际推理时可通过
num_inference_steps
参数调整步数。 - timestep_spacing=“linspace”:时间步均匀分布,即每个时间步的间距相等。
3. 求解器参数
"solver_order": 2,
"solver_type": "bh2",
"lower_order_final": true,
"predict_x0": true,
"prediction_type": "flow_prediction",
- solver_order=2:求解器的阶数,2 阶表示使用二阶方法,在精度和计算效率之间取得平衡。
- solver_type=“bh2”:使用 Burlish-Stoer 方法的二阶变体,比标准 Euler 方法更精确。
- lower_order_final=true:在最后几步使用低阶方法,提高稳定性。
- predict_x0=true:模型预测的是原始图像
x0
(而非噪声),这是扩散模型的常见设置。 - prediction_type=“flow_prediction”:特殊的预测类型,针对视频生成优化,预测帧之间的运动流(motion flow)。
4. 视频生成特有的参数
"use_flow_sigmas": true,
"flow_shift": 16.0,
- use_flow_sigmas=true:启用针对运动流的噪声调度,专门为视频生成设计,帮助模型学习帧间的平滑过渡。
- flow_shift=16.0:运动流的缩放因子,控制帧间变化的幅度。较大的值会产生更明显的运动效果。
5. 阈值与稳定性参数
"thresholding": false,
"dynamic_thresholding_ratio": 0.995,
"sample_max_value": 1.0,
- thresholding=false:不使用动态阈值,这是一种防止生成图像过饱和的技术。
- sample_max_value=1.0:生成样本的像素值范围为 [-1, 1],符合大多数扩散模型的输出规范。
6. 其他参数
"disable_corrector": [],
"final_sigmas_type": "zero",
"rescale_betas_zero_snr": false,
- disable_corrector=[]:不禁用校正器,允许调度器在每一步后微调预测结果。
- final_sigmas_type=“zero”:最后一步的噪声水平为 0,确保生成的图像完全去噪。
调度器工作流程
- 初始化:从纯噪声图像(或低质量图像)开始。
- 多步去噪:使用二阶 Burlish-Stoer 方法,通过 20-50 步(通常少于训练时的 1000 步)逐步移除噪声。
- 运动流引导:在去噪过程中,模型不仅预测图像内容,还预测帧间的运动流,确保生成的视频帧具有时间连贯性。
- 低阶收尾:最后几步使用一阶方法,提高稳定性,减少可能的 artifacts。
在视频生成中的作用
在 Wan2.1-FLF2V-14B-720P
模型中,这个调度器负责:
- 控制从首帧到末帧的过渡过程,生成中间帧序列。
- 通过
flow_prediction
和use_flow_sigmas
参数,特别优化了对运动的处理,使生成的视频更加流畅自然。
相关文章:
Wan2.1 通过首尾帧生成视频
Wan2.1 通过首尾帧生成视频 flyfish 使用 Wan2.1-FLF2V-14B-720P 模型,通过输入两张图像(起始帧和结束帧),生成一段连贯的视频。 First Last Frame-to-Video 即 “首末帧到视频” 技术 import numpy as np import torch import…...
宝塔+fastadmin:给项目添加定时任务
一、定时任务脚本编写 1. 使用 shebang 声明执行器 #!/usr/bin/env php 这是 Unix/Linux 系统中脚本文件的标准开头。表示这个脚本使用系统环境变量中的 php 来执行。2. 定义 ThinkPHP 入口路径并加载框架 define(APP_PATH, __DIR__ . /../../application/); require __DIR__…...
[自动化集成] 使用明道云上传附件并在Python后端处理Excel的完整流程
在企业日常自动化场景中,使用低代码平台如明道云搭建前端界面,结合自定义Python后端服务,实现灵活数据处理是一种高效的组合方式。本文将分享一个典型的集成用例:用户通过明道云上传文本和Excel附件,Python后端接收并解析这些信息,最终实现完整的数据处理闭环。 项目背景…...
前端项目采用响式布局
要让整个前端项目采用响应式布局,可以从多个方面进行优化,以下是一些具体的建议和实现方法: 1. 使用 ElementPlus 的响应式特性 ElementPlus 组件库本身提供了一些响应式的能力,例如 el-col 组件可以用于创建响应式的网格布局。…...
【Unity】DOTween的常用函数解释
DOTween插件常用函数解释 1.DOTween.To(通用变化动画) 解释:将某一个值在一定的时间内变化到另一个值(通用的函数),可用于大部分的动画变化 使用示例: using UnityEngine; using DG.Tweenin…...
飞桨paddle import fluid报错【已解决】
跟着飞桨的安装指南安装了paddle之后 pip install paddlepaddle有一个验证: import paddle.fluid as fluid fluid.install check.run check()报错情况如下,但是我在pip list中,确实看到了paddle安装上了 我import paddle别的包,…...
ELK简介和docker版安装
使用场景 主要还是给开发人员“打捞日志”用的。 ELK 是由三个开源工具组成的套件(Elasticsearch、Logstash 和 Kibana),主要用于日志的收集、分析和可视化。以下是 ELK 常见的使用场景: 日志集中化管理 收集来自多个服务器或服…...
DockerHub被封禁,怎么将镜像传到国内?一种简单合规的镜像同步到国内方案[最佳实践]
Docker将容器化技术普及,推动云计算向云原生的演进。Docker的核心创新技术之一是容器镜像,它是一种文件的打包方式,将应用程序运行的操作系统、库、运行环境等依赖全部打包一起。在其他任意环境,只要可以运行docker服务࿰…...
飞桨paddle ‘ParallelEnv‘ object has no attribute ‘_device_id‘【已解决】
书借上回,自从我反复重装paddle之后,我发现了,只要pip list中有库,但是代码报错,那就是飞桨没把代码更新完全,只能自己去改源代码 我又遇到报错了: 根据报错信息,找到ParallelEnv报…...
网络安全面试题(一)
文章目录 一、基础概念与模型1. 什么是通信协议?列举三种常见的网络通信模型?2. 解释OSI七层模型及各层功能3. TCP/IP四层模型与OSI模型的对应关系是什么?4. 五层协议体系结构与TCP/IP模型的区别?5. 什么是面向连接与非面向连接的服务&…...
【Leetcode 每日一题】3355. 零数组变换 I
问题背景 给定一个长度为 n n n 的整数数组 n u m s nums nums 和一个二维数组 q u e r i e s queries queries,其中 q u e r i e s [ i ] [ l i , r i ] queries[i] [l_i, r_i] queries[i][li,ri]。 对于每个查询 q u e r i e s [ i ] queries[i] quer…...
RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试
RK3588 ArmNN CPU/GPU ResNet50 FP32/FP16/INT8 推理测试 **背景与目标** 一.性能数据【INT8模型在CPU上推理的结果已经不对,暂未分析原因】二.操作步骤2.1 在x86-Linux上生成onnx模型,以及tflite量化模型(避免在RK3588上安装过多依赖)2.1.1 创建容器2.1.2 安装依赖2.1.3 下载推…...
力扣第5题:最长回文子串(动态规划)
小学生一枚,自学信奥中,没参加培训机构,所以命名不规范、代码不优美是在所难免的,欢迎指正。 标签: 字符串、动态规划、中心扩散法 语言: C 题目: 给你一个字符串s,找到s中最长的…...
HCIP实验五
一、实验拓扑图: 二、实验需求分析: 1. PreVal策略:要求确保R4通过R2到达192.168.10.0/24 ,需在R4上针对去往该网段路由配置PreVal策略,为经R2的路径赋予更高优先值,影响本地路由表选路。 2. AS Path策略…...
python Numpy-数组
目录 Numpy: 一、Ndarray 1 定义 2 数组的属性方法 2.1 数组的维度:np.ndarray.shape 2.2 元素的类型:np.ndarray.dtype 2.3 数组元素的个数:np.ndarray.size 2.4 转置 3 ndarray 所存储元素的数据类型 4 数组创建 4.1 a…...
数据库分库分表从理论到实战
1.分库分表基础理论 1.1 分库分表基本概念 定义:分库分表是一种将单一数据库中的数据分散存储到多个数据库或表中的技术方案,其核心思想是通过"分而治之"的方式解决数据库性能瓶颈问题。分库:将表按业务或数据量拆分到不同数据库中…...
Java异常处理与File类终极指南
Java异常处理与File类终极指南 目录 异常体系全维度拆解异常处理十五种高阶模式自定义异常企业级实践File类深度探索与NIO进化论分布式系统异常处理架构性能调优与安全防护全网最全异常代码库一、异常体系全维度拆解 1.1 Java异常DNA解析 // 异常类的核心继承关系 public cla…...
pmap中的mode列,脏页,写时复制
写时复制(Copy-on-Write,简称 COW) 是一种计算机编程中的优化技术,主要用于内存或存储资源的管理。其核心思想是:只有在真正需要修改数据时,才会执行实际的复制操作,从而避免不必要的资源开销。…...
通过COM获取正在运行的Excel实例并关闭 c#实现
利用COM对象模型获取正在运行的Excel实例并关闭。示例代码如下: using Excel Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; try { Excel.Application excelApp (Excel.Application)Marshal.GetActiveObject("Excel.Applicatio…...
运行在华为云kubernetes应用接入APM服务
1 APM概述 在云时代微服务架构下应用日益丰富,纷杂的应用异常问题接踵而来。应用运维面临巨大挑战: 分布式应用关系错综复杂,应用性能问题分析定位困难,应用运维面临如何保障应用正常、快速完成问题定位、迅速找到性能瓶颈的挑战…...
虚幻引擎5-Unreal Engine笔记之摄像头camera
虚幻引擎5-Unreal Engine笔记之摄像头camera code review! 目录 第一部分:摄像头的基础概念 1.1 UE5 中摄像头的定义与作用1.2 UE5 中摄像头的类型与分类 第二部分:摄像头的代码结构与分类 2.1 摄像头是类还是组件?2.2 组件的本质ÿ…...
mysql的基础命令
1.SQL的基本概念 SQL 是用于管理和操作关系型数据库的标准编程语言。是所有关系型数据库(如 MySQL、PostgreSQL、Oracle 等)的通用语言。 SQL语句分类 DDL: Data Defination Language 数据定义语言 CREATE,DROP,ALTER DML: Da…...
去中心化算力池:基于IPFS+智能合约的跨校GPU资源共享平台设计
点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 一、问题背景:高校算力孤岛的困境 现状痛点 各高校GPU集群利用率差异显著&…...
数据库(二):ORM技术
什么是 ORM? ORM(Object-Relational Mapping) 是一种用于实现 对象模型(面向对象)与关系模型(数据库)之间映射的技术,使程序员可以通过操作对象的方式访问数据库数据,而无…...
Oracle基础知识
目录 1.别名的使用 2.AND的优先级高于OR 3.where后面可以接别名,order by后面不可以 4.Oracle中SQL的执行顺序(重点) 5.dual万用表 6.是否区分大小写 7.Oracle常用数据类型 8.Oracle常用函数 (1)length字符、lengthb字节和cast强制类型转换 (2)数据类型转…...
使用 vite-plugin-dynamic-base 实现运行时动态设置上下文路径
我们一般会在编译之前设置上下文,那么如何在编译之后动态设置上下文的路径? 本文使用的技术栈是 Go(Gin) Vue.js(Vite) 本文使用到的第三方包:https://github.com/chenxch/vite-plugin-dynam…...
spark-shuffle 类型及其对比
1. Hash Shuffle 原理:将数据按照分区键进行哈希计算,将相同哈希值的数据发送到同一个Reducer中。特点:实现简单,适用于数据分布均匀的场景。但在数据分布不均匀时,容易导致某些Reducer处理的数据量过大,产…...
力扣-快乐数
1.题目要求 2.题目链接 202. 快乐数 - 力扣(LeetCode) 3.题目分析 首先,因为需要频繁地用到数字变为各个位上的平方的过程,我们可以将"对于一个正整数,每一次将该数替换为它每个位置的数字的平方和"这一操作抽象出来,定义成一个…...
每日算法刷题Day10 5.19:leetcode不定长滑动窗口求最长/最大4道题,结束定长滑动窗口,用时1h
不定长滑动窗口 不定长滑动窗口主要分为三类:求最长子数组,求最短子数组,以及求子数组个数。 注:滑动窗口相当于在维护一个队列。右指针的移动可以视作入队,左指针的移动可以视作出队。 滑动窗口【基础算法精讲 03】…...
FreeSWITCH 纯内网配置
纯内网,且同一个网段,Fs 可简化配置,要点是: 1. 不需要事先配置 directory,任意号码都可以注册,且无挑战 2. 呼叫无挑战 不需要考虑那么多安全问题 配置如下: 1. 全局变量 <X-PRE-PROCESS cmd"…...
STL中list的模拟
这里写目录标题 list 的节点 —— ListNodelist 的 “导览员” —— ListIteratorlist 的核心 —— list 类构造函数迭代器相关操作容量相关操作 结尾 在 C 的 STL(标准模板库)中,list 是一个十分重要的容器,它就像一个灵活的弹簧…...
【iOS】类结构分析
前言 之前我们已经探索得出对象的本质就是一个带有isa指针的结构体,这篇文章来分析一下类的结构以及类的底层原理。 类的本质 类的本质 我们在main函数中写入以上代码,然后利用clang对其进行反编译,可以得到c文件 可以看到底层使用Class接…...
Android 万能AI证件照 v1.3.2
在日常的生活和工作场景里,证件照的身影随处可见。找工作投简历时,它是展现你形象的 “第一张名片”;办理各类证件,缺了它可不行;参加各种考试报名,同样需要它。可以说,证件照虽小,却…...
【Java】封装在 Java 中是怎样实现的?
包 关于包有两个关键字 package : 声明当前类属于哪个包 和 import : 允许当前类使用其他类或接口时不使用全限定名 , 也就是导包 . IDEA 的普通项目文件包括 src : 包含源码和资源文件 和 out : 包含编译产物字节码文件 . 在 IDEA 开发环境建包会在 src 源码目录中生成 , 可…...
牛客网 NC14736 双拆分数字串 题解
牛客网 NC14736 双拆分数字串 题解 题目分析 解题思路 通过分析,我们可以发现: 当n≤3时,无法构造出双拆分数字串,因为数字位数太少对于n>3的情况,我们可以构造两种特殊形式: 当n为奇数时,…...
超长文本注意力机制如何突破传统 O(n²) 瓶颈
介绍了当前在超长文本(可达百万级及以上 Token)生成与预测中,注意力机制如何突破传统 O(n) 瓶颈,并阐释多种高效注意力算法如何支持 超长上下文处理能力。 概览 当前主流 Transformer 在处理长序列时,由于每个 Token…...
异丙肌苷市场:现状、挑战与未来展望
摘要 本文聚焦异丙肌苷市场,深入分析了其市场规模与增长趋势、应用价值与市场驱动因素、面临的挑战以及竞争格局。异丙肌苷作为一种具有重要应用价值的改性核苷衍生物,在药物研发和治疗领域展现出潜力,但市场发展也面临诸多挑战。文章最后为…...
JAVA面向对象——对象和类的基本语法
JAVA面向对象——对象和类的基本语法 一、面向对象编程基础 1. 程序中的数据存储方式 基本类型:变量(如 int max 15;)。数据结构:数组(一维/二维)、对象(特殊数据结构,用于存储复…...
【windows】音视频处理工具-FFmpeg(合并/分离)
一、FFmpeg介绍 FFmpeg是一个开源的跨平台音视频处理框架。 法国计算机程序员 Fabrice Bellard 于 2000 年创建。 “FF”(代表 “Fast Forward”,快进之意)与 “mpeg”(流行的视频压缩标准 MPEG,即运动图像专家组&am…...
Java并发编程:从基础到高级实战
在现代软件开发中,并发编程已成为不可或缺的核心技能。随着多核处理器的普及和分布式系统的发展,能否编写高效、线程安全的并发程序直接决定了应用程序的性能和可靠性。Java作为一门成熟的企业级编程语言,提供了丰富的并发编程工具和API&…...
在 Excel 中使用东方仙盟软件————仙盟创梦IDE
安装插件 用仙盟创梦编写插件代码 源码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ExcelDna.Integration;namespace 东方仙盟.仙盟创梦IDE_招标系统 {public static class 仙盟创梦_招标专…...
win7无线网络名称显示为编码,连接对应网络不方便【解决办法】
使用多个网络时可能需要切换到打印机的网络来打印东西,但是win7的编码问题导致不知道哪个网络是对应网络,可以使用批处理命令来自动连接道指定网络 将这个代码用文本文件打开后粘贴,然后另存为ansi格式的bat文件 代码中使用两种方式进行连接…...
.NET 10 - 尝试一下Minimal Api的Validation新特性
1.简单介绍 2025年11月微软将会发布.NET10,这是LTS(Long Term Support)版本。当前.NET10已经处于Preview4版本,微软对Runtime, Library, SDK, C#, Asp.NET Core, MAUI等都做了很多enhancement。近些年微软对Minimal Api一直在持续地更新。在.NET8中, Mi…...
C# Task 与 SynchronizationContext
示例代码 using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks;namespace Test {internal class Program{static void Main(string[] args){_mainThreadSynchronizationContext new ThreadSynchronizationContext(&qu…...
iOS Runtime与RunLoop的对比和使用
Runtime 机制 核心概念 Objective-C 的动态特性:Objective-C 是一门动态语言,很多工作都是在运行时而非编译时决定的消息传递机制:方法调用实际上是发送消息 objc_msgSend(receiver, selector, ...)方法决议机制:动态方法解析、…...
JavaSenderMail发送邮件(QQ及OFFICE365)
前言 这是今天处理的公司安排的一个任务:客户系统发送offices365邮件报错535 之前没怎么解除邮件业务,于是先搭个简单的QQ邮件Demo熟悉一下吧,没有啥公网内网的麻烦(之前听说有内网限制,我还处理了一些环境上的问题&…...
八股文--JVM(2)
⭐️⭐️6.类加载 类加载器 JVM只会运行二进制文件,类加载器的作用就是将字节码加载到JVM中,从而让程序启动 1.启动类加载器 ----JAVA_HOME/jre/libC编写加载的是JAVA_HOME/jre/lib 2.拓展类加载器 ----JAVA_HOME/jre/lib/ext 3.应用类加载器 ----C…...
【HTML-3】HTML 中的水平线与换行:基础元素详解
在网页设计中,合理的布局和内容分隔对于提升用户体验至关重要。HTML 提供了两个简单但强大的元素来实现这些功能:水平线 (<hr>) 和换行 (<br>)。本文将深入探讨这两个元素的用法、最佳实践以及现代替代方案。 1. 水平线 <hr> 元素 1…...
绿色云计算:数字化转型与可持续发展的完美融合
目录 引言 绿色云计算的概念与定义 云计算的环境影响与绿色云计算的重要性 绿色云计算的技术实践与策略 绿色云计算的案例研究与最佳实践 绿色云计算的挑战与限制 绿色云计算的未来趋势与预测 结论与展望 引言 随着云计算技术的迅猛发展和广泛应用,其环境影…...
AMO——下层RL与上层模仿相结合的自适应运动优化:让人形行走操作(loco-manipulation)兼顾可行性和动力学约束
前言 自从去年24年Q4,我司侧重具身智能的场景落地与定制开发之后 去年Q4,每个月都会进来新的具身需求今年Q1,则每周都会进来新的具身需求Q2的本月起,一周不止一个需求 特别是本周,几乎每天都有国企、名企通过我司找到…...