8. 100ASK_V853-PRO开发板支持MPP媒体处理平台
0.前言
MPP 系统控制模块,根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作状态、提供当前 MPP 系统的版本信息等功能。 应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。同理,应用程序退出 MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源。
本章主要讲述如何在Tina SDK中增加MPP补丁包和如何编译使用,该补丁包含有MPP部分的源码。具体MPP如何开发可以参考位于百度网盘中的100ASK_V853-PRO开发板的资料光盘中01_学习手册/《100ASK-V853_Pro系统开发手册》,该手册中的第四篇 基础组件开发中的第七章 Tina Linux 多媒体MPP 开发指南,此章节详细说明了100ASK_V853-PRO开发板针对MPP 系统控制模块的开发指导。
100ASK_V853-PRO开发板的资料光盘:
链接:https://pan.baidu.com/s/1TX742vfEde9bMLd9IrwwqA?pwd=sp6a
提取码:sp6a
全志MPP_sample_使用说明:https://tina.100ask.net/SdkModule/Linux_MPP_Sample_Instructions-01/
100ASK_V853-PRO开发板资料汇总:
链接:100ASK_100ASK-PRO 资料汇总 - Allwinner / V853-Pro - 嵌入式开发问答社区
100ASK_V853-PRO开发板购买链接:100ASK_V853-PRO开发板
1.增加MPP扩展包
MPP扩展包:
下载完成后,将sunxi-mpp.tar.gz
压缩包放入虚拟机的任意目录,假设放在/home/book/workspaces
目录下,
例如:
ook@100ask:~/workspaces$ ls
100ASK_V853-PRO_TinaSDK sunxi-mpp.tar.gz tina-v853-open
解压sunxi-mpp.tar.gz
压缩包,输入
tar -xzvf sunxi-mpp.tar.gz
例如:
book@100ask:~/workspaces$ tar -xzvf sunxi-mpp.tar.gz
sunxi-mpp/
sunxi-mpp/CMake/
sunxi-mpp/CMake/sunxi_mpp_lib.cmake
sunxi-mpp/CMake/sunxi_mpp_include.cmake
...
等待解压完成后进入sunxi-mpp
目录下,即可查看当前目录下的文件
book@100ask:~/workspaces$ cd sunxi-mpp/
book@100ask:~/workspaces/sunxi-mpp$ ls
CMake CMakeLists.txt include lib README.md sample STAGING_DIR.sh toolchain
下面对各文件夹进行说明
CMake:设置mpp各文件的头文件和依赖目录
CMakeLists.txt:设置编译文件、交叉编译工具链位置、依赖等位置和规则信息
include:包含MPP扩展包所需的头文件
lib:包含MPP扩展包所需的依赖文件
sample:包含MPP个应用示例源码
STAGING_DIR.sh:设置环境变量
toolchain:包含V853交叉编译工具链
2.编译MPP扩展包
添加交叉编译环境变量,这里仅需要增加sunxi-mpp
的位置的环境变量,输入
book@100ask:~/workspaces/sunxi-mpp$ export CMAKE_CURRENT_SOURCE_DIR=~/workspaces/sunxi-mpp
激活环境变量,输入
book@100ask:~/workspaces/sunxi-mpp$ source STAGING_DIR.sh
创建build目录,用于编译和存储编译后的应用程序
book@100ask:~/workspaces/sunxi-mpp$ mkdir build
进入build
目录下,执行cmake ..
,配置工具链、暂存目录和编译规则
book@100ask:~/workspaces/sunxi-mpp$ cd build/
book@100ask:~/workspaces/sunxi-mpp/build$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- STAGING_DIR: build
-- Configuring done
-- Generating done
-- Build files have been written to: /home/book/workspaces/sunxi-mpp/build
执行完成后会在build
目录下生成以下文件,其中bin
目录用于存储生成后的二进制应用程序。
book@100ask:~/workspaces/sunxi-mpp/build$ ls
bin CMakeCache.txt CMakeFiles cmake_install.cmake Makefile sample STAGING_DIR.sh
编译mpp应用程序,输入
book@100ask:~/workspaces/sunxi-mpp/build$ make
Scanning dependencies of target sample_virvi2vo
[ 1%] Building C object sample/sample_virvi2vo/CMakeFiles/sample_virvi2vo.dir/sample_virvi2vo.c.o
[ 2%] Linking C executable ../../bin/sample_virvi2vo
[ 2%] Built target sample_virvi2vo
...
Scanning dependencies of target sample_demux2adec2ao
[ 99%] Building C object sample/sample_demux2adec2ao/CMakeFiles/sample_demux2adec2ao.dir/sample_demux2adec2ao.c.o
[100%] Linking C executable ../../bin/sample_demux2adec2ao
[100%] Built target sample_demux2adec2ao
编译完成后可以进入bin
目录下查看编译生成的二进制文件。
book@100ask:~/workspaces/sunxi-mpp/build$ cd bin/
book@100ask:~/workspaces/sunxi-mpp/build/bin$ ls
sample_adec sample_CodecParallel sample_MotionDetect sample_uvc2vo sample_virvi2venc
sample_aec sample_demux2adec sample_multi_vi2venc2muxer sample_uvcout sample_virvi2venc2muxer
sample_aenc sample_demux2adec2ao sample_rtsp sample_uvc_vo sample_virvi2vo
sample_ai sample_demux2vdec sample_smartIPC_demo sample_venc sample_virvi2vo_zoom
sample_ai2aenc sample_demux2vdec2vo sample_smartPreview_demo sample_venc2muxer sample_vo
sample_ai2aenc2muxer sample_demux2vdec_saveFrame sample_timelapse sample_vi_g2d yuv420pTobmp
sample_ao sample_driverVipp sample_UILayer sample_vin_isp_test
sample_ao_resample_mixer sample_g2d sample_uvc2vdec_vo sample_vi_reset
sample_aoSync sample_glog sample_uvc2vdenc2vo sample_virvi
关于如何测试使用MPP应用程序,请一定要参考:
全志MPP_sample_使用说明:https://tina.100ask.net/SdkModule/Linux_MPP_Sample_Instructions-01/
如果《全志MPP_sample_使用说明》中没有测试说明,可查看每个示例程序中的Readme.txt
。例如,假设我需要sample_driverVipp
程序,需要进入该源码目录下,输入
book@100ask:~/workspaces/sunxi-mpp$ cd sample/sample_driverVipp/
book@100ask:~/workspaces/sunxi-mpp/sample/sample_driverVipp$ ls
CMakeLists.txt Readme.txt sample_driverVipp.c sample_driverVipp.h
可以看到源码目录中有一个Readme.txt文件,该文件详细说明了如何进行测试。
book@100ask:~/workspaces/sunxi-mpp/sample/sample_driverVipp$ cat Readme.txt
sample_driverVipp:该sample演示直接调用linux内核驱动获取frame。按下ctrl+c,终止测试。每隔若干帧保存一帧到指定的目录。读取测试参数的流程:sample只支持命令行模式输入参数。如果不输入参数,会提示输入。从命令行启动sample_driverVipp的指令:./sample_driverVipp或./sample_driverVipp 0 1920 1080 8 60 0 10 60 /mnt/extsd测试参数的说明:
(1)video device: 0~3 (vipp0~vipp3)
(2)capture_width:指定camera采集的图像宽度
(3)capture_height:指定camera采集的图像高度
(4)pixel_format:指定camera采集的图像格式
(5)fps:指定camera采集的帧率
(6)test frame count:指定测试采集的frame总数,0表示无限。
(7)store count: 指定保存的图像数量。
(8)store interval: 指定保存图像的周期,即每n帧图像保存1帧。
(9)frame saving path: 指定保存图像的目录,该目录要确保存在。
如果您想使用MPP进行开发,编写自己的应用程序,请阅读位于百度网盘资料中的100ASK_V853-PRO开发板的资料光盘中01_学习手册/《100ASK-V853_Pro系统开发手册》,该手册中的第四篇 基础组件开发中的第七章 Tina Linux 多媒体MPP 开发指南,此章节详细说明了100ASK_V853-PRO开发板针对MPP 系统控制模块的开发指导。
3.测试MPP应用程序
测试MPP应用程序需要增加开发板的依赖文件,该依赖文件位于sunxi-mpp/lib
目录下,如下图所示
将该目录下的全部文件拷贝到开发板的lib
目录下,假设我使用TF卡将其拷贝到开发板上,将lib文件夹拷贝到TF卡中,在将TF插入100ASK_V853-PRO开发板上,挂载TF卡,输入
root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/
挂载完成后进入TF目录下
root@TinaLinux:/# cd /mnt/extsd/
root@TinaLinux:/mnt/extsd# ls
System Volume Information lib
可以看到lib
文件夹,将lib
目录下的全部文件拷贝到开发板的lib
目录下,输入
root@TinaLinux:/mnt/extsd# cp lib/* /lib/
等待拷贝完成即可。
3.1 测试LCD上实时预览摄像头数据应用程序
硬件要求:100ASK_V853-PRO开发板、4寸MIPI显示屏、MIPI摄像头。
示例名称为:sample_virvi2vo
源码路径:sunxi-mpp/sample/sample_virvi2vo/
该示例演示了通过摄像头获取数据并实时显示在LCD屏幕上,下面演示如何将编译好的应用程序在100ASK_V853-PRO开发板上运行。
编译mpp扩展包后,会在sunxi-mpp/build/bin
目录下生成sample_virvi2vo
文件,将生成的文件拷贝到TF卡上备用。
将sunxi-mpp/sample/sample_virvi2vo
目录下的sample_virvi2vo.conf
拷贝到TF卡下备用。
将sunxi-mpp/lib
整个目录拷贝到TF卡备用。
拷贝完成后,将TF卡插入100ASK_V853-PRO开发板后,将TF卡挂载到开发板上,输入mount /dev/mmcblk1p1 /mnt/extsd/
root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/
[ 168.601231] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
进入挂载目录/mnt/extsd/
root@TinaLinux:/# cd /mnt/extsd/
查看对应文件是否存在
root@TinaLinux:/mnt/extsd# ls
System Volume Information sample_virvi2vo
sample_virvi2vo.conf
运行测试程序,输入./sample_virvi2vo -path ./sample_virvi2vo.conf
root@TinaLinux:/mnt/extsd# ./sample_virvi2vo -path ./sample_virvi2vo.conf
执行完后,会在MIPI屏上实时显示摄像头获取的图像数据。
应用程序执行设定时间后会自动结束,也可以通过按下Crtl+C提前结束测试。
3.2 测试实时预览人脸识别和人形识别应用程序
硬件要求:100ASK_V853-PRO开发板、4寸MIPI显示屏、MIPI摄像头。
示例名称为:sample_smartPreview_demo
源码路径:sunxi-mpp/sample/sample_smartPreview_demo
该示例演示了通过摄像头获取图像数据后使用人脸模型或人形模型进行处理后,将打框后的结果实时显示在LCD屏幕上,下面演示如何将编译好的应用程序在100ASK_V853-PRO开发板上运行。
编译mpp扩展包后,会在sunxi-mpp/build/bin
目录下生成sample_smartPreview_demo
文件,将生成的文件拷贝到TF卡上备用。
将sunxi-mpp/sample/sample_smartPreview_demo/models/fdet
目录下的face.nb
人脸模型拷贝到TF卡中备用。
将sunxi-mpp/sample/sample_smartPreview_demo/models/pdet
目录下的2.0.0_Gamma.nb
人形模型文件拷贝到TF卡中备用。
将sunxi-mpp/sample/sample_smartPreview_demo
目录下的sample_smartPreview_demo.conf
参数文件拷贝到TF卡中备用。
拷贝完成后,将TF卡插入100ASK_V853-PRO开发板后,将TF卡挂载到开发板上,输入mount /dev/mmcblk1p1 /mnt/extsd/
root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/
[ 168.601231] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
进入挂载目录/mnt/extsd/
root@TinaLinux:/# cd /mnt/extsd/
查看对应文件是否存在
root@TinaLinux:/mnt/extsd# ls
2.0.0_Gamma.nb sample_smartPreview_demo
System Volume Information sample_smartPreview_demo.conf
face.nb
修改sample_smartPreview_demo.conf
文件,假设我这里使用的是百问网的4寸MIPI屏和2Line MIPI摄像头,需要测试的是人脸识别模型,需要修改该文件为:
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
main_isp_dev = 0
main_vipp_dev = 0
main_capture_width = 360
main_capture_height = 640
main_layer_num = 0
main_display_x = 0
main_display_y = 0
main_display_width = 480
main_display_height = 800
main_nn_nbg_type = 1 #-1:disable, 0:human, 1:face
main_nn_isp = 0
main_nn_vipp = 8
main_nn_vi_buf_num = 3
main_nn_src_frame_rate = 20 #fps
main_nn_nbg_file_path = "face.nb"
main_nn_draw_orl_enable = 1sub_isp_dev = 1
sub_vipp_dev = 1
sub_capture_width = 1920
sub_capture_height = 1080
sub_layer_num = 1
sub_display_x = 0
sub_display_y = 00
sub_display_width = 480
sub_display_height = 800
sub_nn_nbg_type = 1 #-1:disable, 0:human, 1:face
sub_nn_isp = 1
sub_nn_vipp = 9
sub_nn_vi_buf_num = 3
sub_nn_src_frame_rate = 20 #fps
sub_nn_nbg_file_path = "face.nb"
sub_nn_draw_orl_enable = 1disp_type = "lcd" #disp_type is lcd, hdmi, cvbs
pic_format = "nv21" #pic_format is yu12, yv12, nv21, nv12
frame_rate = 20 #fpsorl_thick=200
test_duration = 0 #unit:s, 0:Infinite duration.
如果需要测试人形检测,也需要修改sample_smartPreview_demo.conf
文件中的,将main_nn_nbg_type
设置为0、main_nn_nbg_file_path
设置为人形模型的路径名称,例如:
main_nn_nbg_type = 1
main_nn_nbg_file_path = "2.0.0_Gamma.nb"
运行测试程序:
root@TinaLinux:/mnt/extsd# ./sample_smartPreview_demo -path sample_smartPreview_demo.conf
执行后,显示屏端会接收摄像头的数据,但一开始会丢弃部分图像数据,可能会导致一开始的画面卡顿。测试成功后会在显示屏上实时显示摄像头的数据,并可以对摄像头的图像中的人脸进行打框。
4.总结
对于其他应用程序这里就不逐一去演示,大家可以参考每个示例的程序的Readme.txt或《全志MPP_sample_使用说明》进行测试体验,参考《Tina Linux 多媒体MPP 开发指南》进行开发。MPP媒体处理平台的可玩性和公开程度都适合大家去开发自己的应用程序,希望通过这章节可以让大家了解MPP的使用。
相关文章:

8. 100ASK_V853-PRO开发板支持MPP媒体处理平台
0.前言 MPP 系统控制模块,根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作…...

CLMP证书:让你在职场中脱颖而出的秘密武器!
CLMP证书是一种精益管理专业证书,是针对精益管理领域的专业人士和学生的培训项目,旨在提高他们在精益管理方面的技能和知识。那么,CLMP证书的含金量高吗?接下来我们来探讨一下。 CLMP证书的优势体现 首先,CLMP证书的…...

【从零开始】Docker Desktop:听说你小子要玩我
前言 🍊缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重,高强度的搬砖导致摸鱼时间下降。在上线项目时,看到运维大神一系列骚操作,dockerk8s的知识如过眼云烟,忘得干净的很。所以想重新恶补一下docker知识&…...

制造业为什么要数字化?
制造业数字化,主要包含以下一些因素,有优势也有缺点: 制造业数字化的优势: 提高效率:数字化允许各种制造过程自动化,可以提高效率并降低成本。可以缩短生产时间、减少浪费并提高生产率。 增强质量控制&am…...

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗
🍎道阻且长,行则将至。🍓 目录 引言:西部世界元宇宙,还记得吗ChatGPT 的世界? 下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景…...
Shell编程入门讲解
一.简介 Shell 是一个用 C 语言编写的命令行解释器,它是用户使用 Linux 的桥梁,它接受应用程序/用户命令,然后调用操作系统内核。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提…...
C++ 变量作用域
C 变量作用域 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称为形式参数。 在所有函数外部声明的变量,称为全局变量。…...
【状态未成功】CONFIG_CFI_CLANG失败过程记录
实现并没有成功,只是记录过程,使用4.9内核尝试开启过程 关于 控制流完整性 (CFI) 是一种安全机制,它不允许更改已编译二进制文件的原始控制流图,因而执行此类攻击变得异常困难。 在 Android 9 中,我们在更多组件以及内…...

基于消息调度优化启动速度方案实践
背景 在抖音的技术博客 https://juejin.cn/post/7080065015197204511#heading-10中,其介绍了通过修改消息队列顺序实现冷启动优化的方案,不过并未对其具体实现展开详细说明。 本文是对其技术方案的思考验证及实现。 详细代码见github: https://github.c…...

【C#】RemoveAt索引越界问题
系列文章 【C#】单号生成器(编号规则、固定字符、流水号、产生业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器(开始日期、结束日期) 本文链接:h…...
【华为OD机试2023】工位序列统计友好度最大值 100% C++ Java Python
【华为OD机试2023】工位序列统计友好度最大值 100% C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出…...
Rust Atomics and Locks 阅读笔记 第二章 Atomics
原子操作(atomic operations)是多线程实现的基石,互斥锁(mutex)和条件变量(condition variable)都是通过原子操作来实现;std::sync::atomic包括了rust的内置原子操作类型(…...
Helm3入门
目录 Helm三大概念 Chart Repository Release Helm相关命令 helm 命令公共参数 helm search hub/repo - 查找可用的Charts helm repo - 仓库操作 helm install - 安装Chart helm status - 查看release状态 helm show values - 查看Chart的values.yaml内容 helm get…...
动态规划-线性动态规划-最长上升子序列模型
title: 线性动态规划 date: 2023-05-12 08:49:10 categories: Algorithm动态规划 tags:动态规划 编辑距离 题目描述 设 A A A 和 B B B 是两个字符串。我们要用最少的字符操作次数,将字符串 A A A 转换为字符串 B B B。这里所说的字符操作共有三种࿱…...

ResNet 论文理解含视频
ResNet 论文理解 论文理解 ResNet 网络的论文名字是《Deep Residual Learning for Image Recognition》,发表在2016年的 CVPR 上,获得了 最佳论文奖。ResNet 中的 Res 也是 Residual 的缩写,它的用意在于基于 残差 学习,让神经网…...

Java8之Stream操作
Java8之Stream操作 stream干啥用的?创建流中间操作终结操作好文推荐----接口优化思想 stream干啥用的? Stream 就是操作数据用的。使用起来很方便 创建流 → 中间操作 → 终结操作 Stream的操作可以分为两大类:中间操作、终结操作 中间操作可…...

二分查找基础篇-JAVA
文章目录 前言 大家好,我是最爱吃兽奶,这篇博客给大家介绍一下二分查找,我们先从最基本的开始讲解,再慢慢深入,把优化和变形也和大家说一下,那么,跟着我的步伐,我们一起去看看吧! 一、什么是二分查找? 二分查找(Binary Search)也称作折半查找 二分查找的效率很高,每查找一次…...

shell脚本5数组
文章目录 数组1 数组定义方法2 获取数组长度2.1 读取数组值2.2 数组切片2.3 数组替换2.4 数组删除2.5 追加数组元素 3 实验3.1 冒泡法3.2 直接选择法3.3 反排序法 数组 1 数组定义方法 数组名(value0 valuel value2 …) 数组名( [0]value [1]value [2]value …) 列表名“val…...

Kubernetes二进制部署 单节点
目录 1.环境准备 1.关闭防火墙和selinux 2.关闭swap 3.设置主机名 4.在master添加hosts 5.桥接的IPv4流量传递到iptables的链 6.时间同步 2.部署etcd集群 1.master节点部署 2.在node1与node2节点修改 3.在master1节点上进行启动 4.部署docker引擎 3.部署 Master 组…...

基于VC + MSSQL实现的县级医院医学影像PACS
一、概述: 基于VC MSSQL实现的一套三甲医院医学影像PACS源码,集成3D后处理功能,包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。 二、医学影像PACS实现功能: 1、…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...