三、FFmpeg学习笔记
FFmpeg
是一个开源、跨平台的多媒体处理框架,能够实现音视频的录制、转换、剪辑、编码、解码、流媒体传输、过滤与后期处理等几乎所有常见的多媒体操作。其强大之处在于几乎支持所有的音视频格式、编解码器和封装格式,是业界公认的“瑞士军刀”。
FFmpeg
既提供了命令行工具,也封装了众多底层库供其他程序调用。
参考资料:
zhuanlan.zhihu.com
zhuanlan.zhihu.com
1、 FFmpeg
的组件体系与架构
FFmpeg
的架构主要可分为两大部分:命令行工具 、 底层核心库。
1.1、命令行工具
主要包括:
-
FFmpeg
核心转换工具,用于音视频格式转换、剪辑、拼接、压缩、添加滤镜、水印、推流等操作。
示例:将 MP4 转换为 AVIffmpeg -i input.mp4 output.avi
-
FFplay
基于SDL
的简单播放器,支持实时播放大部分格式的音视频文件。
示例:播放视频ffplay input.mp4
-
FFprobe
用于检测和提取多媒体文件信息(如流信息、码率、帧率、分辨率、元数据等),类似MediaInfo
。
示例:查看媒体文件详细信息ffprobe input.mp4
-
FFserver
早期提供的流媒体服务器,用于实时推流,目前已废弃或不推荐使用。
参考资料:
zhuanlan.zhihu.com
cnblogs.com
1.2、核心库
FFmpeg
内部实现了大量功能,主要通过以下库实现:
-
libavcodec
提供音视频的编码与解码功能,内含数百种编解码器(如H.264、H.265、VP9、AAC、MP3
等)。
应用场景:- 将编码视频解码为原始帧供后续处理
- 将原始视频帧重新编码成目标格式
参考资料:
zhuanlan.zhihu.com
de.wikipedia.org -
libavformat
负责多媒体封装与解封装,处理各种容器格式(如MP4、AVI、MKV、FLV、MOV
等)的读写。
应用场景:- 从文件或网络流中读取数据包
- 将音视频数据写入指定格式的输出文件
参考资料:
ru.wikipedia.org -
libavutil
提供常用工具函数与数据结构,包括内存管理、数学运算、日志记录、数据格式转换、颜色空间转换等。
应用场景:- 为各个组件提供基础支持
- 数据结构(如
AVFrame、AVPacket
)的管理
参考资料:
ru.wikipedia.org -
libswscale
专注于图像缩放、像素格式转换(例如YUV
转RGB
)、颜色空间转换。
应用场景:- 改变视频分辨率
- 将视频帧从一种像素格式转换到另一种格式
参考资料:
ru.wikipedia.org -
libswresample
用于音频重采样、通道转换及格式转换。
应用场景:- 将音频采样率从 44.1
kHz
转换到 48kHz
- 单声道转立体声等
参考资料:
ru.wikipedia.org - 将音频采样率从 44.1
-
libavfilter
提供视频和音频滤镜,构建过滤器图(filtergraph
),可以在解码和编码之间对媒体流进行各种处理,如裁剪、缩放、去噪、旋转、颜色校正、叠加水印等。
应用场景:- 复杂的滤镜效果(例如
overlay、crop、rotate
等) - 构建多级处理流水线
参考资料:
ru.wikipedia.org - 复杂的滤镜效果(例如
-
libpostproc
用于视频后处理,比如去噪、锐化,尽管在新版本中使用频率逐渐下降。参考资料:
ru.wikipedia.org -
libavdevice
用于与硬件或操作系统提供的设备(摄像头、音频输入设备、屏幕捕获设备等)进行交互。
应用场景:- 屏幕录制、采集摄像头输入
参考资料:
ru.wikipedia.org
2、FFmpeg
安装与编译
FFmpeg
可以在多种平台上安装和编译。以下是常见平台的安装方法:
2.1、Windows
-
下载预编译版本(静态或动态链接库):
FFmpeg
官网下载 -
或通过
Windows
包管理工具(如Chocolatey
)进行安装:choco install FFmpeg
2.2、Linux
-
在
Ubuntu/Debian
系统中,可以直接安装:sudo apt update sudo apt install FFmpeg
-
若需要自定义编译配置(例如裁剪不需要的组件、启用硬件加速),下载源码后执行:
./configure --enable-gpl --enable-nonfree --enable-libx264 --enable-libx265 --enable-libfdk-aac make sudo make install
※ 注意:某些库(如
libfdk-aac
)可能因专利问题需要启用nonfree
选项参考资料:
blog.csdn.net
cloud.baidu.com
2.3 macOS
-
使用
Homebrew
进行安装:brew install `FFmpeg`
此外,还可根据需要启用其他扩展库,如 SDL、NVIDIA NVENC、Intel QSV
等。
3、FFmpeg
常用命令详解
下面给出一些常用命令及其详细解释:
3.1、查看版本及支持功能
-
查看版本、编译参数、支持的格式、编码器等:
FFmpeg -version FFmpeg -formats FFmpeg -codecs FFmpeg -protocols FFmpeg -filters
3.2、格式转换
-
视频格式转换
将MP4
转换为AVI
:FFmpeg -i input.mp4 output.avi
FFmpeg
根据文件扩展名自动选择封装器,但也可以使用-f
强制指定格式。 -
只提取音频
从视频中提取音频,且不重新编码音频流(复制原始数据):FFmpeg -i input.mp4 -vn -acodec copy output.aac
参数说明:
-vn
:忽略视频流-acodec copy
:直接复制音频数据
-
只提取视频(无音频)
FFmpeg -i input.mp4 -an output.mp4
参数说明:
-an
:忽略音频流
3.3、视频剪辑与合并
-
视频剪辑
截取视频片段(从 00:01:00 开始,持续 10 秒):FFmpeg -i input.mp4 -ss 00:01:00 -t 10 -c copy output.mp4
参数说明:
-ss
:设置起始时间-t
:设置持续时间-c copy
:无重新编码,快速剪切
-
视频合并
创建一个文本文件(如filelist.txt
),内容如下:file 'part1.mp4' file 'part2.mp4' file 'part3.mp4'
然后执行:
FFmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
参数说明:
-f concat
:指定合并模式-safe 0
:允许使用绝对路径
3.4、添加滤镜和特效
-
缩放视频分辨率
将视频分辨率调整为1280 x 720
:FFmpeg -i input.mp4 -vf scale=1280:720 output.mp4
或者使用
-s 1280x720
,但-vf scale
更灵活。 -
添加水印
叠加图片水印,位置距离左上角 10 像素:FFmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4
参数说明:
-filter_complex
:创建复杂滤镜图overlay=10:10
:设置水印位置
-
添加字幕
将SRT
格式字幕嵌入视频:FFmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4
-
生成
GIF
动图
从视频生成GIF
,调整帧率和宽度自适应:FFmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif
参数说明:
fps=10
:每秒 10 帧scale=320:-1
:宽度为 320,高度自适应保持比例
3.5、录屏和流媒体推送
-
屏幕录制(
Windows
下可使用gdigrab
)FFmpeg -f gdigrab -framerate 25 -i desktop -c:v libx264 -preset fast output.mp4
-
直播推流
推流至RTMP
服务器(例如直播平台):FFmpeg -re -i input.mp4 -c:v libx264 -preset fast -f flv rtmp://live.example.com/app/stream_key
参数说明:
-re
:按真实速度读取输入(适用于直播推流)-f flv
:RTMP 通常要求 FLV 封装
3.6、调整编码设置与硬件加速
-
指定编码器与质量控制
使用libx264
编码视频,并通过CRF
参数控制质量(数值越低质量越高):FFmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium output.mp4
参数说明:
-crf
:恒定质量控制参数(一般范围 18-28)-preset
:编码速度与压缩率平衡(ultrafast 到 veryslow)
-
硬件加速编码
NVIDIA GPU
下使用NVENC
加速:FFmpeg -i input.mp4 -c:v h264_nvenc -preset fast output.mp4
Intel QuickSync
示例:FFmpeg -i input.mp4 -c:v h264_qsv output.mp4
参数说明:
- 使用专门的硬件编码器可以大幅提高转码速度,但需保证对应驱动和 SDK 已安装
参考资料:
zhuanlan.zhihu.com
blog.csdn.net
4、FFmpeg
滤镜系统详解
FFmpeg
的滤镜(Filter)系统非常灵活,可以构建一个或多个过滤器组成的滤镜图(Filtergraph)来处理音视频数据。
常见视频滤镜包括:
- crop:裁剪视频画面
- scale:缩放视频
- rotate/transpose:旋转或转置视频
- overlay:叠加图像(水印效果)
- drawtext:添加文字
- fade:淡入淡出效果
常见音频滤镜包括:
- volume:调整音量
- atempo:改变播放速度(音调保持不变)
- afade:音频淡入淡出
- aecho:添加回声效果
使用方法一般通过 -vf
(视频滤镜)或 -af
(音频滤镜)选项,复杂滤镜图使用 -filter_complex
选项。
例如,创建一个包含缩放和水印的滤镜图:
FFmpeg -i input.mp4 -i logo.png -filter_complex "[0:v]scale=1280:720[scaled]; [scaled][1:v]overlay=10:10" output.mp4
滤镜的参数、语法和功能请参阅 FFmpeg
官方文档与社区教程
参考资料:
ru.wikipedia.org
cnblogs.com
5、编译与定制 FFmpeg
对于开发者来说,有时需要根据实际需求裁剪或定制 FFmpeg
的功能。例如:
-
配置参数
使用
./configure --help
可以查看所有支持的编译选项。常用选项包括:
--enable-gpl
、--enable-nonfree
:启用 GPL 或非自由模块(如 libfdk-aac)--disable-static
、--enable-shared
:控制生成静态库或动态库--enable-libx264
、--enable-libx265
等:启用特定的第三方库支持
-
交叉编译
对于嵌入式系统或 Android、iOS 平台,需要配置交叉编译工具链和平台特定参数
示例(Android ARM):
./configure --prefix=./android --cross-prefix=<toolchain-prefix> --arch=arm --target-os=linux --enable-cross-compile --disable-static --enable-shared make -j4 && make install
-
裁剪不需要的模块
可通过
--disable-<module>
来去除不需要的组件,从而减小二进制文件体积
例如:如果不需要 ffplay,则使用
--disable-ffplay
参考资料:
blog.csdn.net
6、调试与日志
FFmpeg
内置了丰富的日志系统,可以通过 -loglevel
参数设置日志级别,例如:
quiet
:安静模式,不输出日志error
:只输出错误warning
、info
、verbose
、debug
:逐级详细
同时,可使用-report
生成详细的运行报告文件,便于调试和性能分析
FFmpeg -report -i input.mp4 output.avi
相关文章:
三、FFmpeg学习笔记
FFmpeg是一个开源、跨平台的多媒体处理框架,能够实现音视频的录制、转换、剪辑、编码、解码、流媒体传输、过滤与后期处理等几乎所有常见的多媒体操作。其强大之处在于几乎支持所有的音视频格式、编解码器和封装格式,是业界公认的“瑞士军刀”。 FFmp…...
什么是 Java 泛型
一、什么是 Java 泛型? 泛型(Generics) 是 Java 中一种强大的编程机制,允许在定义类、接口和方法时使用类型参数。通过泛型,可以将数据类型作为参数传递,从而实现代码的通用性和类型安全。 简单来说&…...
从 WPF 到 MAUI:跨平台 UI 开发的进化之路
一、引言 在软件开发领域,用户界面(UI)开发一直是至关重要的环节。随着技术的不断发展,开发者对于创建跨平台、高性能且美观的 UI 需求日益增长。Windows Presentation Foundation(WPF)和 .NET Multi - pl…...
Docker学习之dockerfile篇(day8)
文章目录 前言一、问题描述二、具体内容1. Docker 镜像原理2. Docker 镜像制作3. Dockerfile 概念Dockerfile 的基本结构: 4. Dockerfile 关键字5. Docker 实战案例5.1 基于 Nginx 构建 Web 服务器 6. 验证与总结6.1 验证 Dockerfile6.2 总结 前言 Docker 是一种轻…...
Kotlin 作用域函数:apply、let、run、with、also
在 Kotlin 开发中,作用域函数(Scope Functions)是一组能让代码更简洁、更函数式的高阶函数。它们通过不同的作用域规则和返回值设计,解决了对象配置、空安全处理、链式操作等常见场景问题。本文将结合核心特性、代码示例和对比表格…...
Java 线程池与 Kotlin 协程 高阶学习
以下是Java 线程池与 Kotlin 协程 高阶学习的对比指南,结合具体代码示例,展示两者在异步任务处理中的差异和 Kotlin 的简化优势: 分析: 首先,我们需要回忆Java中线程池的常见用法,比如通过ExecutorService创…...
C++学习笔记(三十三)——forward_list
一、std::forward_list (1) forward_list与其适用场景 std::forward_list 是 C的STL中的单向链表(Singly Linked List),它相比 std::list(双向链表)更轻量,适用于仅需要单向遍历的场景。 主要特点&#…...
ROS订阅相机图像识别颜色并发布识别信息
一、前言 区别于之前的直接驱动相机,这里改为读取图像话题进行处理,原因是如果opencv驱动相机后只能单一使用,就限制了其他识别功能(除非将原始图像发布出来),所以这里改成可以读取任意相机图像话题的方法…...
Redis-15.在Java中操作Redis-Spring Data Redis使用方式-操作集合类型的数据
一.操作集合类型的数据 package com.sky.test;import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.*;import j…...
第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
1.字串排序 不会做,感觉挺难的,有兴趣的可以看下面题解 #include <iostream> #include <string.h> using namespace std; int V; int len;//符合交换次数V,字符串长度最小值 int now; //当前已经构造好的那一部分字符串逆序对个数…...
CentOS 安装 zip
安装软件 sudo yum install zip unzip # CentOS 7 sudo dnf install zip unzip # CentOS 8/9压缩文件 # 压缩单个文件 zip 压缩包名.zip 文件1# 压缩多个文件 zip 压缩包名.zip 文件1 文件2 文件3# 压缩目录(包含子目录) zip -r 压缩包名.zip 目…...
FastPillars:一种易于部署的基于支柱的 3D 探测器
FastPillars:一种易于部署的基于支柱的 3D 探测器Report issue for preceding element Sifan Zhou 1 , Zhi Tian 2 , Xiangxiang Chu 2 , Xinyu Zhang 2 , Bo Zhang 2 , Xiaobo Lu11{}^{1}start_FLOATSUPERSCRIPT 1 end_FLOATSUPERSCRIPT11footnotemark: 1 Chengji…...
LVS高可用负载均衡
一、项目图 二、主机规划 主机系统安装应用网络IPclientredhat 9.5无NAT192.168.72.115/24lvs-masterredhat 9.5ipvsadm,keepalivedNAT192.168.72.116/24 VIP 192.168.72.100/32lvs-backupredhat 9.5ipvsadm,keepalivedNAT192.168.72.117/24 VIP 192.168…...
Kafka延迟队列实现分级重试
技术方案 方案背景 Kafka队列消息消费处理过程中,发生处理异常,需要实现重试机制,并基于重试次数实现不同延迟时间重试方案。 方案介绍 通过实现Kafka延迟队列来实现消息重试机制。 目标: 支持所有业务场景的延迟重试支持多…...
谷粒微服务高级篇学习笔记整理---异步线程池
多线程回顾 多线程实现的4种方式 1. 继承 Thread 类 通过继承 Thread 类并重写 run() 方法实现多线程。 public class MyThread extends Thread {Overridepublic void run() {System.out.println("线程运行: " Thread.currentThread().getName());} }// 使用 pub…...
3.第二阶段x64游戏实战-分析人物移动实现人物加速
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:2.第二阶段x64游戏实战-x64dbg的使用 想找人物的速度,就需要使用Ch…...
MQTT 服务器(emqx)搭建及使用(一)
一. EMQX 服务器搭建 1.下载EMQX 下载链接:Windows | EMQX 文档 官方手册 2.下载内容解压至盘符根目录 3.进入bin文件夹,在地址栏输入cmd 4.依次输入下面命令安装服务 .\emqx.cmd install .\emqx.cmd console 5.设置自启动 创建批处理文件&#x…...
什么是SSE和websocket
以下是 SSE(Server-Sent Events) 和 WebSocket 在大模型(如 ChatGPT)流式输出中的实际例子对比,包含代码实现和场景分析: —### 1. SSE(Server-Sent Events)#### 场景 大模型生成文本…...
蓝桥杯专项复习——二分查找、二分答案
目录 二分查找、二分答案基础知识 二分查找模版 【模版题】数的范围 借教室 二分查找、二分答案基础知识 二分模版 二分查找 【模版题】数的范围 输入样例 6 3 1 2 2 3 3 4 3 4 5输出样例 3 4 5 5 -1 -1 思路: 对应两个模版,起始位置是对应第一…...
Android学习总结之Kotlin 协程
一、引言 在 Android 开发中,异步任务处理是绕不开的话题。传统的线程、Handler、AsyncTask 等方案要么过于繁琐,要么存在生命周期管理问题。Kotlin 协程的出现,以优雅的语法和强大的结构化并发能力,成为解决异步编程难题的理想方…...
docker的与使用
1 docker初体验 1.1 docker简介 问题:为什么会有docker出现? 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对…...
解决ubuntu18.04无法进入系统桌面
解决ubuntu18.04无法进入系统桌面 解决ubuntu18.04无法进入系统桌面前言1、原因2、解决现象总结 前言 Vmware虚拟机运行跑Linux项目,没有关掉运行的进程就关机,导致系统无法进入系统桌面,一直卡在系统的初始化界面,按下快捷键发…...
Docker学习之容器虚拟化与虚拟机的区别(day11)
文章目录 前言一、问题描述二、具体内容1. 虚拟机(VM)2. 容器虚拟化(Docker)容器虚拟化的核心技术 三、总结1. 资源占用对比2. 适用场景3. 结论 前言 在现代软件开发和部署过程中,Docker 和虚拟机(VM&…...
无人机数据链技术及运行方式详解!
一、无人机数据链技术要点 1. 通信传输技术 频段选择: 常用频段包括 L波段(1-2 GHz)、C波段(4-8 GHz)、Ku/K波段(12-40 GHz),不同频段在传输距离、带宽和抗干扰性间权衡。 低…...
【JavaEE】MyBatis - Plus
目录 一、快速使用二、CRUD简单使用三、常见注解3.1 TableName3.2 TableFiled3.3 TableId 四、条件构造器4.1 QueryWrapper4.2 UpdateWrapper4.3 LambdaQueryWrapper4.4 LambdaUpdateWrapper 五、自定义SQL 一、快速使用 MyBatis Plus官方文档:MyBatis Plus官方文档…...
设计模式 三、结构型设计模式
一、代理模式 代理设计模式(Proxy Design Pattern)是一种结构型设计模式,它为其他对象提供了一个代理,以控制对这个对象的访问。 代理模式可以用于实现懒加载、安全访问控制、日志记录等功能。简单来说,代理模式 就是通…...
视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验
264、x265、libaom、vvenc 对比测试实验 测试机器配置:Apple M1 Pro -16G编码器版本(选择自己编译):所有源码都是当前最新更新的状态,此外各类编码具体的编译过程可参考我的相关系列博客。 编码器GitHubx264git clon…...
JMeter脚本录制(火狐)
录制前准备: 电脑: 1、将JMeter证书导入,(bin目录下有一个证书,需要安装这个证书到电脑中) 2、按winr,输入certmgr.msc,打开证书,点击下一步,输入JMeter证书…...
10、Linux C 网络编程(完整版)
1、网络发展历史和分层 1.1 Internet 的历史 起源: 1957 年:苏联发射第一颗人造卫星 "Sputnik"。 1958 年:美国总统艾森豪威尔成立 DARPA(国防部高级研究计划署)。 1968 年:DARPA 提出 "…...
拼多多 anti-token unidbg 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 版本7.3-7.4 都试过加密没什…...
Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并发原理以及技术实现对比分析
Swoole 的 Hyperf 框架和 Go 的 Gin 框架虽然都支持高并发,但它们的实现原理、底层机制和适用场景有显著差异。以下从 高并发原理、技术实现区别、优缺点 三个方面详细分析: 一、高并发实现原理 1. Hyperf (PHP Swoole) Hyperf 的高并发能力基于 Swoo…...
CSS3学习教程,从入门到精通,CSS3 媒体查询实现响应式布局语法指南(21)
CSS3 媒体查询实现响应式布局语法指南 一、媒体查询核心语法 1. 基础语法结构 media 媒体类型 and (媒体特性) {/* 匹配条件时应用的CSS规则 */ }2. 媒体类型(可省略) 类型值说明all所有设备(默认值)screen屏幕设备print打印机…...
C#中,什么是委托,什么是事件及它们之间的关系
1. 委托(Delegate) 定义与作用 委托是类型安全的函数指针,用于封装方法,支持多播(链式调用)。核心能力:将方法作为参数传递或异步回调。 使用场景 回调机制(如异步操作完…...
【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
🚀 力扣热题 347:前 K 个高频元素(详细解析) 📌 题目描述 力扣 347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k,请你返回其中出现频率 前 k 高的元素。你可以按 任意顺序 返回答案。 …...
②EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
型号 协议转换通信网关 EtherCAT 转 Modbus TCP 配置说明 网线连接电脑到模块上的 WEB 网页设置网口,电脑所连网口的网段设置成 192.168.1.X(X 是除 8 外的任一数值)后,打开浏览器,地址栏输入 192.168.1.8 ÿ…...
微服务集成测试 -华为OD机试真题(A卷、Python)
题目描述 现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次,服务自身启动加载会消耗一些时间。 给你一个n n 的二维矩阵useTime,其中useTime[i][i]10表示服务i自身启动加载需…...
k8s常用总结
1. Kubernetes 架构概览 主节点(Master): 负责集群管理,包括 API Server、Controller Manager、Scheduler 和 etcd 存储。 工作节点(Node): 运行 Pod 和容器,包含 kubelet、kube-pr…...
【算法】并查集基础讲解
一、定义 一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,只要找到了某个元素的的树根,就能确定它在哪个集合里。 …...
探索PHP的未来发展与应用趋势
PHP,作为Web开发领域的常青树,自1995年诞生以来,始终在动态网页开发中占据重要席位。随着技术的不断演进,PHP也在持续更新,以适应现代开发需求。本文将深入探讨PHP的最新发展动态及其在2025年的应用趋势。 PHP 8&…...
C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题
C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题 解决方法: 1.将C#采用的平台从AnyCpu改成X64 2.将官网下载的“Microsoft Access 2010 数据库引擎可再发行程序包AccessDatabaseEngine_X64”文件解压 3.安装解压后的文件 点击下载安…...
ubuntu22.04.5安装docker,解决安装出现的错误,解决Docker hello-world没打印出来
文章目录 前言一 安装失败解决1结合具体报错分析2 首先怀疑是VPN的问题3 直接百度报错信息4最终解决问题 二 验证Docker hello-world没打印出来总结 前言 先说一下前面的情况,使用的是公司的工作站,登录公司一个帐号使用的公司网络,使用网上…...
HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式
HMTLJSCSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式(可以穿墙死不了,从左边进去可以从右边出来),显示当前分数和最高分,吃到的球颜色可以叠加到蛇身体上 为了适配手机端…...
vue将页面导出成word
方法一:使用 html-docx-js html-docx-js 是一个轻量级的库,可以将 HTML 转换为 Word 文档。 安装依赖 首先安装 html-docx-js: Bash深色版本 npm install html-docx-js --save创建导出逻辑 在 Vue 组件中实现导出功能的代码如下࿱…...
Spring MVC 页面跳转方案与区别
SpringMVC 的页面跳转方案主要分为 转发(Forward) 和 重定向(Redirect) 两类,具体实现方式和区别如下: 一、页面跳转方案 1. 转发(Forward) 默认方式:直…...
Open GL ES ->纹理贴图,顶点坐标和纹理坐标组合到同一个顶点缓冲对象中进行解析
XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.MyGLSurfaceView2 xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/glSurfaceView"android:layout_width"matc…...
题解:AT_arc050_c [ARC050C] LCM 111
一道比较简单的题。(我绝对不会告诉你这题我改了很久) 题目意思很简单,我就不过多解释了,我们直接进入正题。 题目要我们求 a a a 个 1 1 1 组成的数与 b b b 个 1 1 1 组成的数的最小公倍数除以 m m m 后的余数。先不考虑…...
【408--考研复习笔记】计算机网络----知识点速览
目录 一、计算机网络体系结构 1.计算机网络的定义与功能: 2.网络体系结构相关概念: 3.OSI 七层模型与 TCP/IP 模型: 4.通信方式与交换技术: 电路交换 报文交换 分组交换 5.端到端通信和点到点通信: 6.计算机…...
ISIS报文
IS-IS 报文 目录 IS-IS 报文 一、报文类型与功能 二、报文结构解析 三、核心功能特性 四、典型应用场景 五、抓包数据分析 六、总结 IS-IS(中间系统到中间系统)协议报文是用于链路状态路由协议中网络设备间交换路由信息的关键载体,其设…...
FPGA——分秒计数器
文章目录 一、实验任务二、系统模块三、工程源码四、管脚信息五、运行结果参考资料总结 一、实验任务 在DE2-115板子上用 Verilog编程实现一个分秒计数器,并具备按键暂停、按键消抖功能。 二、系统模块 分频模块 高频时钟(如50MHz)分频得到…...
【Java】JVM
一、JVM体系结构 1、虚拟机概述 虚拟机(Virtual Machine):一台虚拟的计算机,指一种特殊的软件,他可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。虚拟机…...