关于ffmpeg的简介和使用总结
主要参考:
全网最全FFmpeg教程,从新手到高手的蜕变指南 - 知乎 (zhihu.com)
FFmpeg入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。-CSDN博客
FFmpeg教程(超级详细版) - 个人文章 - SegmentFault 思否
FFmpeg 是一个开源的跨平台音视频处理框架,在多媒体领域堪称 “神器”。它如同一个万能工具箱,涵盖了录制、转换、流化等一系列音视频处理功能,支持诸如 AVI、MP4、MOV、FLV、WMV、MPEG、MKV 等海量音视频格式,并且能在 Windows、Mac OS、Linux 等多种操作系统上稳定运行。
最初由法国计算机程序员 Fabrice Bellard 于 2000 年创建,这个项目的名称是 “FF”(代表 “Fast Forward”,快进之意)与 “mpeg”(流行的视频压缩标准 MPEG,即运动图像专家组)的组合。后来由 Michael Niedermayer 接手并持续开发,众多来自 MPlayer 项目的开发者也参与其中,为 FFmpeg 添砖加瓦,使其逐渐成长为功能完备的强大工具。
和其他音视频处理软件相比,FFmpeg 优势显著。比如格式工厂,虽然操作相对简便,有图形化界面,但在功能深度和定制化程度上远不及 FFmpeg,像复杂的滤镜添加、精准的码率控制等高级操作难以实现;再看 Adobe Premiere,虽专业剪辑功能强大,可学习成本高、授权费用不菲,而 FFmpeg 免费开源,学习资源丰富,能满足从基础格式转换到高级编解码、滤镜处理等多样化需求。
FFmpeg是音视频领域的底层基础设施,无论是开发者还是普通用户(通过GUI工具间接使用),几乎所有的多媒体处理背后都有它的身影。掌握FFmpeg的基本用法,能高效解决音视频转码、编辑、流媒体等问题。
ffmpeg是什么语言写的
FFmpeg 主要是用 C 语言编写的,同时也包含少量 汇编语言(针对关键性能模块的优化)和 脚本语言(如 Shell、Python 用于构建和测试)。以下是详细说明:
核心语言构成
部分 语言 用途 主代码库 C 语言 实现音视频编解码、封装/解封装、滤镜处理等核心功能(占比90%以上)。 性能优化 汇编语言(ASM) 针对CPU指令集(如x86 SSE/AVX、ARM NEON)的硬件加速优化。 构建系统 Shell/Makefile 自动化编译配置(如configure脚本)。 测试工具 Python/Perl 部分测试脚本和工具开发(如fate测试框架)。 为什么选择C语言?
高性能:C语言直接操作硬件和内存,适合音视频编解码的高效处理。
跨平台:易于移植到嵌入式设备(如ARM)、桌面系统(Windows/macOS/Linux)等。
生态成熟:大量音视频标准库(如libx264、libvpx)均以C接口提供。
关键代码示例
C语言核心逻辑(解码示例)
// 简化的FFmpeg解码流程(C代码) AVFormatContext *fmt_ctx = avformat_alloc_context(); avformat_open_input(&fmt_ctx, "input.mp4", NULL, NULL); // 打开文件 AVCodecContext *codec_ctx = avcodec_alloc_context3(codec); avcodec_open2(codec_ctx, codec, NULL); // 初始化解码器 AVPacket pkt; av_read_frame(fmt_ctx, &pkt); // 读取数据包 avcodec_send_packet(codec_ctx, &pkt); // 发送到解码器
汇编优化(x86 SIMD示例)
; FFmpeg中H.264解码的x86 SIMD优化(片段) movdqu xmm0, [rsi] ; 加载16字节数据 paddw xmm0, xmm1 ; SIMD加法指令
其他语言的辅助角色
Python:用于测试和工具开发(如
ffmpeg-python
封装库)。Perl:历史代码中的少量脚本(如生成文档)。
Rust/Go:社区有封装库(如
go-ffmpeg
),但FFmpeg本身未使用。如何参与开发?
必备技能:
熟练使用C语言(指针、内存管理、多线程)。
了解音视频基础(编解码、容器格式)。
学习代码:
从简单模块入手(如
libavformat
中的文件读写)。提交补丁:
遵循FFmpeg的代码规范(如变量命名、提交日志格式)。
总结
FFmpeg的底层实现是C语言+汇编优化,确保了极致的性能和跨平台能力。如果需要调用FFmpeg的功能,可通过其C API,或使用高级语言(如Python)的封装库(如
ffmpeg-python
)。
嵌入式中能使用ffmpeg吗
在嵌入式系统中使用 FFmpeg 是可行的,但需要根据硬件资源和应用场景进行裁剪和优化。以下是关键要点和具体实施方案:
能否使用FFmpeg?
可以,但有条件: FFmpeg 本身支持跨平台,但嵌入式设备通常资源有限(内存、CPU性能),需通过以下方式适配:
代码裁剪:禁用非必需模块(如视频编解码器、滤镜)。
交叉编译:针对目标平台(如ARM Cortex-A/MIPS)编译。
硬件加速:利用芯片的编解码引擎(如Rockchip VPU、NVIDIA Jetson NVENC)。
适用场景
场景 推荐方案 低端MCU(无OS) 不推荐,FFmpeg依赖文件系统和动态内存,适合RTOS或裸机定制化轻量库(如TinyH264)。 嵌入式Linux(ARM-A) 裁剪后的FFmpeg + 硬件加速(如树莓派、瑞芯微RK系列)。 实时音视频处理 启用FFmpeg的快速解码模式(如-fast参数),或改用WebRTC(更低延迟)。 如何裁剪FFmpeg?
① 配置时禁用非必需功能
# 示例:仅启用H.264解码和MP3解码,禁用其他模块 ./configure \--enable-cross-compile \--arch=armv7-a \--target-os=linux \--enable-decoder=h264 \--enable-decoder=mp3 \--disable-avdevice \--disable-swresample \--disable-postproc \--disable-everything-else
关键选项:
--disable-everything
+ 按需启用模块。
--enable-small
:启用优化以减少内存占用。② 手动裁剪源文件
删除
libavcodec
中未使用的编解码器源码(如删除vp9.c
以减少体积)。替换动态内存分配为静态分配(需修改FFmpeg源码,风险较高)。
资源占用参考
配置 内存占用 存储占用 适用硬件 全功能FFmpeg >50MB RAM >20MB Flash 高性能SoC(如Jetson) 仅H.264解码+MP3解码 <10MB RAM <2MB Flash Cortex-A7(512MB RAM) 仅Opus音频解码 <1MB RAM <500KB Flash Cortex-M7(带MMU) 硬件加速集成
方案一:调用芯片厂商SDK
如Rockchip的
mpp
库、NVIDIA的V4L2
接口,通过FFmpeg的hwaccel
选项启用:ffmpeg -hwaccel rkmpp -i input.h264 output.yuv
方案二:使用VAAPI/VDPAU
在Linux嵌入式平台(如树莓派)启用GPU加速:
ffmpeg -hwaccel vaapi -i input.mp4 output.mp4
替代方案(资源极度受限时)
音频:
轻量库:Opus(编码)、libmad(MP3解码)。
视频:
纯解码:TinyH264(无B帧支持)。
硬件方案:直接调用芯片厂商的编解码API(如海思Hi35xx的SDK)。
实战示例:树莓派视频播放
① 安装裁剪版FFmpeg
编译时仅启用H.264和硬件加速 ./configure --enable-mmal --enable-decoder=h264 --enable-hwaccel=h264_mmal make -j4
② 播放视频流
使用硬件加速解码 ffmpeg -hwaccel mmal -i input.h264 -f sdl2 "Video Output"
注意事项
许可协议:FFmpeg部分模块为GPL,商用需注意合规性(可选用LGPL配置)。
实时性:默认FFmpeg不保证实时性,需调整线程模型和缓冲策略。
调试工具:使用
strace
监控系统调用,valgrind
检测内存泄漏。总结
能用,但需裁剪:FFmpeg适合资源较丰富的嵌入式Linux平台(如ARM Cortex-A),通过禁用非必需模块和启用硬件加速可大幅降低资源占用。
替代方案:对于MCU级设备,优先选择轻量库(如Opus、TinyH264)或硬件编解码芯片。
关键步骤:交叉编译、硬件加速集成、动态内存优化。
如果需要具体平台的配置示例(如STM32MP157或全志H3),可进一步提供细节!
嵌入式里编解码库推荐
在嵌入式系统中选择编解码库时,需综合考虑硬件资源(CPU性能、内存大小)、功耗、实时性和许可协议。以下是针对嵌入式环境的推荐编解码库,按音频和视频分类:
一、音频编解码库
轻量级语音编解码
库名称 格式/算法 特点 适用场景 Opus Opus 低延迟(<50ms),支持语音/音乐 VoIP、语音助手(如Alexa) Speex Speex 专为语音优化,低复杂度 对讲机、低功耗设备 Codec2 Codec2 超低比特率(2400bps) 军事、卫星通信 AMR-NB/WB AMR 3GPP标准,移动通信兼容 老旧嵌入式设备 音乐/通用音频
库名称 格式 特点 适用场景 libmad MP3 定点运算,低内存占用 MP3播放器 AAC ELD AAC 低延迟扩展,适合实时流 无线音频传输 TinyALSA PCM 轻量级ALSA接口,支持硬件加速 Linux嵌入式音频驱动 二、视频编解码库
软件编解码(无硬件加速)
库名称 格式 特点 适用场景 TinyH264 H.264 纯解码,适合MCU(需外部RAM) 低分辨率监控摄像头 libvpx VP8/VP9 开源,支持实时编码 WebRTC嵌入式终端 x264 H.264 裁剪后可适配ARM Cortex-A 视频录像机 uAVS3e AVS3 国产标准,低专利费 广电、监控设备 硬件加速方案
平台/芯片 支持编解码 特点 Rockchip H.265/H.264 支持4K解码(如RK3399) TI DaVinci H.264/MPEG-4 工业级稳定性(如DM8148) NXP i.MX VPU加速 低功耗(如i.MX8M Plus) Allwinner H.264 低成本(如V3s) 三、嵌入式专用工具链
开源框架
名称 功能 适用场景 GStreamer 模块化音视频流水线 复杂多媒体处理(如树莓派) FFmpeg 裁剪版(禁用非必需模块) 定制化需求 Live555 RTSP/RTP流媒体传输 网络摄像头 商业解决方案
名称 特点 典型客户 Dolby MS12 杜比音效编解码 高端智能音箱 ARM CMSIS Cortex-M DSP优化库 低功耗MCU(如STM32) Ittiam H.265/AV1硬件优化SDK 专业视频设备 四、选型建议
资源受限设备(MCU级别)
音频:Opus(实时语音)或 libmad(MP3播放)。
视频:TinyH264(仅解码) + 硬件加速芯片(如ESP32-CAM)。
内存优化:启用固定点运算(如Opus的
FIXED_POINT
模式)。中高端嵌入式(Linux SoC)
音频:GStreamer + ALSA插件(支持AAC/Opus)。
视频:FFmpeg裁剪版(保留H.264) + V4L2硬件加速。
示例命令(FFmpeg裁剪):
./configure --disable-everything --enable-decoder=h264 --enable-parser=h264 --enable-demuxer=avi
实时性要求高的场景
协议栈:WebRTC(Opus/VP8) + UDP传输。
延迟优化:禁用B帧、降低GOP大小。
五、实战示例
STM32 + Opus编码
// 使用libopus在STM32上编码语音 include <opus.h> OpusEncoder *encoder = opus_encoder_create(16000, 1, OPUS_APPLICATION_VOIP, &error); uint8_t output[100]; int bytes = opus_encode(encoder, pcm_data, frame_size, output, 100);
树莓派视频解码
使用GStreamer播放H.264流 gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264 ! rtph264depay ! h264parse ! omxh264dec ! autovideosink
六、注意事项
许可协议:
避免GPL库(如FFmpeg完整版),优先选择MIT/LGPL(如libvpx)。
硬件兼容性:
确认芯片是否支持硬件编解码(如海思Hi3518EV300的H.264加速)。
功耗管理:
编码时动态调整CPU频率(如DVFS技术)。
总结
语音首选:Opus(实时)、Speex(老旧设备)。
视频首选:TinyH264(低端)、libvpx(中端)、硬件加速(高端)。
开发框架:GStreamer(灵活)或 FFmpeg裁剪(高效)。
根据具体需求平衡性能、资源和成本,优先利用硬件加速以降低CPU负载。
相关文章:
关于ffmpeg的简介和使用总结
主要参考: 全网最全FFmpeg教程,从新手到高手的蜕变指南 - 知乎 (zhihu.com) FFmpeg入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。-CSDN博客 FFmpeg教程(超级详细版) - 个人文章 - S…...
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 08.阴影
阴影 没有阴影的渲染效果如下,看起来不真实: 有阴影的渲染效果如下,看起来真实: 显示阴影有两种方式,一种是原书中的方式,另一种是采用光线追踪技术,该技术可以参考ShaderToy学习笔记 08.阴…...
[面试]SoC验证工程师面试常见问题(七)低速接口篇
SoC验证工程师面试常见问题(七)低速接口篇 摘要:低速接口是嵌入式系统和 SoC (System on Chip) 中常用的通信接口,主要用于设备间的短距离、低带宽数据传输。相比高速接口(如 PCIe、USB 3.0),低速接口的传输速率较低(通常在 kbps 到几 Mbps 范围),但具有简单…...
算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度
递归 递归三部曲: 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法: 递归,对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…...
电子电器架构 --- 车载网关的设计
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界…...
`C_PiperInterface` 类接口功能列表
C_PiperInterface 类接口功能列表 C_PiperInterface 提供了全面的接口,用于控制 Piper 机械臂的运动、查询状态、设置参数以及管理 SDK 限制。 官仓链接 以下是 C_PiperInterface 类中所有接口的功能总结: 1. 初始化与连接相关接口 __new__: 实现单例…...
D. Apple Tree Traversing 【Codeforces Round 1023 (Div. 2)】
D. Apple Tree Traversing 题目大意 有一个包含 n n n 个节点的苹果树,初始时每个节点上有一个苹果。你有一张纸,初始时纸上没有任何内容。 你需要通过以下操作遍历苹果树,直到所有苹果都被移除: • 选择一个苹果路径 ( u , v…...
Docker镜像搬运工:save与load命令的实战指南
在日常的容器化开发中,镜像的搬运和部署是每个开发者必须掌握的技能。今天我们将深入探讨Docker的"save"和"load"这对黄金搭档,揭秘它们在镜像管理中的妙用。 一、基础认知:镜像的打包与解包 docker save 和 docker loa…...
查看Electron 应用的调试端口
以下是一些可以知道已发布第三方 Electron 应用调试端口的方法: * **通过命令行参数查看** : * 如果该 Electron 应用在启动时添加了类似 --remote-debugging-portxxxx 或 --inspectxxxx 的参数,那么其调试端口就是该参数指定的端口号。比…...
各种环境测试
加载测试专用属性 当在测试时想要加入某些配置且对其他测试类不产生影响是可以用Import注释添加配置 测试类中启动web环境 默认为none不开启...
腾讯云低代码实战:零基础搭建家政维修平台
目录 1. 欢迎与项目概览1.1 教程目的与受众1.2 项目愿景与目标:我们要搭建一个怎样的平台?1.3 平台核心构成与架构解析1.4 技术栈选择与考量1.5 如何高效阅读本教程 欢迎来到“腾讯云云开发低代码实战:从零搭建家政维修服务平台”开发教程&am…...
居然智家亮相全零售AI火花大会 AI大模型赋能家居新零售的进阶之路
当人工智能技术以摧枯拉朽之势重构商业世界时,零售业正在经历一场静默而深刻的革命。在这场变革中,居然智家作为新零售领域的创新标杆,凭借其在AI技术应用上的超前布局和持续深耕,已悄然构建起从消费场景到产业生态的智能化闭环。…...
微服务6大拆分原则
微服务6大拆分原则 微服务拆分是指将一个大型应用程序拆分成独立服务的过程,在微服务拆分时,需要考虑以下6大微服务拆分原则 一、单一职责原则 微服务单一职责原则,是指每个微服务应该专注于解决一个明确定义的业务领域或功能,…...
进程间通信--管道【Linux操作系统】
文章目录 进程间通信(IPC)进程间通信的目的1. 数据交换2. 资源共享3. 进程协同4. 系统解耦5. 分布式计算IPC 的典型方式对比总结 进程间通信的前提 匿名管道匿名管道的原理创建匿名管道的过程如果不关闭不需要的读写端会怎样?为什么父进程要同…...
模型实时自主训练系统设计
模型实时自主训练系统设计 一、系统架构 #mermaid-svg-MLuTBuo7ehvStoqS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MLuTBuo7ehvStoqS .error-icon{fill:#552222;}#mermaid-svg-MLuTBuo7ehvStoqS .error-text{f…...
5.1 神经网络: 层和块
1 层(Layer) 1.1 定义 层是深度学习模型中的基本构建单元,它由一组神经元组成,负责对输入数据进行特定的数学运算和变换,以提取数据的某种特征或表示。每一层可以看作是一个函数,它接收输入数据ÿ…...
鸿蒙系统使用ArkTS开发语言支持身份证阅读器、社保卡读卡器等调用二次开发SDK
har库导入: { "license": "", "devDependencies": {}, "author": "", "name": "entry", "description": "Please describe the basic information.", &qu…...
【Bootstrap V4系列】学习入门教程之 组件-输入组(Input group)
Bootstrap V4系列 学习入门教程之 组件-输入组(Input group) 输入组(Input group)Basic example一、Wrapping 包装二、Sizing 尺寸三、Multiple inputs 多输入四、Multiple addons 多个插件五、Button addons 按钮插件六、Buttons with dropdowns 带下拉按钮七、Custom for…...
图像处理篇--- HTTP|RTSP|MJPEG视频流格式
文章目录 前言一、MJPEG (Motion JPEG)基本概念技术特点编码方式传输协议数据格式 优势实现简单低延迟兼容性好容错性强 劣势带宽效率低不支持音频缺乏标准控制 典型应用 二、RTSP (Real Time Streaming Protocol)基本概念技术特点协议栈工作流程传输模式 优势专业流媒体支持高…...
`RotationTransition` 是 Flutter 中的一个动画组件,用于实现旋转动画效果
RotationTransition 是 Flutter 中的一个动画组件,用于实现旋转动画效果。它允许你对子组件进行动态的旋转变换,从而实现平滑的动画效果。RotationTransition 通常与 AnimationController 和 Tween 一起使用,以控制动画的开始、结束和过渡效果…...
养生:开启健康生活的密钥
在快节奏的现代生活中,养生已成为追求健康的重要方式。从饮食、运动到生活习惯,每一个细节都关乎身体的健康。以下为你介绍科学养生的实用方法,助你打造健康生活。 饮食养生:均衡营养,滋养身体 合理的饮食是养生的基…...
大模型微调算法原理:从通用到专用的桥梁
前言 本文聚焦大模型落地中的核心矛盾——理论快速发展与实际应用需求之间的脱节,并系统探讨微调技术作为解决这一矛盾的关键手段。尽管大模型展现出强大的通用能力,但其在垂直领域的直接应用仍面临适配性不足、计算成本高等挑战。微调通过在预训练模型基础上进行针对性优化,…...
引言:Client Hello 为何是 HTTPS 安全的核心?
当用户在浏览器中输入 https:// 时,看似简单的操作背后,隐藏着一场加密通信的“暗战”。Client Hello 作为 TLS 握手的首个消息,不仅决定了后续通信的加密强度,还可能成为攻击者的突破口。据统计,超过 35% 的网站因 TL…...
深度学习中的目标检测:从 PR 曲线到 AP
深度学习中的目标检测:从 PR 曲线到 AP 在目标检测任务中,评估模型的性能是非常重要的。通过使用不同的评估指标和标准,我们可以量化模型的准确性与效果。今天我们将重点讨论 PR 曲线(Precision-Recall Curve)、平均精…...
测试左移系列-产品经理实战-实战认知1
课程:B站大学 记录产品经理实战项目系统性学习,从产品思维,用户画像,用户体验,增长数据驱动等不同方向理解产品,从0到1去理解产品从需求到落地的全过程,测试左移方向(靠近需求、设计…...
数据集-目标检测系列- 烟雾 检测数据集 smoke >> DataBall
数据集-目标检测系列- 消防 浓烟 检测数据集 smoke>> DataBall 数据集-目标检测系列- 烟雾 检测数据集 smoke >> DataBall * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-10…...
概率论与数理统计基础学习大纲
📅 课程规划 阶段一:基础入门(第1-3周) 目标:掌握概率基础和基本分布 核心知识点: 概率论的基本概念:随机事件、样本空间、概率公理条件概率与全概率公式:贝叶斯公式、事件独立性随机变量与分布:离散型和连续型随机变量常见分布: 离散:二项分布、泊松分布连续:…...
5大B2B数字营销社群营销标杆案例TOB企业数字化营销内容营销AI营销培训讲师培训师专家顾问唐兴通分享
全球B2B数字营销领域的企业社区(或BBS)标杆案例 在全球TOB(企业对企业)和B2B数字营销实践中,构建企业社区或在线论坛(BBS的现代演变)已成为增强客户关系、驱动产品采用、获取市场洞察和 genera…...
OC语言学习——Foundation框架(上)
一、字符串 NSString代表字符序列不可变的字符串,而NSMutable代表字符序列可变的字符串。 1.1 NSString字符串及功能 通过NSString,我们可以: 1、创建字符串。2、读取文件或网络URL来初始化字符串,或者将字符串写入文件或URL。3…...
【Linux】基础 IO(一)
📝前言: 这篇文章我们来讲讲Linux——基础IO主要包括: 文件基本概念回顾 C文件的操作介绍系统关于文件的基本操作 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 …...
ODA服务器计算节点本地硬盘状态异常的处理
近期,在系统巡检过程中发现一个客户的ODA服务器本地硬盘节点出现告警,ODAX8 X9等,本地硬盘是使用的240GB M.2接口的SSD盘(卡式)的,这个没有外置的指示灯可以从服务器前面板查看,打开服务器机箱盖…...
图像处理篇---opencv实现坐姿检测
文章目录 前言一、方法概述使用OpenCV和MediaPipe关键点检测角度计算姿态评估 二、完整代码实现三、代码说明PostureDetector类find_pose()get_landmarks()cakculate_angle()evaluate_posture() 坐姿评估标准(可进行参数调整):可视化功能&…...
微调ModernBERT为大型语言模型打造高效“过滤器”
ModernBERT(2024 年 12 月)是最近发布的小型语言模型,由 Answer.AI、LightOn 和 HuggingFace 共同开发。它利用了现代优化技术,如用于 8,192 token 上下文窗口的 RoPE 和 GeGLU layers,在保持效率的同时提升性能。jina…...
【C++指南】STL容器的安全革命:如何封装Vector杜绝越界访问与迭代器失效?
🌟 各位看官好,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 使用STL的三个境界:能用,明理,能扩展 👍 如果觉得这篇文章有帮助&#…...
Linux在web下http加密和配置虚拟主机及动态页面发布
web服务器的数据加密 1.简介:由于http协议以明文方式发送,不提供任何方式的数据加密,也不适合传输一些重要的信息,如银行卡号、密码等,解决该缺陷设计了安全套接字层超文本传输协议https; 2.https的握手流…...
8.2.CICD自动化
目录 一、持续集成(CI)核心实践 代码质量管理 • 静态代码分析:SonarQube规则定制(安全漏洞、代码异味检测) • 单元测试覆盖率:Jacoco报告生成与阈值控制(覆盖率≥80%) • 代码风格…...
解密数据结构之位图和布隆过滤器
位图和布隆过滤器 前言:笔者在前面分享过哈希的知识,但是笔者在哈希那篇博客中并没有给出哈希的应用场景,今天笔者分享的知识是关于哈希的应用,也就是大名鼎鼎的位图和布隆过滤器。1.位图的定义位图解决 2.位图实现1.先使用命名空间封装&…...
《从零构建大模型》PDF下载(中文版、英文版)
内容简介 本书是关于如何从零开始构建大模型的指南,由畅销书作家塞巴斯蒂安• 拉施卡撰写,通过清晰的文字、图表和实例,逐步指导读者创建自己的大模型。在本书中,读者将学习如何规划和编写大模型的各个组成部分、为大模型训练准备…...
Linux的web服务器的部署和优化
http中访问请求中I/O结构 在HTTP协议中,I/O(输入/输出)结构主要涉及客户端与服务器之间的请求和响应交互。以下是HTTP请求和响应的基本结构及其关键组成部分: HTTP请求结构 HTTP请求由请求行、请求头和请求体三部分组成 请求行…...
vue2 上传pdf,拖拽盖章,下载图片
效果图片: 不多废话上代码: <template><div class"pdf-stamp" onbeforecopyreturn false onselectdocument.selection.empty() ondragstartreturn false onselectstart return false ><div class"scroll-box" scro…...
MindSpore框架学习项目-ResNet药物分类-模型训练
目录 3.模型训练 3.1模型训练 3.1.1 定义优化器和损失函数 定义优化器和损失函数代码解析 3.1.2定义训练、推理函数 定义训练、推理函数代码解释 3.2模型保存 模型保存代码说明 3.3绘制acc和loss的曲线 参考内容: 昇思MindSpore | 全场景AI框架 | 昇思Mind…...
Jsp技术入门指南【十二】自定义标签
Jsp技术入门指南【十二】自定义标签 前言一、什么是标签二、标签的类型有哪些?1. 空标签2. 带有属性的标签3. 带主体的标签 三、自定义标签的部件3.1 自定义标签的四步骤3.2 标签处理程序3.3 自定义标签的开发及使用步骤第一步:创建标签助手类第二步&…...
数据库故障排查指南:从连接问题和性能优化
数据库作为现代应用程序的核心组件,其稳定性和性能直接影响整个系统的运行。然而,数据库在运行过程中常常会遇到各种故障,如连接失败、性能下降、数据不一致等问题。本文将从实际问题出发,结合代码示例和工具使用,系统…...
材料创新与工艺升级——猎板PCB引领高频阻抗板制造革命
在5G通信、AI服务器和自动驾驶的推动下,高频电路对信号完整性的要求日益严苛。猎板PCB作为国内高端PCB制造的标杆企业,通过材料创新与工艺革新,实现了阻抗控制的突破性进展,为行业树立了新标杆。 1. 高频材料的突破 传统FR-4基材…...
GitHub 趋势日报 (2025年05月09日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1voideditor/void⭐ 1879⭐ 15214TypeScript2ruanyf/weekly科技爱好者周刊&…...
SaaS场快订平台项目说明【持续更新】
一、项目介绍 SaaS场快订平台是一个高效、便捷的体育场馆在线预订平台。本项目采用SaaS方式开发,用户不需要安装软件,直接通过互联网访问在线程序即可使用。本项目主要构建了一个体育馆预订系统,项目的功能主要包括:用户注册与登…...
PyTorch API 7 - TorchScript、hub、矩阵、打包、profile
文章目录 torch.hub发布模型如何实现入口点?重要通知 从Hub加载模型运行加载的模型:下载的模型保存在哪里?缓存逻辑已知限制: TorchScript创建 TorchScript 代码混合使用追踪与脚本化TorchScript 语言内置函数与模块PyTorch 函数与…...
OpenVLA:开源的视觉-语言-动作模型
1. 简介 让我们先来介绍一下什么是OpenVLA,在这里: https://openvla.github.io/ 可以看到他们的论文、数据、模型。 OpenVLA 是一个拥有 70亿参数的开源 **视觉-语言-动作(VLA)**模型。它是在 Open X-Embodiment 数据集 中的 97万…...
android HashMap和List该如何选择
目录 一,ArrayList 1.1 数组 1.2 扩容 1.3 查询 1.4 插入,删除 1.5 小结 二,LinkedList 2.1 链表 2.2 查找 2.3 插入 2.4 小结 三,HashMap 扩容 四,SparseArray 五,ArrayMap 一,ArrayList 1.…...
Visual Studio 2022 远程调试
Visual Studio 2022 远程调试全过程 这篇文章尽可能地精细记录如何使用 Visual Studio 2022 完成 Windows 系统上的远程调试。适用场景包括本地编译,远程运行,两台机器分工合作调试。 一、设备网络通信环境 1.1 确保两台设备通信 本地设备: 安装 Visu…...