FFmpeg常见命令行
1、ffmpeg命令行 视频生成图片
ffmpeg -i test.mp4 -r 25 -f image2 data/image%3d.jpg
这个命令行使用FFmpeg工具将视频文件(test.mp4)转换为一系列图像文件。
让我们逐个解释每个参数的含义:
-i test.mp4: 指定输入文件为test.mp4。-i是FFmpeg用于指定输入文件的选项。-r 25: 设置输出图像的帧率为25帧/秒。-r是FFmpeg用于设置帧率的选项。-f image2: 指定输出格式为image2,表示输出为一系列图像文件。-f是FFmpeg用于指定输出格式的选项。data/image%3d.jpg: 指定输出文件的路径和命名模式。data是输出目录,image%3d.jpg是输出文件名的模式。%3d表示以三位数字序列作为文件名中的一部分,从001开始递增。
该命令行将读取test.mp4视频文件,并以每秒25帧的帧率将其转换为一系列图像文件,保存在data目录下,文件名以image001.jpg、image002.jpg等方式命名。
扩展:
在FFmpeg中,-f参数用于指定输出文件的格式。这个参数后面可以跟随不同的参数值来选择所需的输出格式。
以下是一些常用的-f参数值及其对应的输出格式:
image2: 将输出设置为一系列图像文件。mp4: 输出为MP4格式的视频文件。avi: 输出为AVI格式的视频文件。mov: 输出为MOV格式的视频文件。flv: 输出为FLV格式的视频文件。matroska: 输出为Matroska格式(MKV)的视频文件。mpeg: 输出为MPEG格式的视频文件。gif: 输出为GIF动画文件。wav: 输出为WAV音频文件。mp3: 输出为MP3音频文件。aac: 输出为AAC音频文件。
这只是其中的一些常见示例,实际上还有许多其他支持的输出格式可以在FFmpeg中使用。你可以通过输入ffmpeg -formats命令来查看FFmpeg支持的所有格式和编解码器
2、ffmpeg命令行 图片合并视频
ffmpeg -r 25 -f image2 -i data/image%3d.jpg -vcodec libx264 -s 1920*1080 -g 100 -keyint_min 25 -sc_threshold 0 -pix_fmt yuv420p out.mp4
这个命令使用FFmpeg工具将一系列图像文件(data/image001.jpg,data/image002.jpg,…)合并为一个视频文件(out.mp4)。
让我们逐个解释每个参数的含义:
-r 25: 设置输出视频的帧率为25帧/秒。这意味着每秒将有25个图像帧被添加到视频中。-f image2: 指定输入格式为image2,表示输入为一系列图像文件。-i data/image%3d.jpg: 指定输入文件的路径和命名模式。%3d表示以三位数字序列作为文件名中的一部分,从001开始递增。例如,data/image001.jpg、data/image002.jpg等。-vcodec libx264: 设置视频编码器为libx264,用于将图像序列编码为H.264视频格式。-s 1920x1080: 设置输出视频的分辨率为1920x1080像素。-g 100: 设置关键帧间隔为100帧。这意味着每100帧会有一个关键帧,其他帧则通过对前一关键帧的变化进行压缩。-keyint_min 25: 设置最小关键帧间隔为25帧。-sc_threshold 0: 设置场景切换阈值为0。这将禁用场景切换检测。-pix_fmt yuv420p: 设置输出视频的像素格式为YUV420P。这是一种常见的像素格式,广泛支持播放和编码。out.mp4: 指定输出文件为out.mp4。
综上所述,该命令将以每秒25帧的帧率读取data目录下的图像文件,并使用libx264编码器将其合并为一个1920x1080分辨率的视频文件(out.mp4)。关键帧间隔为100帧,最小关键帧间隔为25帧。所有帧都被视为关键帧,且没有场景切换检测。输出视频的像素格式设置为YUV420P。
3、推拉流
- 查看摄像头列表
ffmpeg -list_devices true -f dshow -i dummy
这个命令使用FFmpeg工具来列出可用的音视频设备列表。
让我们逐个解释每个参数的含义:
-list_devices true: 启用设备列表功能,将列出可用的音视频设备。-f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。-i dummy: 指定一个虚拟的输入设备名称为"dummy"。这里使用dummy设备只是为了触发设备列表的输出,而不是实际打开设备进行采集。
综上所述,该命令将使用FFmpeg工具以DirectShow格式尝试打开名为"dummy"的虚拟输入设备,从而触发设备列表的输出。该列表将包含系统中可用的音视频设备信息。
- 播放摄像头
ffplay -f dshow -i video="HP 5MP Camera"
这个命令使用FFplay工具来播放一个名为"FULL HD webcam"的视频设备。
让我们逐个解释每个参数的含义:
-f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。-i video="FULL HD webcam": 指定视频输入设备名称为"FULL HD webcam"。video=是用于指定视频设备的前缀,后面跟随设备名称。
综上所述,该命令将使用FFplay工具以DirectShow格式打开名为"FULL HD webcam"的视频设备,并开始播放该视频设备的内容。
- 查看摄像头的分辨率格式
ffmpeg -list_options true -f dshow -i video="HP 5MP Camera"
这个命令使用FFmpeg工具来列出指定视频设备的可用选项。
让我们逐个解释每个参数的含义:
-list_options true: 启用选项列表功能,将列出指定设备的可用选项。-f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。-i video="HP 5MP Camera": 指定视频输入设备名称为"HP 5MP Camera"。video=是用于指定视频设备的前缀,后面跟随设备名称。
综上所述,该命令将使用FFmpeg工具以DirectShow格式尝试打开名为"HP 5MP Camera"的视频设备,并列出该设备的可用选项信息。这些选项可以包括视频分辨率、帧率、亮度、对比度等相关设置。
- 摄像头推流到RTMP服务
ffmpeg -f dshow -i video="HP 5MP Camera" -vcodec libx264 -acodec aac -ar 44100 -ac 1 -r 25 -s 1920*1080 -f flv rtmp://192.168.1.9/live/desktop
这个命令使用FFmpeg工具从名为"HP 5MP Camera"的视频设备采集视频,并通过RTMP协议将其实时推流到指定的服务器地址。
让我们逐个解释每个参数的含义:
-f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。-i video="HP 5MP Camera": 指定视频输入设备名称为"HP 5MP Camera"。video=是用于指定视频设备的前缀,后面跟随设备名称。-vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。-acodec aac: 设置音频编码器为AAC,用于对音频进行AAC编码。-ar 44100: 设置音频采样率为44100 Hz。-ac 1: 设置音频通道数为1,即单声道。-r 25: 设置输出视频的帧率为25帧/秒。-s 1920x1080: 设置输出视频的分辨率为1920x1080像素。-f flv: 指定输出格式为FLV(Flash Video)。rtmp://192.168.1.9/live/desktop: 指定目标服务器的RTMP推流地址。
综上所述,该命令将从名为"HP 5MP Camera"的视频设备采集视频和音频数据,并对其进行H.264和AAC编码。然后,它将以25帧/秒的帧率、1920x1080分辨率的格式,通过RTMP协议推流到指定的服务器地址(rtmp://192.168.1.9/live/desktop)。这样,在指定的服务器上可以接收和处理该实时视频流。
- 摄像头推流到RTSP(rtp over tcp)
ffmpeg -f dshow -i video="HP 5MP Camera" -rtsp_transport tcp -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -r 25 -f rtsp rtsp://127.0.0.1:8554/webcam
这个命令使用FFmpeg工具从名为"HP 5MP Camera"的视频设备采集视频和音频,并将其通过RTSP协议进行实时传输。
让我们逐个解释每个参数的含义:
-f dshow: 指定输入格式为dshow,表示使用DirectShow设备作为输入。-i video="HP 5MP Camera": 指定视频输入设备名称为"HP 5MP Camera"。video=是用于指定视频设备的前缀,后面跟随设备名称。-rtsp_transport tcp: 指定RTSP传输使用TCP协议。默认情况下,FFmpeg使用UDP协议进行RTSP传输,但通过指定此参数,我们可以强制使用TCP协议。-vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。-preset ultrafast: 设置编码速度为ultrafast,以实现更快的编码速度,但可能牺牲一些压缩效率。-acodec libmp3lame: 设置音频编码器为libmp3lame,用于对音频进行MP3编码。-ar 44100: 设置音频采样率为44100 Hz。-ac 1: 设置音频通道数为1,即单声道。-r 25: 设置输出视频的帧率为25帧/秒。-f rtsp: 指定输出格式为RTSP(Real-Time Streaming Protocol)。rtsp://127.0.0.1:8554/webcam: 指定目标服务器的RTSP地址。
综上所述,该命令将从名为"HP 5MP Camera"的视频设备采集视频和音频数据,并使用libx264进行H.264视频编码,使用libmp3lame进行MP3音频编码。然后,它通过RTSP协议将编码后的数据以25帧/秒的帧率实时传输到指定的RTSP地址(rtsp://127.0.0.1:8554/webcam)。这样,在指定的服务器上可以接收并播放该实时视频流。
- windows桌面推流到RTMP服务
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -r 25 -s 1920*1080 -f flv rtmp://127.0.0.1/live/desktop
这个命令使用FFmpeg工具从桌面(屏幕)采集视频,并将其编码为H.264格式,音频编码为MP3格式,然后通过RTMP协议将其实时推流到指定的服务器地址。
让我们逐个解释每个参数的含义:
-f gdigrab: 指定输入格式为gdigrab,用于从桌面采集视频。-i desktop: 指定采集源为桌面。-vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。-preset ultrafast: 设置编码速度为ultrafast,以实现更快的编码速度,但可能牺牲一些压缩效率。-acodec libmp3lame: 设置音频编码器为libmp3lame,用于对音频进行MP3编码。-ar 44100: 设置音频采样率为44100 Hz。-ac 1: 设置音频通道数为1,即单声道。-r 25: 设置输出视频的帧率为25帧/秒。-s 1920x1080: 设置输出视频的分辨率为1920x1080像素。-f flv: 指定输出格式为FLV(Flash Video)。rtmp://127.0.0.1/live/desktop: 指定目标服务器的RTMP推流地址。
综上所述,该命令将从桌面采集视频数据,并使用libx264进行H.264视频编码,使用libmp3lame进行MP3音频编码。然后,它通过RTMP协议将编码后的数据以25帧/秒的帧率实时推流到指定的RTMP服务器地址(rtmp://127.0.0.1/live/desktop)。这样,在指定的服务器上可以接收并播放来自桌面的实时视频流。
- windows桌面推流到RTSP服务(rtp over udp)
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -r 25 -s 1920*1080 -f rtsp rtsp://127.0.0.1:8554/live/desktop
这个命令使用FFmpeg工具从桌面(屏幕)采集视频,并将其编码为H.264格式,音频编码为MP3格式,然后通过RTSP协议将其实时传输到指定的RTSP地址。
让我们逐个解释每个参数的含义:
-f gdigrab: 指定输入格式为gdigrab,用于从桌面采集视频。-i desktop: 指定采集源为桌面。-vcodec libx264: 设置视频编码器为libx264,用于对视频进行H.264编码。-preset ultrafast: 设置编码速度为ultrafast,以实现更快的编码速度,但可能牺牲一些压缩效率。-acodec libmp3lame: 设置音频编码器为libmp3lame,用于对音频进行MP3编码。-ar 44100: 设置音频采样率为44100 Hz。-ac 1: 设置音频通道数为1,即单声道。-r 25: 设置输出视频的帧率为25帧/秒。-f rtsp: 指定输出格式为RTSP(Real-Time Streaming Protocol)。rtsp://127.0.0.1:8554/live/desktop: 指定目标RTSP地址。
综上所述,该命令将从桌面采集视频数据,并使用libx264进行H.264视频编码,使用libmp3lame进行MP3音频编码。然后,它通过RTSP协议将编码后的数据以25帧/秒的帧率实时传输到指定的RTSP地址(rtsp://127.0.0.1:8554/live/desktop)。这样,在指定的RTSP服务器上可以接收并播放来自桌面的实时视频流。
- RTMP推流
ffmpeg -re -i input.flv -f flv -r 25 -s 1920*1080 -an "rtmp://127.0.0.1/live/test"
这个命令使用FFmpeg工具将输入的FLV文件实时推流到指定的RTMP服务器地址。
让我们逐个解释每个参数的含义:
-re: 将输入文件以实时模式读取。这将按照文件的原始帧率进行处理,而不是尽可能快地处理。-i input.flv: 指定输入文件为input.flv。你需要将此命令中的input.flv替换为实际的输入文件路径和名称。-f flv: 指定输出格式为FLV(Flash Video)。-r 25: 设置输出视频的帧率为25帧/秒。-s 1920x1080: 设置输出视频的分辨率为1920x1080像素。-an: 禁用音频流。这将确保在推流过程中没有音频被传输。"rtmp://127.0.0.1/live/test": 指定目标RTMP服务器的地址和流名称。你可以根据需要修改此地址和流名称。
综上所述,该命令将以实时模式读取FLV文件,并将其作为FLV格式的视频流通过RTMP协议实时推流到指定的RTMP服务器地址。输出的视频帧率为25帧/秒,分辨率为1920x1080像素,同时禁用了音频流的传输。请确保替换input.flv为实际的输入文件路径和名称,并根据需要修改RTMP服务器地址和流名称。
- 本地视频文件RTSP循环推流(tcp)
ffmpeg -re -stream_loop -1 -i test.mp4 -rtsp_transport tcp -vcodec h264 -acodec copy -f rtsp rtsp://127.0.0.1:8554/live/test
这是一个使用FFmpeg命令行工具将MP4视频文件通过RTSP协议进行传输的命令。下面是每个选项的解释:
-re:以实时速度读取输入文件。-stream_loop -1:设置输入文件循环播放,直到手动停止命令。-i test.mp4:指定输入文件为test.mp4。-rtsp_transport tcp:指定使用TCP传输协议进行RTSP传输。-vcodec h264:使用H.264编码器进行视频编码。-acodec copy:直接复制音频流,不进行重新编码。-f rtsp:将输出格式设置为RTSP。rtsp://127.0.0.1:8554/live/test:指定输出目标为RTSP服务器的地址和流名称。
通过执行该命令,你可以将test.mp4文件的视频流通过RTSP协议传输到本地主机上的名为"test"的RTSP流。请确保已经安装并正确配置了RTSP服务器来接收并处理该流。
相关文章:
FFmpeg常见命令行
1、ffmpeg命令行 视频生成图片 ffmpeg -i test.mp4 -r 25 -f image2 data/image%3d.jpg这个命令行使用FFmpeg工具将视频文件(test.mp4)转换为一系列图像文件。 让我们逐个解释每个参数的含义: -i test.mp4: 指定输入文件为test.mp4。-i是F…...
智能优化算法应用:基于斑马算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于斑马算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于斑马算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.斑马算法4.实验参数设定5.算法结果6.参考文献7.MA…...
《C++避坑神器·二十五》简单搞懂json文件的读写之遍历json文件读写
json.hpp库放在文章末尾 1、遍历json文件读写 (1)插入新键值对到json之情形1 原来json文件如下所示: {"Connection": {"IpAddress": "192.168.20.1","Rock": 0,"Solt": 1}, "Data…...
使用 fixture 机制重构 appium_helloworld
一、前置说明 在 pytest 基础讲解 章节,介绍了 pytest 的特性和基本用法,现在我们可以使用 pytest 的一些机制,来重构 appium_helloworld 。 appium_helloworld 链接: 编写第一个APP自动化脚本 appium_helloworld ,将脚本跑起来 代码目录结构: pytest.ini 设置: [pyt…...
基于python的excel检查和读写软件
软件版本:python3.6 窗口和界面gui代码: class mygui:def _init_(self):passdef run(self):root Tkinter.Tk()root.title(ExcelRun)max_w, max_h root.maxsize()root.geometry(f500x500{int((max_w - 500) / 2)}{int((max_h - 300) / 2)}) # 居中显示…...
Podman配置mongodb
文章目录 查询镜像拉取镜像查看镜像运行容器创建root用户 查询镜像 podman search mongo拉取镜像 podman pull docker.io/library/mongo查看镜像 podman images运行容器 podman run -d -p 27017:27017 --namemongodb-test docker.io/library/mongo创建root用户 podman exe…...
java实现矩阵谱峰搜索算法
矩阵谱峰搜索算法,也称为矩阵谱峰查找算法,是一种用于搜索二维矩阵中谱峰的方法。谱峰是指在矩阵中的一个元素,它比其上下左右四个相邻元素都大或相等。 该算法的基本思想是从矩阵的中间列开始,找到该列中的最大元素,…...
Jenkins的特殊操作定时自动执行任务以及测试报告调优
java -Dhudson.model.DirectoryBrowserSupport.CSP -jar Jenkins.war 测试报告 不美丽 执行上面的代码 重启jenkins 就好了...
【Grafana】Grafana匿名访问以及与LDAP连接
上一篇文章利用Docker快速部署了Grafana用来展示Zabbix得监控数据,但还需要给用户去创建账号允许他们登录后才能看展示得数据,那有什么办法让非管理员更方便得去访问Grafana呢?下面介绍两个比较方便实现的: 在开始设置前ÿ…...
elasticsearch-py 8.x的一些优势
早在 2022 年 2 月,当 Elasticsearch 8.0 发布时,Python 客户端也发布了 8.0 版本。它是对 7.x 客户端的部分重写,并带有许多不错的功能(如下所述),但也带有弃用警告和重大更改。今天,客户端的 7.17 版本仍然相对流行,每月下载量超过 100 万次,占 8.x 下载量的 ~50…...
RK3588平台开发系列讲解(AI 篇)RKNN 数据结构详解
文章目录 一、rknn_sdk_version二、rknn_input_output_num三、rknn_tensor_attr四、rknn_perf_detail五、rknn_perf_run六、rknn_mem_size七、rknn_tensor_mem八、rknn_input九、rknn_output沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN 相关的数…...
2023版本QT学习记录 -6- UDP通信之UDP接收端
———————UDP接收端——————— 🎄动图演示 🎄发送端通信步骤思维导图 🎄添加组件 QT core gui network🎄添加头文件 #include "qudpsocket.h"🎄创建接收对象 QUdpSocket *recvsocket;&…...
C预处理 | pragma详解
欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…...
轻松搭建知识付费小程序:让知识传播更便捷
明理信息科技saas知识付费平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和维护…...
沉浸式go-cache源码阅读!
大家好,我是豆小匠。 这期来阅读go-cache的源码,了解本地缓存的实现方式,同时掌握一些阅读源码的技巧~ 1. 源码获取 git clone https://github.com/patrickmn/go-cache.git用Goland打开可以看到真正实现功能的也就两个go文件,ca…...
伪协议和反序列化 [ZJCTF 2019]NiZhuanSiWei
打开题目 代码审计 第一层绕过 if(isset($text)&&(file_get_contents($text,r)"welcome to the zjctf")){ echo "<br><h1>".file_get_contents($text,r)."</h1></br>"; 要求我们get传参的text内容必须为w…...
性能优化之资源优化
性能优化之资源优化 资源优化性能关键检测流程。浅析一下基于Unity3D 美术规则约束一、模型层面二、贴图层面三、动画层面四、声音层面:(音频通用设置)五、UI层面: 题外点:诚然在优化中,美术占比是很重要的…...
ChatGPT免费 | 8个免费使用GPT-4的方法
这篇文章为寻找免费使用GPT-4技术的读者提供了一份实用的指南。 每个推荐的平台都包括了简要的描述和链接,方便读者直接访问。 以下是根据你提供的内容,稍作整理的文章结构: 1. HuggingFace 描述: 提供GPT-4等多种语言模型的平台。 如何使用:…...
解决Qt“报无法定位程序输入点xxx于动态连接库“问题
今天,在使用QtVS2019编译工程时,弹出"无法定位程序输入点xxx于动态链接库"问题,如图(1)所示: 图(1) 报"无法定位程序输入点xxx于动态链接库"问题 出现这种问题的原因有很多: (1) 工程Release/Deb…...
wpf-MVVM绑定时可能出现的内存泄漏问题
文章速览 引言错误示范示例1示例2 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 引言 正确结构: Model <——> ViewModel <——> View 但很多时候,很容易出现…...
星链引擎:AI 驱动的全域营销决策自动化系统技术实现
一、引言在当前数字化营销时代,企业面临着前所未有的数据爆炸和决策复杂度。一个典型的全域营销场景中,企业每天需要处理来自多个平台的数百万条用户行为数据,同时还要根据市场变化、竞品动态和用户反馈,实时调整内容策略、发布策…...
别再死记硬背了!用MATLAB的`strel`函数玩转形态学:从结构元素选择到开闭运算除噪
别再死记硬背了!用MATLAB的strel函数玩转形态学:从结构元素选择到开闭运算除噪 在数字图像处理的学习过程中,很多初学者都会陷入一个误区:机械地记忆膨胀、腐蚀、开运算、闭运算的定义,却忽略了形态学操作中最关键的一…...
Vigil与其他监控工具集成:构建全方位监控体系的3种方案
Vigil与其他监控工具集成:构建全方位监控体系的3种方案 【免费下载链接】vigil 🚦 Microservices Status Page. Monitors a distributed infrastructure and sends alerts (Slack, SMS, etc.). 项目地址: https://gitcode.com/gh_mirrors/vig/vigil …...
Cursor Pro功能完全解锁指南:三步实现免费无限使用体验
Cursor Pro功能完全解锁指南:三步实现免费无限使用体验 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tr…...
用74LS181和6116芯片手把手复现CPU累加器:计算机组成原理实验避坑指南
74LS181与6116芯片实战:从零构建CPU累加器的硬件艺术 实验室的灯光下,几块看似普通的集成电路板正等待着被赋予生命。对于计算机专业的学生和硬件爱好者而言,用74LS181算术逻辑单元(ALU)和6116静态RAM芯片亲手搭建一个CPU累加器,…...
告别闪烁!用STM32和Multisim搞定LED PWM调光,从仿真到实战保姆级教程
从零构建无频闪LED调光系统:STM32硬件PWM与Multisim滤波电路全解析 当你在深夜伏案工作时,台灯突然出现肉眼可见的闪烁;当你在实验室观察培养样本时,光源的不稳定导致数据出现偏差——这些恼人的场景背后,往往隐藏着L…...
AssetRipper完整指南:从游戏资源提取到Unity项目重建的终极工具
AssetRipper完整指南:从游戏资源提取到Unity项目重建的终极工具 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper AssetRipp…...
环绕在我们周围的数据:从体育到家庭管理
原文:towardsdatascience.com/the-data-all-around-us-from-sports-to-household-management-9ce3f2f97e4c?sourcecollection_archive---------11-----------------------#2024-09-12 https://towardsdatascience.medium.com/?sourcepost_page---byline--9ce3f2f9…...
从标准库到HAL库:STM32驱动TFTLCD的代码移植实战
1. 为什么需要从标准库迁移到HAL库? 最近在做一个智能家居控制面板项目时,遇到了一个典型问题:厂家提供的TFTLCD驱动代码是基于标准外设库(Standard Peripheral Library)开发的,但项目要求使用STM32CubeMX工…...
如何快速解锁WeMod完整功能:WandEnhancer终极使用指南
如何快速解锁WeMod完整功能:WandEnhancer终极使用指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer WandEnhancer是一款专为WeMod应用设计…...
