皮皮网

【微柚云源码】【直播弹幕互斗游戏源码】【vue3如何阅读源码】sys视频分享源码_sys手机视频分享源

来源:工程 stm32 源码 时间:2024-11-23 03:56:56

1.聊聊代码仓库可视化:gource 篇
2.13款优秀的视手机视频AI视频生成制作剪辑工具软件推荐
3.播放视频出现classpnp.sys蓝屏怎么解决_如何解决播放视频出现classpnp.sys蓝屏
4.《STM32MP1 M4裸机CubeIDE开发指南》第二十三章 SysTick高精度延时实验
5.掌握这些AI生成视频工具,你的频分电商流量焦虑会少一半

sys视频分享源码_sys手机视频分享源

聊聊代码仓库可视化:gource 篇

       æœ¬ç¯‡æ–‡ç« å°†èŠèŠå¦‚何高效的将代码仓库中的提交记录和目录结构,快速转变为“酷炫的视频”。分享如何使用 Docker 在不同 CPU 架构的设备上运行 gource,以及如何基于最新的 M1 Pro 芯片的设备,让制作可视化视频的效率成倍提升。

写在前面

       å‰ä¸€é˜µä¸ºäº†åº†ç¥ç¤¾åŒºé¡¹ç›® Milvus 在 GitHub 获得了一万颗星星,我制作了一个视频,用来动态的展示在过去的时间里,这个项目的具体提交状况和项目组织架构变化状况。

       æœ€è¿‘有同事聊开源项目的“维护血泪史”时,又提到了这件事。勾起了我当时制作视频的痛苦回忆:当时的视频制作方案是使用 Docker 运行 gource。在针对诸如 Milvus 仓库这种提交量比较大的仓库时(1.4万提交),想要生成可视化视频,使用我手头的 i9 处理器的设备,至少需要跑个把小时。而当我将相同的操作换到 M1 设备(M1 Pro)运行后,或许是因为 docker 中的应用并未针对 ARM 芯片做优化、又或许是 docker 中的程序版本不够新,相同的工作量,甚至需要跑半天才能搞定! 不论如何,这个结果未免太不科学了。

       ä¸”不说 M1 的运行结果“出乎意料”,但就是个把小时的视频生成时间,也让我感觉挺不舒服的。作为一个追求效率的老程序员,我花了一些时间,终于摸索出了这个问题的“正确答案”:如果使用针对 M1 芯片而编译的程序,整个视频的生成时间可以缩短到半个小时左右,相比较之前提升效果颇为明显。

       åœ¨å±•å¼€èŠèŠæˆ‘是如何做的之前,我想先介绍一下 gource 这款开源软件。

关于 Gource

        年,来自新西兰的工程师 Andrew Caudwell,希望能够将各种代码版本管理软件的信息可视化,于是他使用 C++ 编写了 Gource 这个程序。 年,项目从 Google Code 迁移至 GitHub 后,项目开启了年更模式。

       æ¯”较幸运的是,截止本文成文写出的时候,软件已经发布了今年的两个重要更新:包含视网膜屏幕的支持,以及针对字体缩放功能进行了大量修正,并将软件使用的正则库升级为了 PCRE2,程序版本更新到了 0. 。

       å› ä¸ºé¡¹ç›®åœ¨ GitHub 发布页面中只提供了 Windows 版本的程序,所以如果我们想获取 Linux / macOS 的新版本程序,就只能自己进行编译啦。(Ubuntu APT 仓库中的版本还停留在 年发布的 0.)

       æŽ¥ä¸‹æ¥ï¼Œæˆ‘们先来聊聊如何进行编译,如果你希望使用 Docker 或 x 设备,可以阅读本文后面的章节。

在 M1 设备上进行 Gource 的编译

       ä¸ºäº†èƒ½å¤Ÿåœ¨ macOS 上完成新版本的程序编译,我们需要先完成 gource 的依赖安装:

brew?install?pkg-config?freetype2?pcre2?glow?sdl2?sdl2_image?boost?glm?autoconf

       å¦‚果你没有完成上述依赖的安装,那么在执行 ./configure 的时候,一定会遇到诸如下面的问题:

checking?for?FT2...?configure:?error:?in?`/Users/soulteary/lab/gource-0.':configure:?error:?The?pkg-config?script?could?not?be?found?or?is?too?old.Make?sure?itis?in?your?PATH?or?set?the?PKG_CONFIG?environment?variable?to?the?fullpath?to?pkg-config....No?package?'libpcre2-8'?found...

       å½“我们安装完毕依赖之后,还需要配置一下编译参数,让程序在编译的时候能够找到我们刚刚安装的依赖。不然,就会出现类似下面的错误:

checking?for?boostlib?>=?1.?()...?configure:?We?could?not?detect?the?boost?libraries?(version?1.?or?higher).?If?you?have?a?staged?boost?library?(still?not?installed)?please?specify?$BOOST_ROOT?in?your?environment?and?do?not?give?a?PATH?to?--with-boost?option.If?you?are?sure?you?have?boost?installed,?then?check?your?version?number?looking?in?<boost/version.hpp>.?See?patible?install...?/usr/bin/install?-cchecking?whether?build?environment?is?sane...?yeschecking?for?a?thread-safe?mkdir?-p...?build-aux/install-sh?-c?-dchecking?for?gawk...?nochecking?for?mawk...?nochecking?for?nawk...?nochecking?for?awk...?awkchecking?whether?make?sets?$(MAKE)...?yeschecking?whether?make?supports?nested?variables...?yeschecking?build?system?type...?arm-apple-darwin.4.0checking?host?system?type...?arm-apple-darwin.4.0checking?for?g++...?g++checking?whether?the?C++?compiler?works...?yeschecking?for?C++?compiler?default?output?file?name...?a.outchecking?for?suffix?of?executables...?checking?whether?we?are?cross?compiling...?nochecking?for?suffix?of?object?files...?ochecking?whether?we?are?using?the?GNU?C++?compiler...?yeschecking?whether?g++?accepts?-g...?yeschecking?for?style?of?include?used?by?make...?GNUchecking?dependency?style?of?g++...?gcc3checking?for?timegm...?yeschecking?for?unsetenv...?yeschecking?how?to?run?the?C++?preprocessor...?g++?-Echecking?for?X...?disabledchecking?for?a?sed?that?does?not?truncate?output...?/usr/bin/sedchecking?for?gcc...?gccchecking?whether?we?are?using?the?GNU?C?compiler...?yeschecking?whether?gcc?accepts?-g...?yeschecking?for?gcc?option?to?accept?ISO?C...?none?neededchecking?whether?gcc?understands?-c?and?-o?together...?yeschecking?dependency?style?of?gcc...?gcc3checking?for?the?pthreads?library?-lpthreads...?nochecking?whether?pthreads?work?without?any?flags...?yeschecking?for?joinable?pthread?attribute...?PTHREAD_CREATE_JOINABLEchecking?if?more?special?flags?are?required?for?pthreads...?-D_THREAD_SAFEchecking?how?to?run?the?C?preprocessor...?gcc?-Echecking?for?grep?that?handles?long?lines?and?-e...?/usr/bin/grepchecking?for?egrep...?/usr/bin/grep?-Echecking?for?ANSI?C?header?files...?yeschecking?for?sys/types.h...?yeschecking?for?sys/stat.h...?yeschecking?for?stdlib.h...?yeschecking?for?string.h...?yeschecking?for?memory.h...?yeschecking?for?strings.h...?yeschecking?for?inttypes.h...?yeschecking?for?stdint.h...?yeschecking?for?unistd.h...?yeschecking?whether?we?are?using?the?Microsoft?C?compiler...?nochecking?windows.h?usability...?nochecking?windows.h?presence...?nochecking?for?windows.h...?nochecking?for?GL/gl.h...?nochecking?for?OpenGL/gl.h...?yeschecking?for?OpenGL?library...?-framework?OpenGLchecking?for?GL/glu.h...?nochecking?for?OpenGL/glu.h...?yeschecking?for?OpenGL?Utility?library...?yeschecking?for?varargs?GLU?tesselator?callback?function?type...?nochecking?for?pkg-config...?/opt/homebrew/bin/pkg-configchecking?pkg-config?is?at?least?version?0.9.0...?yeschecking?for?FT2...?yeschecking?for?PCRE2...?yeschecking?for?GLEW...?yeschecking?for?SDL2...?yeschecking?for?PNG...?yeschecking?for?IMG_LoadPNG_RW...?yeschecking?for?IMG_LoadJPG_RW...?yeschecking?for?boostlib?>=?1.?()?includes?in?"/opt/homebrew/Cellar/boost/1..0_1//include"...?yeschecking?for?boostlib?>=?1.?()?lib?path?in?"/opt/homebrew/Cellar/boost/1..0_1//lib/arm-darwin.4.0"...?nochecking?for?boostlib?>=?1.?()?lib?path?in?"/opt/homebrew/Cellar/boost/1..0_1//lib"...?yeschecking?for?boostlib?>=?1.?()...?yeschecking?whether?the?Boost::System?library?is?available...?yeschecking?for?exit?in?-lboost_system...?yeschecking?whether?the?Boost::Filesystem?library?is?available...?yeschecking?for?exit?in?-lboost_filesystem...?yeschecking?glm/glm.hpp?usability...?yeschecking?glm/glm.hpp?presence...?yeschecking?for?glm/glm.hpp...?yeschecking?that?generated?files?are?newer?than?configure...?doneconfigure:?creating?./config.statusconfig.status:?creating?Makefileconfig.status:?executing?depfiles?commands

       æŽ¥ä¸‹æ¥ï¼Œæ‰§è¡Œ make ,系统就会开始对 gource 进行编译,在编译完成之后,接着执行 sudo make install,gource 的编译安全就结束啦。

在 M1 设备上使用 Gource 进行代码仓库可视化

       åœ¨ä½¿ç”¨ gource 制作视频前,我们需要评估项目所需的硬盘空间,生成视频的尺寸和仓库的提交量(commits)、总的文件目录数量、项目维护时间长,都有很大关系,这里以前文中提到的 Milvus 仓库为例。

       è¿™ä¸ªä»“库从 年开始维护,截止当前有 1.4 万次提交,如果想我们生成 x 尺寸的视频内容,假设将项目每天的提交数据展示的时间设置为 1 秒,过程中将输出 多 GB 的 临时文件(PPM 截图文件),所以在开始进行仓库可视化之前,请确认你的硬盘留有足够的空间。

下载要进行可视化的代码仓库

       å¯è§†åŒ–的第一步,是将我们要可视化的仓库下载到本地,比如:

git?clone?/milvus-io/milvus.git使用 Gource 进行可视化渲染

       æŽ¥ä¸‹æ¥ï¼Œæˆ‘们需要使用 gource 指定我们未来希望得到的视频的最大分辨率,以及一些关键细节:

       æˆ‘们希望这个视频中,每一天的展示时间为多久(本例为1秒)

       æˆ‘们希望这个视频中,视频的最大帧率是多少(本例为帧)

       æˆ‘们希望输出的文件名和刚刚使用 git clone 下载好的仓库的目录名是什么

gource?--viewport?x?\--high-dpi?\--seconds-per-day?1?\--output-ppm-stream?milvus.ppm?\--output-framerate??\milvus

       æ‰§è¡Œä¸Šé¢çš„命令,程序将会打开一个预览界面,开始将仓库的每一次提交记录和当时的目录结构进行可视化绘制。

       ç»è¿‡ç›¸å¯¹æ¼«é•¿çš„等待之后(分钟左右),当命令执行完毕,我们就得到了包含所有代码仓库提交信息、目录变化信息的临时文件:milvus.ppm。

使用 ffmpeg 生成最终的视频文件

       æˆ‘们在上一步得到的文件,足足有 GB 之大。为了得到一个方便后续剪辑或在各种网络平台上传播的文件,我们还需要使用 ffmpeg 对其进行格式转换。

       å¦‚果你没有安装过 ffmpeg,可以考虑使用下面的命令完成安装(本文使用版本为 5.0.1)。

brew?install?ffmpeg

       æƒ³è¦ç”Ÿæˆä¸€ä¸ªå…¼å®¹æ€§æ¯”较好的 H 格式的 milvus.mp4 文件,可以使用下面的命令:

checking?for?FT2...?configure:?error:?in?`/Users/soulteary/lab/gource-0.':configure:?error:?The?pkg-config?script?could?not?be?found?or?is?too?old.Make?sure?itis?in?your?PATH?or?set?the?PKG_CONFIG?environment?variable?to?the?fullpath?to?pkg-config....No?package?'libpcre2-8'?found...0

       è€å¿ƒç­‰å¾…命令执行完毕(分钟左右),我们就能够得到包含酷炫结果的视频文件啦。相比较上一步骤中的 GB 临时文件,视频文件显得相对小巧,只需要 GB 左右的空间。

使用 Docker 进行代码仓库的可视化

       å¦‚果你不追求更高的转换效率,可以接受“离线任务”的执行方式,可以考虑使用开源项目 sandrokeil/docker-files/ 中的 gource 镜像。

       ä½¿ç”¨æ–¹æ³•éžå¸¸ç®€å•ï¼Œåªéœ€è¦ä¸€æ¡å‘½ä»¤ï¼š

checking?for?FT2...?configure:?error:?in?`/Users/soulteary/lab/gource-0.':configure:?error:?The?pkg-config?script?could?not?be?found?or?is?too?old.Make?sure?itis?in?your?PATH?or?set?the?PKG_CONFIG?environment?variable?to?the?fullpath?to?pkg-config....No?package?'libpcre2-8'?found...1

       åœ¨ä¸Šé¢çš„命令中,我们需要做一些简单的准备:

       æŠŠæˆ‘们的代码仓库放置于当前目录下的 repo 目录中。

       å°†æˆ‘们计划进行替代的用户头像放在 avatars 目录中。

       å¦‚果你希望程序生成视频的过程中,顺带完成背景音的配乐,可以将 mp3 文件放在 mp3s 目录中。

       å½“命令执行完毕之后,我们就能够在本地的 results 目录中找到我们的可视化视频文件了。

其他

       é™¤äº†å¿ å®žè¿˜åŽŸä»“库中的每一次提交之外,Gource 还支持根据参数筛选时间启止、筛选生成指定用户的贡献记录、甚至搭配 shell 可以筛选生成指定目录的变化记录。

       æ‰€ä»¥ï¼Œå½“我们想进行某个大版本回顾,或者庆祝某位开源社区的用户成为项目 maintainer 时,把这些“混杂着代码的时间碎片”通过视频进行还原呈现,或许是一个不错的主意。

最后

       å¸Œæœ›è¿™ç¯‡å†…容能够帮到有相同需求的你。

       ä¸‹ä¸€ç¯‡ç›¸åŒä¸»é¢˜çš„内容,我将分享 gource 之外的项目可视化方案,一个相对轻量的方案。

       --EOF

       æˆ‘们有一个小小的折腾群,里面聚集了几百位喜欢折腾的小伙伴。

       åœ¨ä¸å‘广告的情况下,我们在里面会一起聊聊软硬件、HomeLab、编程上的一些问题,也会在群里不定期的分享一些技术沙龙的资料。

       å–œæ¬¢æŠ˜è…¾çš„小伙伴欢迎扫码添加好友。(添加好友,请备注实名,注明来源和目的,否则不会通过审核)

       å…³äºŽæŠ˜è…¾ç¾¤å…¥ç¾¤çš„那些事

       æœ¬æ–‡ä½¿ç”¨ã€Œç½²å 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

       æœ¬æ–‡ä½œè€…: 苏洋

       åˆ›å»ºæ—¶é—´: 年月日 统计字数: 字 阅读时间: 分钟阅读 本文链接: /item.h...

       全套实验源码+手册+视频下载地址: /docs/boards/arm-linux/zdyzmp.html

       正点原子官方B站: space.bilibili.com/...

       STMMP技术交流QQ群:

       第二十三章 SysTick高精度延时实验

       本章介绍如何使用SysTick实现微秒(us)级别的延时。

       .1 SysTick简介

       SysTick是享源Cortex-M内核的一部分,用于提供操作系统时基,分享支持周期性中断。视手机视频在不使用操作系统时,频分微柚云源码可作为简单的享源定时器使用。SysTick时钟来自MCU系统时钟,分享经过分频后得到其工作频率,视手机视频最大值为MHz。频分

       .1.1 SysTick寄存器

       SysTick寄存器定义在core_cm4.h文件中,享源包括:

       STK_CTRL:控制寄存器,分享直播弹幕互斗游戏源码包含重装载值(RELOAD),视手机视频用于配置计数器的频分初始值。

       STK_VAL:当前值寄存器,享源显示计数器当前值。

       STK_CALIB:校准寄存器,指示是否有外部参考时钟。

       .1.2 SysTick的HAL库驱动

       SysTick的HAL库驱动在第七章中详细分析。关键API函数包括:

       HAL_InitTick:初始化配置重装载寄存器值。

       HAL_GetTickPrio:获取中断优先级。

       HAL_SetTickFreq:重新配置中断频率。

       .2 HAL_Delay函数

       在默认配置下,vue3如何阅读源码SysTick的中断周期为1ms。配置系统时钟后,周期保持不变。使用HAL_Delay实现毫秒级延时。

       .2.1 SysTick分频值为1

       分频值为1时,中断周期为1ms。配置系统时钟后,周期仍保持不变,使用HAL_Delay实现毫秒级延时。

       .2.1 SysTick分频值为8

       分频值为8时,中断周期为8ms。济南正规进口溯源码燕窝配置系统时钟后,周期为MHz,执行HAL_Delay()后,延时时间变为ms。

       .3 SysTick高精度延时实验

       实验配置使用LED0闪烁验证效果。配置系统时钟为MHz,SysTick为1分频。

       .3.1 无操作系统

       编写delay_us实现us延时,基于delay_us编写delay_ms实现ms延时。使用时钟摘取法实现。

       .3.2 有操作系统

       UCOSII环境下,miui视频播放器源码使用OS自带延时函数实现。OS运行时,利用OS延时函数实现延时;OS未运行时,使用delay_us实现。

       .3.3 编译和测试

       实验无操作系统情况下的编译测试,测试PI0引脚波形。设置高电平脉冲为ms,验证结果一致。

掌握这些AI生成视频工具,你的电商流量焦虑会少一半

       在电商竞争激烈的视觉化时代,视频内容的重要性日益凸显,超过%的在线流量由视频占据。为了吸引受众,企业与创作者以往不得不投入大量时间和金钱制作视频。然而,AI正革新这一领域,让视频生成变得前所未有的便捷。以下是市面上六款顶级的AI视频生成工具,帮助你轻松提升电商流量。

       1. Synthesys

       作为商业视频制作的领头羊,Synthesys通过文本到画外音技术,让企业能在几分钟内创建解说视频和教程。通过其AI技术,只需输入脚本,选择头像和语言,就能生成专业视频,支持种头像和种语音风格。

       2. Synthesia

       Synthesia是一个AI视频生成平台,提供了多种语言和丰富的模板,连知名企业如谷歌和耐克也使用。选择AI头像,点击按钮即可生成定制视频,无论是预设头像还是自定义,都易于操作。

       3. Pictory

       Pictory以其无须视频编辑经验的特性脱颖而出。用户只需输入脚本,Pictory能将博客文章转化为视频,适合博主和企业提高内容质量和受众参与度。

       4. Elai.io

       Elai.io由全球AI专家开发,能从文章链接快速生成专业视频。只需几步操作,用户即可创建无需演员的培训视频,或改进营销产品视频,支持多种语言和头像选择。

       5. InVideo

       InVideo以易用性见长,无需视频编辑基础,可从文本生成高质量视频。它适合制作宣传视频、演示和视频推荐,且一键分享到各大社交媒体。

       6. Synths Video

       Synths Video提供快速将博客文章转换为视频的功能,多个头像选项让视频更具吸引力,完全自动化过程减少了编辑工作。

       7. Veed.io

       VEED是一款易用的AI视频生成工具,新手也能轻松创建独特视频,支持音乐自选和主题定制,还有自动转录功能,适合内容创作者广泛使用。

       利用这些AI视频生成工具,商家和创作者可以显著减少制作视频的烦恼,提高内容效率,从而有效缓解电商流量焦虑。