openEuler上从源码编译VLC:环境配置、依赖处理与播放验证全流程
Linux 华为openEuler 测试编译VLC在国产操作系统上编译一个像VLC这样的重量级多媒体播放器我个人的结论是能跑通一次你对Linux构建系统的理解会上一个台阶。openEuler虽然不是最热门的桌面发行版但作为华为开源的操作系统在服务器和部分国产化终端上用得越来越多而VLC的依赖树在整个开源软件里算得上复杂涉及音视频编解码、图形界面、硬件加速、网络协议等多个方向。这篇内容就来还原一次在openEuler上编译VLC的完整过程包括环境准备、依赖安装、configure参数选择、编译踩坑和播放测试给需要在国产系统上做多媒体开发或学习构建流程的朋友一个可直接照抄的参考。适合看这篇文章的人有三类一是要在openEuler上使用VLC但仓库没有对应版本或功能不全的人二是做信创环境下的音视频技术验证需要定制编解码和硬件加速能力的开发者三是想通过实际项目搞懂autotools构建体系、动态库链接、插件机制的学生和转行工程师。不管你是哪一类跟着走一遍比看任何文档都管用。1. 动手前先理清头绪为什么非要从源码编译1.1 直接装二进制不行吗很多人的第一反应是openEuler仓库里不是有vlc包吗dnf install vlc不就行了确实可以但你要先搞清楚这个包的来源和状态。openEuler默认软件源偏向服务器场景多媒体相关组件的版本更新节奏偏保守VLC的版本往往落后上游很多而且部分解码器、硬件加速模块在官方包里默认是关闭的因为要考虑稳定性和安全审计。我这次选择源码编译核心驱动有三个第一VLC 3.0的模块化设计决定了你完全可以通过configure脚本定制自己要的插件集把不需要的协议、封装格式、视频输出方式全部裁掉得到一个尺寸更小、依赖更干净的播放器第二测试硬件解码VAAPI和硬件加速输出时发行版自带的VLC可能没编对应模块必须自己编第三编译一次VLC你基本就摸清了多媒体软件在Linux上到底依赖哪些库、这些库之间如何通过pkg-config链接这是看多少文档都换不来的实战经验。举个更生活化的例子直接用包管理器装VLC就像买一台品牌整机开机就能用但你想换电源、加硬盘、调BIOS就得自己动手装一台整个过程会逼你去了解每个配件的规格和兼容性。源码编译就是后者。1.2 openEuler的特定约束要提前知道openEuler毕竟是面向企业级场景的发行版它的包管理和软件生态跟Fedora/RHEL系接近但又有自己的仓库体系。最直接的影响是一些在Ubuntu上一条apt命令就能装齐的多媒体开发包在openEuler上可能找不到、包名不一样或者依赖版本对不上。具体到VLC它的依赖分成几层构建工具链gcc、make、autoconf等、基础库libc、zlib、libxml2、音视频编解码库FFmpeg是最核心的一块、图形界面相关Qt5、XCB、Wayland、音频输出ALSA、PulseAudio、硬件加速VAAPI、VDPAU以及脚本支持Lua。openEuler默认仓库覆盖了大部分但像FFmpeg开发包、Qt5开发包、libva这样的包需要确认对应的仓库是否已经启用。另外一个容易忽视的点是openEuler的某个发布版带的FFmpeg主版本可能跟VLC 3.0预期的年代有错位。VLC 3.0发布的时期主流是FFmpeg 4.x如果系统仓库里装的是FFmpeg 5或更高编译时会有API兼容性错误。这些细节在动手之前最好先做到心里有数后面专门有一节说这个。2. 环境准备与依赖安装实录2.1 核对系统版本和基础工具链开始之前先确认系统版本防止后续参考命令跑偏。cat /etc/openEuler-release我这次是在openEuler 22.03 LTS上做的24.03的步骤基本一致只有个别依赖版本可能不同。接着把基础编译工具链一次性装齐dnf install -y gcc gcc-c make autoconf automake libtool dnf install -y pkgconf-pkg-config gettext-devel bison flex逐个说下为什么需要这些东西。gcc和gcc-c是C和C编译器VLC核心是C写的但Qt界面和部分插件是Cmake是执行构建的核心工具autoconf和automake用来从configure.ac和Makefile.am生成configure脚本和Makefile.inVLC的源码虽然自带configure但如果你拉的是git仓库就需要先跑bootstrap而bootstrap离不开这两个工具libtool负责处理平台相关的动态库链接问题pkg-config是VLC的configure脚本探测依赖的核心工具几乎所有检查都要调用它gettext涉及国际化消息没它你连编译配置都过不去bison和flex用来生成VLC内部的一些语法解析器代码。装完之后先验证一下gcc --version autoconf --version pkg-config --version这里有个实操建议把系统先dnf update一遍把基础库的版本拉齐再开始装依赖否则后面很容易遇到某个库版本太老导致configure误判。2.2 多媒体依赖和图形界面依赖分批装基础工具装好后分批安装VLC的具体依赖。先装最核心的FFmpeg和编解码相关dnf install -y ffmpeg-devel如果提示找不到ffmpeg-devel说明你的仓库里没有multimedia相关的包。openEuler 22.03默认的AppStream源里通常没有FFmpeg需要检查EPOL仓库是否启用。EPOL是openEuler的扩展软件仓库很多多媒体和桌面应用都放在那里。检查方法cat /etc/yum.repos.d/openEuler.repo确认有[epol]段并且 enabled1没有就自己加上或者直接用dnf install -y openEuler-epol-release装完后重新搜索ffmpeg-devel。实在找不到的时候可以退一步用系统自带的libavcodec替代包但VLC的很多解码能力依赖FFmpeg没有ffmpeg-devel的话编译出的播放器基本是残废的所以这一步必须要解决。接着装Qt5图形界面相关的开发包dnf install -y qt5-qtbase-devel qt5-qttools-devel qt5-qtx11extras-develVLC的桌面界面是用Qt5写的这三个包分别提供了基础库、工具比如moc元对象编译器、uic、以及X11扩展。如果不打算用GUI界面只做命令行播放可以跳过这一步但我建议还是装因为VLC的Qt界面最能直观反映编译成功与否而且后面测试也要用到。音频输出和系统接口相关dnf install -y alsa-lib-devel libpulse-devel dnf install -y libxcb-devel xcb-util-devel dnf install -y libdrm-devel mesa-libGL-devel dnf install -y wayland-devel dnf install -y ncurses-devel libxml2-devel lua-devellibxcb是X11通信协议的C库VLC在X11下绘制视频窗口和响应键盘鼠标事件全靠它libdrm是Direct Rendering Manager的用户态库VLC的硬件加速输出模块要访问GPU渲染节点必须链接它wayland-devel用于Wayland显示协议下的视频输出ncurses是终端文本界面的基础lua则负责VLC的脚本扩展功能。最后是硬件加速相关dnf install -y libva-devel libva-utils dnf install -y libvdpau-devellibva是VAAPI的参考实现libva-utils带了vainfo工具编译前可以用它检查GPU支持的硬件解码格式libvdpau是NVIDIA那边的硬件解码接口如果机器是AMD或Intel集显装libva就够了VDPAU可以不装。openEuler很多环境是虚拟机可能连GPU都没有这时候硬件加速模块编译失败或者运行时不加载都是正常的后面测试部分会说怎么判断。2.3 依赖版本检查的一个小经验装完所有依赖后先跑一遍版本探测而不是直接冲进源码编译。这一步能帮你提前排除90%的编译问题。pkg-config --modversion libavcodec libavformat libavutil pkg-config --modversion Qt5Widgets pkg-config --modversion libva看三个关键值FFmpeg三个库的主版本号、Qt5Widgets是否存在、libva是否存在。我这次检查时发现系统带的FFmpeg版本是4.2.2正好落在VLC 3.0的兼容区间里心里就踏实了一半。如果你的输出里libavcodec版本是5.x或者6.x后面的configure阶段几乎必报错这时候要么想办法装低版本的ffmpeg-devel要么直接用VLC的master分支源码VLC的开发版一直在跟随FFmpeg主版本更新。对于大多数人我更推荐找一个跟系统FFmpeg版本适配的VLC源码版本而不是盲目用最新版因为master分支的依赖变动频繁可能引入其他问题。3. 源码获取与configure配置策略3.1 拉取源码选稳定版而不是最新版VLC的官方源码托管在VideoLAN自家的GitLab上GitHub上也有镜像。命令行下直接git clone --branch 3.0.x --depth 1 https://code.videolan.org/videolan/vlc.git cd vlc这里用--branch 3.0.x锁定到3.0稳定系列的最新tag而不是直接clone默认分支。VLC的master分支叫master对应4.0的开发版虽然代码很新但构建系统改动也大依赖的库版本要求更高不建议在这个场景里用。3.0.x是经过大规模验证的稳定线openEuler的编译环境和它配合最稳。如果网络条件不方便用git也可以直接从VideoLAN官网下载3.0.x的.tar.xz源码包。tarball的好处是自带configure脚本省一步bootstrapgit方式的好处是后续可以方便切换分支、查看代码变更。我个人习惯用git方式因为VLC的bootstrap过程本身也是学习资料。进入目录后执行./bootstrapbootstrap脚本会根据configure.ac和各个模块的Makefile.am生成configure脚本同时生成一大堆Makefile.in。这个阶段如果报缺少autoconf、automake、libtool说明前面的工具链没装全回头补齐再跑。bootstrap顺利结束后目录下会出现configure文件。3.2 configure参数按需裁剪插件集VLC的configure参数非常多这也是它模块化设计的外在体现。不用全搞明白但核心的必须清楚。我这次使用的configure命令如下./configure --prefix/usr/local/vlc \ --enable-qt \ --enable-avcodec --enable-avformat --enable-swscale \ --enable-xcb \ --enable-alsa --enable-pulse \ --enable-vaapi --enable-vdpau \ --enable-lua \ --enable-ncurses \ --disable-dbus逐条讲一下我的考虑。--prefix/usr/local/vlc把VLC安装到独立目录而不是默认的/usr/local。这样做的原因是便于卸载也避免覆盖系统里可能存在的其他VLC版本等退出时可以把目录整体删掉不会污染系统。--enable-qt开启Qt图形界面。VLC源码里自带的界面模块有Qt和ncurses两种qt的依赖就是前面装的qt5三个开发包。--enable-avcodec --enable-avformat --enable-swscale这三个开关控制跟FFmpeg的联动。avcodec提供编解码能力avformat负责文件封装和流媒体解析swscale负责像素格式转换和缩放。做播放器这三个是核心必须开。--enable-xcb对应X11环境下的视频窗口模块在现代X11桌面里几乎是必须的。--enable-alsa --enable-pulse是音频输出模块。ALSA是底层的声卡接口PulseAudio是桌面音频服务。两个都开运行时可以根据环境自动选择。--enable-vaapi --enable-vdpau是硬件解码加速。VAAPI覆盖Intel、AMD以及大部分国产GPUVDPAU主要覆盖NVIDIA。如果configure时检测不到对应的开发库会静默跳过模块而不是直接报错所以前面装没装libva-devel直接决定了这里能否生效。--enable-lua开启Lua脚本扩展VLC的一些菜单、扩展功能依赖它不开也能用但功能不完整。--disable-dbus是主动关闭一个不需要的模块。DBus在openEuler上有时候会有策略限制而且播放器用DBus主要是在桌面环境里做MPRIS控制用的服务器场景用不上关掉可以少一个链接依赖。configure跑完之后重点看输出结果里的类似这样几行Qt5 interface ........... yes AVCodec support ......... yes VAAPI support ........... yes ALSA support ............ yes如果某个模块显示no就回去检查对应的-devel包是否装好。这里有个小技巧configure过程会把检测结果输出到config.log里如果你遇到很诡异的错误直接grep config.log里的关键模块名看它到底卡在哪个检查函数上。3.3 Qt5路径问题的预处置在openEuler上Qt5的默认搜索路径有时候会跟pkg-config的探测路径不一致典型现象是configure报错找不到Qt5但明明装了qt5-qtbase-devel。解决方法是给configure一个环境变量提示export QT_SELECTqt5 ./configure ...或者指定Qt5的路径./configure ... --with-qt/usr/lib64/qt5/另外在跑configure之前先执行一次qmake --version如果提示找不到qmake说明qt5-qttools-devel没装全如果qmake输出的是Qt4的版本号说明系统里同时存在Qt4优先用QT_SELECT强制指定Qt5。4. 编译过程与问题排除4.1 make并行编译的参数策略configure通过之后进入编译阶段。make -j4-j4表示4个编译任务并行。这个数字并不是越大越好按CPU核心数来定多了会浪费少了会慢。openEuler服务器机器常见配置是2核或4核四核机器用-j4没问题。但如果你的机器内存小于4GB我建议降到-j2因为VLC的插件模块很多每个编译单元都很吃内存并行任务一多很容易触发OOM编译进程直接被系统杀掉反而更慢。顺便说一个我踩过的坑第一次编译不要用make -j4 /dev/null 21这种把日志丢掉的方式。VLC编译过程中有些警告和错误是模块级别的即使前面报错了整个make命令照样会跑完但生成的库文件可能不完整。老老实实让日志滚屏或者用make -j4 21 | tee build.log存一份日志出问题才能定位。整个编译时间我是这样的4核机器3.0.x默认插件全开的状态下大约30到40分钟如果configure时裁掉了很多插件20分钟左右就能编完。中间最好不要做其他heavy操作特别是内存紧张的时候。编译期间你会看到大量类似这样的输出CC libvlc.la CC plugins/access/libaccess_file_plugin.la CC plugins/access/libaccess_http_plugin.la每个.la是一个动态插件模块。VLC把几乎每个功能都做成独立的共享库插件运行时动态加载这就是它的模块化架构。编译完这些插件后最后会链接主程序vlc和cvlc。4.2 三个典型编译错误与排查方法这次编译中我遇到并解决了三个典型问题这里按出现概率排序。第一个是FFmpeg版本不兼容的编译错误。如果你系统里的ffmpeg-devel版本太新在编译modules/codec/avcodec目录下的文件时会看到一堆关于AVFrame、AVCodecContext结构体字段的报错比如error: ‘AVStream’ has no member named ‘codec’ error: ‘avcodec_decode_video2’ was not declared in this scope这是因为VLC 3.0.x主要针对FFmpeg 4.x开发维护FFmpeg 5之后把不少API标记为废弃甚至直接删除了。遇到这种情况最干净的解决办法是安装低版本的FFmpeg开发包但如果你不想折腾系统级依赖也可以试试编译VLC master分支它的代码已经适配了新版FFmpeg。第二个是Qt5相关错误。典型报错出现在编译Qt界面插件时比如找不到Qt5Widgets/QMainWindow头文件或者链接时undefined reference to vtable for这类。这个通常不是代码问题而是pkg-config没找到Qt5的.pc文件。解决办法就是前面说过的export QT_SELECTqt5同时确认qt5-qtbase-devel装全。如果还报错检查一下系统的PKG_CONFIG_PATH是不是被覆盖了echo $PKG_CONFIG_PATHQt5的pc文件一般在/usr/lib64/pkgconfig/下正常情况下系统默认搜索路径就能找到。第三个是Lua版本问题。VLC内部用的是Lua 5.1或5.2的APIopenEuler默认的Lua版本在22.03上是5.324.03上可能更高。configure阶段会提示checking for lua... no或者编译Lua插件时报一堆API不匹配。解决办法有两个要么用dnf install lua5.1-devel装老版本Lua开发包让configure找到它要么configure时加--disable-lua直接关掉这个插件。Lua插件主要影响的是扩展功能和部分菜单行为对播放核心能力影响很小。我这次选择的是装兼容版本因为想保留完整的VLC功能。还有个不算错误但很烦的情况编译过程中途因为系统资源不足某个进程被杀掉make就会退出。这时候不需要clean重来直接重新执行make -j2即可make会接着上次的进度往下走这也是用make构建系统的好处。4.3 安装和环境变量配置编译完成无报错后执行make install因为configure时的prefix是/usr/local/vlc所有安装文件都在这个目录下不需要root权限也能写入。安装完成后验证ls /usr/local/vlc/bin/会看到vlc和cvlc两个可执行文件。cvlc是命令行版本的VLC没有图形界面入口在自动化脚本和服务器测试场景里特别好用。但这里有一个很关键的坑VLC安装到非系统目录后运行时动态库搜索路径默认不会包含它。直接执行/usr/local/vlc/bin/vlc大概率会报错error while loading shared libraries: libvlc.so.5: cannot open shared object file解决办法是设置LD_LIBRARY_PATHexport LD_LIBRARY_PATH/usr/local/vlc/lib:$LD_LIBRARY_PATH export PATH/usr/local/vlc/bin:$PATH为了方便我建议把这些写到~/.bashrc里或者在 /etc/profile.d 下新建一个vlc.sh。后面所有测试命令都依赖这个环境变量不然你会发现明明编译成功了却跑不起来。5. 测试验证与播放实践5.1 版本信息和基本播放验证环境变量设置好之后先跑一个快速版本验证vlc --version正常会输出VLC version 3.0.x下面列出编译时开启的模块和版权信息。接着准备一个测试视频最好是mp4格式的H.264编码文件因为这是最通用的测试素材。没有现成素材的话可以用系统自带或ffmpeg工具生成一个测试视频ffmpeg -f lavfi -i testsrcduration10:size1280x720:rate30 -pix_fmt yuv420p test.mp4然后命令行播放验证cvlc -vvv test.mp4 --play-and-exit-vvv是最高级别的日志输出会显示每个模块加载和解码的详细过程--play-and-exit让播放器播完指定的帧就自动退出适合脚本自动化验证不会一直挂住。如果这一步输出里出现大量红色报错但不退出说明某个解码器模块加载失败重点查看日志里failed to create decoder或者cannot load module类的信息。要验证完整的Qt界面执行vlc test.mp4确认能弹出窗口、画面正常渲染、声音正常输出。在服务器环境上没有显示器的可以跳过这一步不影响功能验证。5.2 硬件解码加速验证先检查系统是否支持VAAPIvainfovainfo会列出当前GPU支持的硬件解码格式。如果输出里有VAProfileH264Main、VAProfileH264High这样的条目说明硬件解码可用。如果vainfo本身报错说明GPU环境或驱动有问题硬件加速这条路在openEuler Server环境上走不通。硬件解码开启方式vlc -vvv --avcodec-hwvaapi test.mp4对比CPU占用是判断硬解是否生效最直接的方法。开一个终端跑top然后分别用默认软解和vaapi硬解播放同一个4K视频硬解模式下的CPU占用会显著低于软解视频越复杂差异越大。另外在VLC的Qt界面里按CtrlJ打开“工具-媒体信息”里面的编解码器信息会显示当前解码器是VAAPI还是纯软件解码器。5.3 日志定位问题的三个习惯排查编译出来的VLC问题日志是最重要的工具。我通常的做法是先写文件再分析vlc -vvv --logfile/tmp/vlc_test.log --log-verbose2 test.mp4--logfile把日志输出到文件避免终端刷屏--log-verbose2控制输出级别。跑完后再去看日志里关键字warning: ... error: ... failed: ...对于模块化播放器来说90%的运行时问题都出在某个插件加载失败上日志里基本都会直接告诉你是哪个模块、什么原因。比如有一次我在openEuler上碰到画面黑屏日志里写的是vout_display: could not create X11 video context排查一圈后发现是libxcb的版本匹配问题重装libxcb相关开发包后解决。另一个容易出问题的点是locale。openEuler默认可能是POSIX或者C locale中文界面会显示乱码或者字体不渲染。设置一下export LANGzh_CN.UTF-8再启动VLC界面就正常了。6. 几个关键经验后续扩展再说说这次在openEuler上编译VLC沉淀下来的几个经验。第一个经验是构建系统排查要按层推进。永远先解决configure阶段的错误再进入make阶段make报错了先看是不是缺头文件、缺链接库而不是一头扎进源码改代码。VLC的configure脚本已经帮你做了绝大多数环境检查那些检查不通过是因为依赖库版本不对或者dev包没装代码本身出问题的概率极低。第二个经验是编译参数一定要存档。把configure那一条长命令写进一个build.sh脚本不要每次手动打。后续如果修改了依赖环境或者切换了VLC版本改脚本里的参数再重跑一遍即可可复现性对工程化太重要了。第三个经验是裁剪插件比追求全量更实际。默认全量编译的VLC插件目录有几十MB的so文件其中很多插件你根本用不到。需要什么就enable什么不确定的可以先disable后面发现问题再补开。这个思路放在openEuler这样以稳定和精简为取向的系统上特别合适。后续想继续扩展的可以试试把编译好的VLC打包成rpm或直接做静态链接也可以在这个基础上研究VLC的网络推流能力比如用vlc input.mp4 --sout #rtp{sdprtsp://...}搭一个简单的RTSP流媒体服务。编译一次VLC绝不仅仅是得到一个播放器整个Linux下C/C项目的构建、链接、模块化设计你都会有一个具象的理解。

相关新闻

链表求倒数第K项:双指针一趟扫描与先数长度两遍遍历全解析

链表求倒数第K项:双指针一趟扫描与先数长度两遍遍历全解析

链式线性表这个叫法,放在数据结构教材里很容易让人先紧张一下,其实说白了就是最常见的单链表。我在帮人梳理链表题的时候,经常用“求倒数第K项”作为试金石:这道题看着简单,但能把单向链表的约束、边界条件的处理、以及…

2026/10/18 6:00:47 阅读更多 →
Deepseek官网API繁忙时,用TaoToken统一Key接入VSCode+Cline的备用方案

Deepseek官网API繁忙时,用TaoToken统一Key接入VSCode+Cline的备用方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 6:00:47 阅读更多 →
Flink Agents 与 AI 流式应用 —— 第 13 章 可靠性防失控容错

Flink Agents 与 AI 流式应用 —— 第 13 章 可靠性防失控容错

Flink Agents 与 AI 流式应用 —— 第 13 章 可靠性防失控容错 章节定位:第四篇开篇,本系列主线"防失控先于智能"的总装章。前面章节的防线是分散的——三道闸、幂等、语义化错误、超时——本章把它们整合成立体防御体系:失败语义三…

2026/10/18 6:00:47 阅读更多 →

最新新闻

机器学习大作业实战指南:从数据清洗到模型调优的完整流程

机器学习大作业实战指南:从数据清洗到模型调优的完整流程

简介:这份资源是电子科技大学机器学习课程大作业的完整配套资料,面向正在修读机器学习、人工智能相关课程的高校学生,以及希望系统梳理算法理论与工程实践的自学者。内容围绕监督学习、无监督学习、半监督学习与强化学习等范式展开&#xff0…

2026/10/18 6:57:58 阅读更多 →
高德地图JS API结合Loca实现3D动画的实战指南与性能优化

高德地图JS API结合Loca实现3D动画的实战指南与性能优化

做地图可视化这么多年,我一直觉得高德JS API里最被低估的模块就是Loca。早期在某中央商务区大屏项目里,需要在底图上展示几千栋楼宇的数据密度,我一开始用Marker逐栋添加,数据一上三百个页面就开始掉帧,滚动一下地图卡…

2026/10/18 6:57:58 阅读更多 →
SILENTTRINITY模块开发实战:用Boo语言编写后渗透侦察模块

SILENTTRINITY模块开发实战:用Boo语言编写后渗透侦察模块

“SILENTTRINITY”这个词,我在好几年前第一次看到时,第一反应是“又一个 C2 框架”。真正上手用了一个星期后,我改变了对它的看法——它最大的亮点不是通信方式多花哨,而是模块扩展机制:用 Boo 语言写后渗透模块。你不…

2026/10/18 6:57:58 阅读更多 →
Redis命令:RPOP

Redis命令:RPOP

Redis RPOP 命令详细教程 RPOP 移除并返回列表表尾(右侧)的最后一个元素,与 LPOP 恰好方向相反,是列表作为队列、栈使用时另一种常用的"出队"命令。它自 Redis 1.0.0 起提供,从 6.2.0 起支持可选的 count 参…

2026/10/18 6:57:58 阅读更多 →
网络工程师面试核心:从协议原理到工程直觉的五层穿透

网络工程师面试核心:从协议原理到工程直觉的五层穿透

1. 为什么“舌战面试官”不是嘴炮,而是网络工程师的生存基本功“舌战面试官——计网篇(一)”这个标题乍看像段子,实则戳中了无数求职者最真实的痛感。我带过不少刚毕业的某高校网络方向学生,也辅导过转行做后端但卡在O…

2026/10/18 6:57:58 阅读更多 →
多智能体监控与治理:构建云上AI劳力工厂的实用指南

多智能体监控与治理:构建云上AI劳力工厂的实用指南

最近圈子里都在聊“云上劳力工厂”这个概念——把一群 AI 智能体部署到云端,像流水线工人一样自动执行任务,而管理者只需要在中控台盯着一块大屏,看它们谁在干活、谁卡住了、谁在摸鱼烧钱。某 AI 实验室放出的这套方向很有意思:它…

2026/10/18 6:56:58 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →