【FFmpeg从入门到精通】第二章-FFmpeg工具使用基础
1 ffmpeg常用命令
ffmpeg在做音视频编解码时非常方便,所以在很多场景下转码使用的是ffmpeg,通过 ffmpeg --help可以看到 ffmpeg 常见的命令大概分为6个部分,具体如下。
- ffmpeg信息查询部分
- 公共操作参数部分
- 文件主要操作参数部分
- 视频操作参数部分
- 音频操作参数部分
- 字幕操作参数部分
ffmpeg信息查询部分的主要参数具体如下:
ffmpeg [options] [[infile options]-i infile]... {[outfile options] outfile}..
通过ffmpeg --help查看到的help信息是ffmpeg命令的基础信息,如果想获得高级参数部分,那么可以通过使用ffmpeg --help long参数来查看,如果希望获得全部的帮助信息,那么可以通过使用ffmpeg --help full参数来获得。
ffmpeg --help
ffmpeg --help long
ffmpeg --help full
通过-L参数,可以看到ffmpeg目前所支持的license协议;通过-version可以查看 ffmpeg的版本,包括子模块的详细版本信息,如libavformat、libavcodec、libavutillibavfilter、libswscale、libswresample 的版本:
使用ffmpeg转码,有时候可能会遇到无法解析的视频文件或者无法生成视频文件,报错提示不支持生成对应的视频文件,这时候就需要查看当前使用的fmpeg是否支持对应的视频文件格式,需要使用ffmpeg -formats参数来查看:
ffmpeg -formats
根据上面输出的信息可以看到,输出的内容分为3个部分,具体如下
- 第一列是多媒体文件封装格式的Demuxing支持与Muxing 支持
- 第二列是多媒体文件格式
- 第三列是文件格式的详细说明
使用ffmpeg命令时,可能会出现fmpeg不支持某种编码格式或者某种解码格式的错误提示信息,这种错误常见于并未将该编码器或者解码器集成到ffmpeg中,若想查看ffmpeg是否支持H.264编码或者解码,可以通过ffmpeg -codecs 查看全部信息,也可以通过 ffmpeg -encoders査看 ffmpeg是否支持H.264编码器,或者通过 ffmpeg -decoders查看ffmpeg是否支持H.264解码器。
ffmpeg -decoders 命令行执行后,输出如下:
输出信息中包含了三部分内容,具体如下。
- 第一列包含6个字段,第一个字段用来表示此编码器为音频、视频还是字幕,第二个字段表示帧级别的多线程支持,第三个字段表示分片级别的多线程,第四个字段表示该编码为试验版本,第五个字段表示 draw horiz band 模式支持,第六个字段表示直接渲染模式支持
- 第二列是编码格式
- 第三列是编码格式的详细说明
ffmpeg -encoders 命令执行后,输出如下
输出信息中同样包含了三部分内容,具体如下
- 第一列包含6个字段,第一个字段用来表示此编码器为音频、视频还是字幕,第二个字段表示帧级别的多线程支持,第三个字段表示分片级别的多线程,第四个字段表示该编码为试验版本,第五个字段表示 draw horiz band 模式支持,第六个字段表示直接渲染模式支持
- 第二列是编码格式
- 第三列是编码格式的详细说明
除了查看ffmpeg支持的封装(Muxer)格式与解封装(Demuxer)格式、编码(Encoder)类型与解码(Decoder)类型,还可以通过ffmpeg -flters查看 ffmpeg 支持哪些滤镜:
输出信息的内容分为四列,具体如下
- 第一列总共有3个字段,第一个字段是时间轴支持,第二个字段是分片线程处理支持,第三个字段是命令支持
- 第二列是滤镜名
- 第三列是转换方式,如音频转音频,视频转视频,创建音频,创建视频等操作
- 第四列是滤镜作用说明
通过 ffmpeg --help full命令,可以査看ffmpeg 支持的所有封装(demuxer、muxer)格式,编解码器(encoders、decoders)和滤镜处理器(filters)。如果要了解 ffmpeg 支持的具体某一种 demuxer、muxer类型,可以通过 ffmpeg -h查看该类型的详细参数,包括encoder、decoder 所支持的操作参数,fiter所支持的参数,下面就列举几个对应的例子。
1)查看FLV封装器的参数支持(ffmpeg -h muxer=flv):
ffmpeg -h muxer=flv
从输出的帮助信息中可以看到,FLV的muxer的信息包含两大部分,具体如下
- 第一部分为FLV封装的默认配置描述,如扩展名、MIME类型、默认的视频编码格式、默认的音频编码格式
- 第二部分为FLV 封装时可以支持的配置参数及相关说明
2)查看 flv解封装器的参数支持(ffmpeg -h demuxer=flv):
ffmpeg -h demuxer=flv
从帮助信息中可以看到,FLV的demuxer的信息包含两大部分,具体如下
- 第一部分为 FLV 解封装默认的扩展文件名
- 第二部分为FLV 解封装设置的参数及相关说明
3)查看H.264(AVC)的编码参数支持(ffmpeg -h encoder=h264):
ffmpeg -h encoder=h264
从帮助信息可以看到,H.264(AVC)的编码参数包含两大部分,具体如下。
- 第一部分为H.264所支持的基本编码方式、支持的多线程编码方式(例如帧级别多线程编码或 Slice 级别多线程编码)、编码器所支持的像素的色彩格式
- 第二部分为编码的具体配置参数及相关说明
4)查看H.264(AVC)的解码参数支持(ffmpeg -h decoder=h264):
ffmpeg -h decoder=h264
从帮助信息可以看到,H.264(AVC)的解码参数查看包含两大部分,具体如下
- 第一部分为解码H.264时可以采用的常规支持、多线程方式支持(帧级别多线程解码或Slice级别多线程解码)
- 第二部分为解码 H.264时可以采用的解码参数及相关说明
5)查看 colorkey 滤镜的参数支持(ffmpeg -h filter=colorkey),输出内容如下
ffmpeg -h filter=colorkey
从帮助信息中可以看到,colorkey滤镜参数查看信息包含两大部分,具体如下
- colorkey所支持的色彩格式信息,colorkey所支持的多线程处理方式,输入或输出支持
- colorkey所支持的参数及说明
1.1 ffmpeg 的封装转换
ffmpeg的封装转换(转封装)功能包含在AVFormat模块中,通过libavformat库进行Mux和Demux操作;多媒体文件的格式有很多种,这些格式中的很多参数在Mux与Demux的操作参数中是公用的,下面就来详细介绍一下这些公用的参数。
参数 | 类型 | 说明 |
---|---|---|
avioflags | 标记 | format 的缓冲设置,默认为 0,就是有缓冲 |
direct | 标记 | 无缓冲状态 |
probesize | 整数 | 在进行媒体数据处理前获得文件内容的大小,可用在预读取文件头时提高速度,也可以设置足够大的值来读取到足够多的音视频数据信息 |
fflags | 标记 | |
flush_packets | 标记 | 立即将 packets 数据刷新写入文件中 |
genpts | 标记 | 输出时按照正常规则产生 pts |
nofillin | 标记 | 不填写可以精确计算缺失的值 |
igndts | 标记 | 忽略 dts |
discardcorrupt | 标记 | 丢弃损坏的帧 |
sortdts | 标记 | 尝试以 dts 的顺序为准输出 |
keepside | 标记 | 不合并数据 |
fastseek | 标记 | 快速 seek(定位)操作,但是不够精确 |
latm | 标记 | 设置 RTP MP4_LATM 生效 |
nobuffer | 标记 | 直接读取或写出,不存入 buffer,用于在直播采集时降低延迟 |
bitexact | 标记 | 不写入随机或者不稳定的数据 |
seek2any | 整数 | 支持随意位置 seek,这个 seek 不以 keyframe 为参考 |
analyzeduration | 整数 | 指定解析媒体所需要花费的时间,这里设置的值越高,解析越准确,如果在直播中为了降低延迟,这个值可以设置得低一些 |
codec_whitelist | 列表 | 设置可以解析的 codec 的白名单 |
format_whitelist | 列表 | 设置可以解析的 format 的白名单 |
output_ts_offset | 整数 | 设置输出文件的起始时间 |
1.2 ffmpeg 的转码参数
ffmpeg编解码部分的功能主要是通过模块AVCodec来完成的,通过libavcodec库进行Encode与 Decode 操作。多媒体编码格式的种类有很多,但是还是有很多通用的基本操作参数设置,下面就来详细介绍一下这些公用的参数。
参数 | 类型 | 说明 |
---|---|---|
b | 整数 | 设置音频与视频码率,可以认为是音视频加起来的码率,默认为 200kbit/s。使用这个参数可以根据 b:v 设置视频码率,b:a 设置音频码率 |
ab | 整数 | 设置音频的码率,默认是 128kbit/s |
g | 整数 | 设置视频 GOP(可以理解为关键帧间隔)大小,默认是 12 帧一个 GOP |
ar | 整数 | 设置音频采样率,默认为 0 |
ac | 整数 | 设置音频通道数,默认为 0 |
bf | 整数 | 设置连续编码为 B 帧的个数,默认为 0 |
maxrate | 整数 | 最大码率设置,与 bufsize 一同使用即可,默认为 0 |
minrate | 整数 | 最小码率设置,配合 maxrate 与 bufsize 可以设置为 CBR 模式,平时很少使用,默认为 0 |
bufsize | 整数 | 设置控制码率的 buffer 的大小,默认为 0 |
keyint_min | 整数 | 设置关键帧最小间隔,默认为 25 |
sc_threshold | 整数 | 设置场景切换支持,默认为 0 |
me_threshold | 整数 | 设置运动估计阈值,默认为 0 |
mb_threshold | 整数 | 设置宏块阈值,默认为 0 |
profile | 整数 | 设置音视频的 profile,默认为 -99 |
level | 整数 | 设置音视频的 level,默认为 -99 |
timecode_frame_start | 整数 | 设置 GOP 帧的开始时间,需要在 non-drop-frame 默认情况下使用 |
channel_layout | 整数 | 设置音频通道的布局格式 |
threads | 整数 | 设置编解码工作的线程数 |
1.3 ffmpeg 的基本转码原理
ffmpeg 工具的主要用途为编码、解码、转码以及媒体格式转换,ffmpeg 常用于进行转码操作。
通过前两节介绍的参数,可以设置转码的相关参数,如果转码操作涉及封装的改变,则可以通过设置AVCodec与AVFormat的操作参数进行封装与编码的改变。
ffmpeg -i input.mp4 -vcodec mpeg4 -b:v 200k -r 15 -an output.avi
从输出信息中可以看到,以上输出的参数中使用了前面介绍过的参数,具体如下。
- 转封装格式从MP4格式转换为AVI格式
- 视频编码从 MPEG4转换为 MPEG4 格式
- 视频码率从原来的1027kbit/s转换为200kbit/s
- 视频帧率从原来的23.98fps转换为15fps
- 转码后的文件中不包括音频(-an 参数)
2 ffprobe 常用命令
ffprobe的参数较多
3 ffplay 常用命令
3.1 ffplay 常用参数
参数 | 类型 | 说明 |
---|---|---|
x | 整数 | 强制设置视频显示窗口的宽度 |
y | 整数 | 强制设置视频显示窗口的高度 |
s | 整数 | 设置视频显示的宽高 |
fs | 整数 | 强制全屏显示 |
an | 整数 | 屏蔽音频 |
vn | 整数 | 屏蔽视频 |
sn | 整数 | 屏蔽字幕 |
ss | 整数 | 根据设置的秒进行定位拖动 |
t | 整数 | 设置播放视频 / 音频的长度 |
bytes | 整数 | 设置定位拖动的策略,0 为不可拖动,1 为可拖动,-1 为自动 |
nodisp | 整数 | 关闭图形化显示窗口 |
f | 整数 | 强制使用设置的格式进行解析 |
window_title | 整数 | 设置显示窗口的标题 |
af | 整数 | 设置音频的滤镜 |
codec | 整数 | 强制使用设置的 codec 进行解码 |
autorotate | 整数 | 自动旋转视频 |
3.2 ffplay 高级参数
参数 | 类型 | 说明 |
---|---|---|
ast | 整数 | 设置将要播放的音频流 |
vst | 整数 | 设置将要播放的视频流 |
sst | 整数 | 设置将要播放的字幕流 |
stats | 整数 | 输出多媒体播放状态 |
fast | 整数 | 非标准化规范的多媒体兼容优化 |
sync | 整数 | 音视频同步设置可根据音频时间、视频时间或者外部扩展时间进行参考 |
autoexit | 整数 | 多媒体播放完毕之后自动退出 ffplay,ffplay 默认播放完毕之后不退出播放器 |
exitonkeydown | 整数 | 当有按键按下事件产生时退出 ffplay |
exitonmousedown | 整数 | 当有鼠标按键事件产生时退出 ffplay |
loop | 整数 | 设置多媒体文件循环播放的次数 |
framedrop | 整数 | 当 CPU 资源占用过高时,自动丢帧 |
infbuf | 整数 | 设置无极限的播放器 buffer,这个选项常见于实时流媒体播放场景 |
vf | 整数 | 视频滤镜设置 |
acodec | 整数 | 强制使用设置的音频解码器 |
vcodec | 整数 | 强制使用设置的视频解码器 |
scodec | 整数 | 强制使用设置的字幕解码器 |
3.3 ffplay 的数据可视化分析应用
相关文章:
【FFmpeg从入门到精通】第二章-FFmpeg工具使用基础
1 ffmpeg常用命令 ffmpeg在做音视频编解码时非常方便,所以在很多场景下转码使用的是ffmpeg,通过 ffmpeg --help可以看到 ffmpeg 常见的命令大概分为6个部分,具体如下。 ffmpeg信息查询部分公共操作参数部分文件主要操作参数部分视频操作参数…...
论文阅读:2022 ACL TruthfulQA: Measuring How Models Mimic Human Falsehoods
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 TruthfulQA: Measuring How Models Mimic Human Falsehoods https://arxiv.org/pdf/2109.07958 https://www.doubao.com/chat/3130551217163266 https://github.com/sylin…...
基于C++(MFC)实现的文件管理系统
基于 MFC 的文件管理系统 第一章 题目解读与要求分析 1 实习题目 实现一个文件系统。 2 功能要求 界面上显示树形目录结构 a)根节点是“我的电脑” b)“我的电脑”下有几个盘符(C、D、E 等)就有几个子节点,递归…...
selenium 实现模拟登录中的滑块验证功能
用python在做数据采集过程中,经常需要用到模拟登录,经常遇到各种图片、文字甚至短信等验证,如果能通过脚本的方便实现验证,就可以自动帮我更高效地收集数据。Selenium 是一个开源的 Web 自动化测试工具,最初是为网站自…...
Oracle 19c部署之数据库软件安装(二)
在完成了Oracle Linux 9的初始化配置之后,我们准备安装Oracle 19c数据库软件。 Oracle数据库支持两种主要的安装方式:图形化安装和静默安装。这两种方法各有优缺点,选择哪种取决于你的具体需求、环境配置以及个人偏好。 图形化安装 图形化安…...
Paramiko 使用教程
目录 简介安装 Paramiko连接到远程服务器执行远程命令文件传输示例 简介 Paramiko 是一个基于 Python 的 SSH 客户端库,它提供了在网络上安全传输文件和执行远程命令的功能。本教程将介绍 Paramiko 的基本用法,包括连接到远程服务器、执行命令、文件传输…...
从EOF到REOF:如何用旋转经验正交函数提升时空数据分析精度?
目录 1. 基本概念与原理2. 应用场景3. 与传统EOF的区别4. 技术实现5. 其他领域中的“REOF”参考资料 REOF 的输入是多个地区在不同时间的气候数据(如温度或降雨量),它的作用是通过旋转计算找出这些数据中最主要的变化规律,输出则是…...
VS-Code创建Vue3项目
1 创建工程文件 创建一个做工程项目的文件夹 如:h5vue 2 cmd 进入文件 h5vue 3 输入如下命令 npm create vuelatest 也可以输入 npm create vitelatest 4 输入项目名称 项目名称:自已输入 回车 可以按键盘 a (全选) 回车: Playwright…...
JESD204B接收器核心实现和系统级关键细节
目录 1.通道偏移 2.弹性缓冲器的实现 3.接受延迟 4.RX端到端延迟 5.计算端到端延迟 6.实现可重复的延迟 1.通道偏移 JESD204B接收器核心已经过验证,其功能具有高达8个字节的通道到通道偏斜。 2.弹性缓冲器的实现 在JESD204B设备中,接收通道对齐弹性缓冲区是在分布式…...
NLP高频面试题(四十七)——探讨Transformer中的注意力机制:MHA、MQA与GQA
MHA、MQA和GQA基本概念与区别 1. 多头注意力(MHA) 多头注意力(Multi-Head Attention,MHA)通过多个独立的注意力头同时处理信息,每个头有各自的键(Key)、查询(Query)和值(Value)。这种机制允许模型并行关注不同的子空间上下文信息,捕捉复杂的交互关系。然而,MHA…...
k230学习笔记-疑难点(1)
1.出现boot failed with exit code 19: 需要将k230开发板的btoot0拨到ON 2.出现boot failed with exit code 13: 说明k230开发板的固件烧录已经丢失,需要重新烧录 *** 注意重新烧录时需要将btoot0重新拨到OFF,才会弹出加载固件需要的通用串行总线&…...
JavaScript性能优化实战:让你的Web应用飞起来
JavaScript性能优化实战:让你的Web应用飞起来 在前端开发中,JavaScript性能优化是提升用户体验的关键。一个性能良好的应用不仅能吸引用户,还能提高转化率和用户留存率。今天,我们就来深入探讨JavaScript性能优化的实战技巧&…...
金融数据库转型实战读后感
荣幸收到老友太保科技有限公司数智研究院首席专家林春的签名赠书。 这是国内第一本关于OceanBase数据库实际替换过程总结的的实战书。打个比方可以说是从战场上下来分享战斗经验。读后感受颇深。我在这里讲讲我的感受。 第三章中提到的应用改造如何降本。应用改造是国产化替换…...
血脂代谢通路(医学-计算机系统对照方式)
血脂代谢通路(医学-计算机系统对照方式) 整合所有类比,用医学-计算机系统对照的方式完整描述血脂代谢通路,采用分步骤的对照结构: 1. 食物摄入(数据输入层) # 医学术语: 膳食脂肪摄入 → 计算机类比: 原始数据输入 …...
git更新的bug
文章目录 1. 问题2. 分析 1. 问题 拉取了一个项目后遇到了这个问题, nvocation failed Server returned invalid Response. java.lang.RuntimeException: Invocation failed Server returned invalid Response. at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil…...
直流电源基本原理
整流电路 在构建整流电路时,要选择合适参数的二极管 If是二极管能够通过电流的能力,也是最大整流的平均电流。 还要考虑二极管的反向截至电压。 脉动系数电压交流幅值/直流平均电压(越小越好) 三相整流电路优点: …...
Git -> git merge --no-ff 和 git merge的区别
git merge --no-ff <branch> 与 git merge <branch> 的区别 核心区别 git merge <branch>: 默认使用Fast-forward模式(若可行)不创建额外的合并提交记录合并后看不出曾经存在过分支 git merge --no-ff <branch>:强制创建一个…...
名胜古迹传承与保护系统(springboot+ssm+vue+mysql)含运行文档
名胜古迹传承与保护系统(springbootssmvuemysql)含运行文档 名胜古迹传承与保护系统是一个专注于文化遗产保护和管理的综合性平台。系统提供了一系列功能模块,包括名胜古迹管理、古迹预约管理、古迹故事管理、举报信息管理、保护措施管理、古迹讨论、管理员管理、版…...
windows资源管理器左边导航窗格增加2个项,windows10/11有效
下面文档存为.reg文件, Windows Registry Editor Version 5.00; 根 CLSID —— 名称、图标、固定到导航窗格 [HKEY_CURRENT_USER\Software\Classes\CLSID\{C1A3F2D2-BD2D-4D60-82C5-394F01753A5F}] "手机系统" "System.IsPinnedToNamespaceTree&quo…...
【八股文】基于源码聊聊ConcurrentHashmap的设计
版本演进 jdk 1.7中是分段锁的设计,将哈希表划分为多个segment,每个段独立加锁,锁粒度为段级别。 操作需两次哈希,第一次定位段,第二次定位桶内链表。这种实现方式的缺点就是段数量固定,扩容复杂…...
Mysql--基础知识点--93--两阶段提交
1 两阶段提交 以update语句的具体执行过程为例: 具体更新一条记录 UPDATE t_user SET name ‘xiaolin’ WHERE id 1;的流程如下: 1.执行器负责具体执行,会调用存储引擎的接口,通过主键索引树搜索获取 id 1 这一行记录&#…...
数字化招标采购系统怎么让招采协同更高效?
招标采购领域的数智化转型正在引发行业革命性变革。从传统线下模式到全流程电子化,再到当前数智化阶段的超时空协同,行业的演进路径清晰展现了技术与管理的深度融合。郑州信源信息数智化招采系统作为行业标杆,其创新实践为未来协同工作方式的…...
池塘计数(BFS)
题目描述 由于最近的降雨,光头强的田地里的各个地方都积水了,用 NM(1≤N≤100;1≤M≤100)NM(1≤N≤100;1≤M≤100) 的正方形的矩形表示。每个广场都有水 W 或旱地 .。光头强想知道他的田地里形成了多少池塘。池塘是指一组相邻的有…...
《Science》观点解读:AI无法创造真正的智能体(AI Agent)
无论是想要学习人工智能当做主业营收,还是像我一样作为开发工程师但依然要运用这个颠覆开发的时代宠儿,都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,入行门槛低&#x…...
从零开始学A2A四:A2A 协议的安全性与多模态支持
文章目录 A2A 协议的安全性与多模态支持一、A2A 协议安全机制1. 认证机制2. 授权机制3. 数据加密 二、多模态交互支持1. 文本交互2. 音频支持3. 视频与图像处理4. 复合数据格式 三、安全与多模态最佳实践1. 安全性实践2. 多模态实践 四、与 MCP 的对比1. 安全机制对比2. 多模态…...
一种大位宽加减法器的时序优化
平台:vivado2018.3 芯片:xc7a100tfgg484-2 (active) 在FPGA中实现超高位宽加减法器(如256)时,时序收敛常成为瓶颈。由于进位链(Carry Chain)跨越多级逻辑单元,关键路径延迟会随位宽…...
【专业解读:Semantic Kernel(SK)】大语言模型与传统编程的桥梁
目录 Start:什么是Semantic Kernel? 一、Semantic Kernel的本质:AI时代的操作系统内核 1.1 重新定义LLM的应用边界 1.2 技术定位对比 二、SK框架的六大核心组件与技术实现 2.1 内核(Kernel):智能任务调度中心 2…...
InfiniBand与RoCEv2负载均衡机制的技术梳理与优化实践
AI技术的高速迭代正驱动全球算力格局进入全新纪元。据IDC预测,未来五年中国智能算力规模将以超50%的年复合增长率爆发式扩张,数据中心全面迈入“智能算力时代”。然而,海量AI训练、实时推理等高并发场景对底层网络提出了更严苛的挑战——超大…...
Vue与React组件化设计对比
组件化是现代前端开发的核心思想之一,而Vue和React作为两大主流框架,在组件化设计上既有相似之处,也存在显著差异。本文将从语法设计、数据管理、组件通信、性能优化、生态系统等多个方向,结合实例详细对比两者的特点。 一、模板…...
UE中通过AAIController::MoveTo函数巡逻至目标点后没法正常更新巡逻目标点
敌人巡逻的逻辑如下: 敌人在游戏一开始的时候就通过moveto函数先前往首先设定的patroltarget目标,在距离patroltarget距离为patroradius(200unit)之内时就可以通过checkpatroltarget函数更新新的patroltarget目标,随后前往新的pat…...
Python-细节知识点range函数的详解
在 Python 中,range 是一个内置函数,用于生成一个不可变的整数序列,通常用于控制循环次数或生成数值范围。以下是详细说明: 基本语法 range(stop) # 生成 [0, stop) 的整数,步长为1 range(start, stop) …...
git rebase的使用
我的使用 git checkout feature # 本地分支 git pull origin main --rebase # 目标分支 git pull origin feature --rebase git push origin featuregit rebase 是 Git 中用于重写提交历史的强大工具,可将分支的提交移动到新的基点上,使历史更线性。以…...
CMake Error at build/_deps/glog-src/CMakeLists.txt:1 (cmake_minimum_required):
这个错误提示意思是你当前系统上安装的 CMake 版本过低,不满足项目的要求。根据错误信息: CMake Error at build/_deps/glog-src/CMakeLists.txt:1 (cmake_minimum_required): CMake 3.22 or higher is required. You are running version 3.16.3 项目…...
MATLAB 控制系统设计与仿真 - 34
多变量系统知识回顾 - MIMO system 这一章对深入理解多变量系统以及鲁棒分析至关重要 首先,对于如下系统: 当G(s)为单输入,单输出系统时: 如果: 则: 所以 当G(s)为MIMO时,例如2X2时ÿ…...
【Unity】JSON数据的存取
这段代码的结构是为了实现 数据的封装和管理,特别是在 Unity 中保存和加载玩家数据时。以下是对代码设计的逐步解释: 1. PlayerCoin 类 PlayerCoin 是一个简单的数据类,用于表示单个玩家的硬币信息。它包含以下字段: count&…...
利用 Java 爬虫按关键字搜索淘宝商品
在电商领域,通过关键字搜索商品是常见的需求。淘宝作为国内知名的电商平台,提供了丰富的商品搜索功能。本文将详细介绍如何使用 Java 爬虫技术按关键字搜索淘宝商品,并获取搜索结果的详细信息。 一、准备工作 1. 注册淘宝开放平台账号 要使…...
【C】初阶数据结构11 -- 选择排序
本篇文章主要讲解经典排序算法 -- 选择排序 目录 1 算法思想 2 代码 3 时间复杂度与空间复杂度分析 1) 时间复杂度 2) 空间复杂度 1 算法思想 选择排序是一种在一段区间里面选择最小的元素和最大的元素的一种排序算法。假设这里排升序&#…...
【Semantic Kernel核心组件】Plugin:连接AI与业务逻辑的桥梁
目录 一、Plugin是什么?为什么它是SK的核心? 一、Plugin的核心机制与Python实现 1. 插件类型:语义函数与本地函数 语义函数(Semantic Function) 本地函数(Native Function) 2. Plugin的注…...
《基于神经网络实现手写数字分类》
《基于神经网络实现手写数字分类》 一、主要内容: 1、通过B站陈云霁老师的网课,配合书本资料,了解神经网络的基本组成和数学原理。 2、申请云平台搭建实验环境 3、基于5个不同的实验模块逐步理解实验操作步骤,并实现不同模块代码…...
车载诊断架构 --- 车载诊断概念的深度解读
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
四、探索LangChain:连接语言模型与外部世界的桥梁
一、什么是 LangChain LangChain 是一个开源的软件框架,旨在帮助开发者高效构建和部署基于**大型语言模型(LLM)**的应用程序。它通过提供一系列工具、组件和接口,简化了从模型调用、提示工程到复杂应用开发的全流程,使得开发者能够快速将 LLM 集成到实际场景中。 1. 核心…...
LangChain4j中的Chat与语言模型API详解:构建高效对话系统的利器
LangChain4j中的Chat与语言模型API详解:构建高效对话系统的利器 引言:大模型时代的开发利器 在人工智能快速发展的今天,大型语言模型(LLM)已成为构建智能应用的核心组件。LangChain4j作为Java生态中领先的LLM集成框架…...
C++中const与constexpr的区别
在C中,const和constexpr都用于定义常量,但它们的用途和行为有显著区别: ### 1. **初始化时机** - **const**:表示变量是只读的,但其值可以在**编译时或运行时**初始化。 cpp const int a 5; // 编译…...
长亭2月公开赛Web-ssrfme
环境部署 拉取环境报错: 可以尝试拉取一下ubuntu:16.04,看是否能拉取成功 将wersion:"3"删掉 我拉去成功之后,再去拉取环境,成功! 访问环境 测试ssrf 源码 <?php highlight_file(__file__…...
AI日报 - 2025年4月18日
🌟 今日概览(60秒速览) ▎🤖 AGI探讨 | 专家激辩AGI定义与实现时间点,Causal AI被视为关键一步,o3模型预测2027年实现引关注。 Causal AI强调因果关系而非模式;专家清单推荐不同模型适用场景;AGI定义及何时…...
Spring IoC 详解
在 Spring IoC& DI 详解 中对 IoC已经有了介绍,下面对 IoC 进行详细介绍。 IoC,即控制反转,在之前我们编写程序的时候,我们都是自己 new 出来一个对象,然后自己去管理这个对象,但是这有时候有些麻烦&a…...
oracle查询当前用户所有字段和表
在 Oracle 数据库中,可以通过查询数据字典视图来获取某个表的字段(列)信息。以下是常用的查询方法: 查询当前用户下的表字段 如果您想查看当前用户下某个表的字段信息,可以查询 USER_TAB_COLUMNS 视图: SE…...
ACL(访问控制列表)
ACL(访问控制列表) 1、基础内容 访问控制列表ACL(Access ControlList)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。通过一系列规则来匹配报文,如…...
C语言数据结构---二叉树---堆的应用
1.建堆(向上调整) 1.1大堆 #include<stdio.h> void swap(int *p1,int *p2) {int temp *p1;*p1 *p2;*p2 temp; } void Ajustup(int *a,int child)//向上调整 {int parent (child - 1) / 2;while (child > 0){if (a[child] > a[parent]…...
在Linux下安装Gitlab
在Cenos7下安装GitLab 在ssh下安装 官方安装文档:https://gitlab.cn/install/?versionce 1. 使用阿里YUM 镜像云 下载 https://mirrors.aliyun.com/repo/Centos-7.repo替换 /etc/yum.repos.d/CentOS-Base.repo在目录/etc/yum.repos.d/下执行如下命令: curl …...