当前位置: 首页 > news >正文

【ffmpeg命令入门】获取音视频信息

文章目录

  • 前言
    • 使用ffmpeg获取简单的音视频信息
        • 输入文件信息
        • 文件元数据
        • 视频流信息
        • 音频流信息
    • 使用ffprobe获取更详细的音视频信息
      • 输入文件信息
      • 文件元数据
      • 视频流信息
      • 音频流信息
  • 总结


前言

在处理多媒体文件时,了解文件的详细信息对于调试和优化处理过程至关重要。FFmpeg,作为一个强大的开源多媒体处理工具,提供了多种功能来获取音视频文件的详细信息。本文将简要介绍如何使用 FFmpeg 和其相关工具来获取音视频信息,帮助用户更好地理解和操作多媒体文件。

FFmpeg 的 ffprobe 是一个用于分析多媒体文件的工具,它可以详细列出文件的音视频流信息、编码格式、分辨率、比特率等关键参数。通过 ffprobe 命令,用户可以轻松获取这些信息,从而了解文件的具体结构和特性。除此之外,FFmpeg 还可以通过 ffmpeg 命令获取部分基本的信息,尽管它主要用于多媒体数据的转换和处理。


使用ffmpeg获取简单的音视频信息

我们可以使用下面的命令获取信息,只需要输入文件不需要输出文件:

ffmpeg -i "[板绘版][修补完成]一键三连变成女孩子有多么可爱!  60fps.mp4"

打印结果如下:

ffmpeg version 2024-07-15-git-350146a1ea-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developersbuilt with gcc 13.2.0 (Rev5, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-libquirc --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-libqrencode --enable-librav1e --enable-libsvtav1 --enable-libvvenc --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprintlibavutil      59. 28.100 / 59. 28.100libavcodec     61. 10.100 / 61. 10.100libavformat    61.  5.101 / 61.  5.101libavdevice    61.  2.100 / 61.  2.100libavfilter    10.  2.102 / 10.  2.102libswscale      8.  2.100 /  8.  2.100libswresample   5.  2.100 /  5.  2.100libpostproc    58.  2.100 / 58.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '[板绘版][修补完成]一键三连变成女孩子有多么可爱!  60fps.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf59.27.100description     : Packed by Bilibili XCoder v2.0.2Duration: 00:00:39.23, start: 0.000000, bitrate: 2532 kb/sStream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x960, 2334 kb/s, 60 fps, 60 tbr, 16k tbn (default)Metadata:handler_name    : Bento4 Video Handlervendor_id       : [0][0][0][0]Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 186 kb/s (default)Metadata:handler_name    : Bento4 Sound Handlervendor_id       : [0][0][0][0]
At least one output file must be specified

你提供的 FFmpeg 输出信息包含了关于输入文件的详细音视频信息。下面逐条分析这些信息的含义:

输入文件信息
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '[板绘版][修补完成]一键三连变成女孩子有多么可爱!  60fps.mp4':
  • Input #0:输入文件的编号。FFmpeg 可以处理多个输入文件,这里表示第一个输入文件。
  • mov,mp4,m4a,3gp,3g2,mj2:表示文件的容器格式支持列表。这个文件是 MP4 容器格式,它也可能是 MOV、M4A、3GP、3G2 或 MJ2 格式。
  • from '[板绘版][修补完成]一键三连变成女孩子有多么可爱! 60fps.mp4':输入文件的路径和文件名。
文件元数据
  Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf59.27.100description     : Packed by Bilibili XCoder v2.0.2
  • major_brand:文件的主要品牌,表示文件使用的主要格式或标准。isom 表示这个文件是符合 ISO 基本媒体文件格式标准的。
  • minor_version:文件的次要版本号。这里是 512
  • compatible_brands:文件兼容的品牌,表示文件可以与其他品牌兼容播放或处理。这里包括 isomiso2avc1(表示 H.264 视频)和 mp41
  • encoder:用于编码这个文件的 FFmpeg 版本。这里是 Lavf59.27.100,表示使用的是 FFmpeg 的 Lavf(Libavformat)库。
  • description:文件的描述信息,这里说明文件是通过 Bilibili XCoder v2.0.2 工具处理的。
视频流信息
  Duration: 00:00:39.23, start: 0.000000, bitrate: 2532 kb/s
  • Duration:视频的时长,这里是 39.23 秒。
  • start:视频流的起始时间,通常为 0。
  • bitrate:视频流的比特率,这里是 2532 kb/s,表示每秒传输的数据量。
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x960, 2334 kb/s, 60 fps, 60 tbr, 16k tbn (default)
  • Stream #0:0:视频流的编号。#0 表示第一个输入文件,:0 表示第一个流。
  • [0x1](und):流的 ID 和语言。[0x1] 是流的标识符,(und) 表示语言未定义。
  • Video: h264 (High) (avc1 / 0x31637661):视频编解码器和类型。这里使用的是 H.264 编码(High Profile),avc1 是 H.264 的 FourCC 代码。
  • yuv420p(progressive):视频的像素格式和扫描方式。yuv420p 表示 YUV 4:2:0 像素格式,progressive 表示逐行扫描。
  • 1920x960:视频分辨率,即宽度 1920 像素,高度 960 像素。
  • 2334 kb/s:视频流的比特率。
  • 60 fps:视频的帧率,即每秒 60 帧。
  • 60 tbr:视频流的时间基准,tbr 表示时间基准帧率。
  • 16k tbn:时间基准的分母,tbn 表示时间基准。
音频流信息
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 186 kb/s (default)
  • Stream #0:1:音频流的编号。#0 表示第一个输入文件,:1 表示第二个流。
  • [0x2](und):流的 ID 和语言。[0x2] 是流的标识符,(und) 表示语言未定义。
  • Audio: aac (LC) (mp4a / 0x6134706D):音频编解码器和类型。这里使用的是 AAC 编码(Low Complexity),mp4a 是 AAC 的 FourCC 代码。
  • 48000 Hz:音频的采样率,即每秒 48000 个样本。
  • stereo:音频的声道数,这里是立体声。
  • fltp:音频的样本格式,fltp 表示浮点样本。
  • 186 kb/s:音频流的比特率。
  • (default):标记该音频流为默认流。

使用ffprobe获取更详细的音视频信息

我们可以使用下面这个命令获取更详细音视频的信息:

ffprobe -i "[板绘版][修补完成]一键三连变成女孩子有多么可爱!  60fps.mp4"

它的输出如下:

ffprobe version 2024-07-15-git-350146a1ea-full_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developersbuilt with gcc 13.2.0 (Rev5, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-libquirc --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-libqrencode --enable-librav1e --enable-libsvtav1 --enable-libvvenc --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprintlibavutil      59. 28.100 / 59. 28.100libavcodec     61. 10.100 / 61. 10.100libavformat    61.  5.101 / 61.  5.101libavdevice    61.  2.100 / 61.  2.100libavfilter    10.  2.102 / 10.  2.102libswscale      8.  2.100 /  8.  2.100libswresample   5.  2.100 /  5.  2.100libpostproc    58.  2.100 / 58.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '[板绘版][修补完成]一键三连变成女孩子有多么可爱!  60fps.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf59.27.100description     : Packed by Bilibili XCoder v2.0.2Duration: 00:00:39.23, start: 0.000000, bitrate: 2532 kb/sStream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x960, 2334 kb/s, 60 fps, 60 tbr, 16k tbn (default)Metadata:handler_name    : Bento4 Video Handlervendor_id       : [0][0][0][0]Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 186 kb/s (default)Metadata:handler_name    : Bento4 Sound Handlervendor_id       : [0][0][0][0]

下面是对你提供的 FFprobe 输出信息的逐条分析和介绍:

输入文件信息

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '[板绘版][修补完成]一键三连变成女孩子有多么可爱!  60fps.mp4':
  • Input #0:表示这是第一个输入文件(编号为 0)。FFprobe 允许分析多个输入文件,这里只涉及一个。
  • mov,mp4,m4a,3gp,3g2,mj2:这是输入文件支持的格式类型。这个文件是 MP4 格式,但也兼容其他格式如 MOV、M4A、3GP、3G2 和 MJ2。
  • from '[板绘版][修补完成]一键三连变成女孩子有多么可爱! 60fps.mp4':输入文件的名称和路径。

文件元数据

  Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf59.27.100description     : Packed by Bilibili XCoder v2.0.2
  • major_brand:表示文件的主要品牌,isom 表示符合 ISO 基本媒体文件标准。
  • minor_version:文件的次要版本号,512
  • compatible_brands:兼容的品牌和格式,表示这个文件兼容 isomiso2avc1(H.264 视频编码)和 mp41
  • encoder:文件编码使用的库和版本,这里是 Lavf59.27.100(FFmpeg 的 Lavf 库)。
  • description:文件的描述信息,说明这个文件是通过 Bilibili XCoder v2.0.2 工具处理的。

视频流信息

  Duration: 00:00:39.23, start: 0.000000, bitrate: 2532 kb/s
  • Duration:视频的时长,为 39.23 秒。
  • start:视频流的起始时间,通常为 0。
  • bitrate:视频流的比特率,为 2532 kb/s,表示每秒传输的数据量。
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x960, 2334 kb/s, 60 fps, 60 tbr, 16k tbn (default)Metadata:handler_name    : Bento4 Video Handlervendor_id       : [0][0][0][0]
  • Stream #0:0:视频流的编号。#0 表示第一个输入文件,:0 表示第一个流。
  • [0x1](und):流的 ID 和语言。[0x1] 是流的标识符,(und) 表示语言未定义。
  • Video: h264 (High) (avc1 / 0x31637661):视频编解码器和类型。这里使用的是 H.264 编码(High Profile),avc1 是 H.264 的 FourCC 代码。
  • yuv420p(progressive):视频的像素格式和扫描方式。yuv420p 表示 YUV 4:2:0 像素格式,progressive 表示逐行扫描。
  • 1920x960:视频分辨率,即宽度 1920 像素,高度 960 像素。
  • 2334 kb/s:视频流的比特率。
  • 60 fps:视频的帧率,即每秒 60 帧。
  • 60 tbr:视频流的时间基准帧率(tbr)。
  • 16k tbn:时间基准的分母(tbn)。

音频流信息

  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 186 kb/s (default)Metadata:handler_name    : Bento4 Sound Handlervendor_id       : [0][0][0][0]
  • Stream #0:1:音频流的编号。#0 表示第一个输入文件,:1 表示第二个流。
  • [0x2](und):流的 ID 和语言。[0x2] 是流的标识符,(und) 表示语言未定义。
  • Audio: aac (LC) (mp4a / 0x6134706D):音频编解码器和类型。这里使用的是 AAC 编码(Low Complexity),mp4a 是 AAC 的 FourCC 代码。
  • 48000 Hz:音频的采样率,即每秒 48000 个样本。
  • stereo:音频的声道数,这里是立体声。
  • fltp

:音频的样本格式,fltp 表示浮点样本。

  • 186 kb/s:音频流的比特率。
  • (default):标记该音频流为默认流。

总结

获取音视频信息是多媒体处理中的重要一步,尤其是在调试和优化多媒体文件时。FFmpeg 的 ffprobe 工具提供了一个强大且详细的接口,用于分析和提取文件的各种参数。掌握如何使用这些工具,可以帮助用户更高效地处理和管理多媒体文件,确保在编码、转换和编辑过程中获得最佳效果。无论是处理专业级的视频项目,还是进行简单的文件检查,了解如何获取和解读这些信息都是至关重要的技能。

相关文章:

【ffmpeg命令入门】获取音视频信息

文章目录 前言使用ffmpeg获取简单的音视频信息输入文件信息文件元数据视频流信息音频流信息 使用ffprobe获取更详细的音视频信息输入文件信息文件元数据视频流信息音频流信息 总结 前言 在处理多媒体文件时,了解文件的详细信息对于调试和优化处理过程至关重要。FFm…...

【IoTDB 线上小课 05】时序数据文件 TsFile 三问“解密”!

【IoTDB 视频小课】持续更新!第五期来啦~ 关于 IoTDB,关于物联网,关于时序数据库,关于开源... 一个问题重点,3-5 分钟详细展开,为大家清晰解惑: IoTDB 的 TsFile 科普! 了解了时序数…...

python-爬虫实例(4):获取b站的章若楠的视频

目录 前言 道路千万条,安全第一条 爬虫不谨慎,亲人两行泪 获取b站的章若楠的视频 一、话不多说,先上代码 二、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 道路千万条,安全第一条 爬…...

C# yaml 配置文件的用法(一)

目录 一、简介 二、yaml 的符号 1.冒号 2.短横杆 3.文档分隔符 4.保留换行符 5.注释 6.锚点 7.NULL值 8.合并 一、简介 YAML(YAML Aint Markup Language)是一种数据序列化标准,广泛用于配置文件、数据交换和存储。YAML的设计目标是…...

人工智能与机器学习原理精解【4】

文章目录 马尔科夫过程论要点理论基础σ代数定义性质应用例子总结 马尔可夫过程概述一、马尔可夫过程的原理二、马尔可夫过程的算法过程三、具体例子 马尔可夫链的状态转移概率矩阵一、确定马尔可夫链的状态空间二、收集状态转移数据三、计算转移频率四、构建状态转移概率矩阵示…...

Go channel实现原理详解(源码解读)

文章目录 Go channel详解Channel 的发展Channel 的应用场景Channel 基本用法Channel 的实现原理chan 数据结构初始化sendrecvclose使用 Channel 容易犯的错误总结Go channel详解 Channel 是 Go 语言内建的 first-class 类型,也是 Go 语言与众不同的特性之一。Channel 让并发消…...

数据结构-C语言-排序(4)

代码位置: test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排…...

灰色关联分析【系统分析+综合评价】

系统分析: 判断哪个因素影响最大 基本思想:根据序列曲线几何形状的相似程度来判断其练习是否紧密 绘制统计图并进行分析 确定子序列和母序列 对变量进行预处理(去量纲、缩小变量范围) 熟练使用excel与其公式和固定&#xff08…...

linux 部署flask项目

linux python环境安装: https://blog.csdn.net/weixin_41934979/article/details/140528410 1.创建虚拟环境 python3.12 -m venv .venv 2.激活环境 . .venv/bin/activate 3.安装依赖包(pip3.12 install -r requirements.txt) pip3.12 install -r requirements.txt 4.测试启…...

ES6 数值的扩展(十八)

1. 二进制和八进制字面量 特性:可以直接在代码中使用二进制(0b 或 0B)和八进制(0o 或 0O)字面量。 用法:简化二进制和八进制数值的表示。 const binaryNumber 0b1010; // 二进制表示 10 const octalNumb…...

面试知识储备-redis和redission

1.redis的使用 引入依赖,自动注解redistemplate即可使用, 默认的redistemplate存入到redis中是字符流的形式,需要配置redistemplate, 如果不想配置,可以使用stringRedistemplate 可以使用string类型,但是…...

【5本可选】保证知网检索,现在投稿可在8月见刊,对文科领域友好

AEPH出版社旗下有5本学术期刊,专门出版自然科学、社会科学研究与教育领域论文的高影响力期刊,拥有正规ISSN号,出版类型涉及应用和理论方面的原创和未曾公开发表的研究论文,分配独立DOI号。 期刊1 Philosophy and Social Science…...

SpringBoot入门:如何新建SpringBoot项目(保姆级教程)

在本文中,我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的,因为我发现有些java的初学者,甚至工作10年的老员工居然并不会新建一个SpringBoot项目,所以特别出了一篇文章来教大家新建一个SpringBoo…...

数据恢复篇:适用于 Android 视频恢复的 6 个工具

在智能手机这个动态的世界里,每一刻都被捕捉并以数字方式存储,丢失珍贵的视频可能是一种令人心碎的经历。不必担心,因为 Android 生态系统提供了大量旨在挽救这些珍贵回忆的视频恢复应用程序。 这些应用程序是强大的工具,旨在挽救…...

Android笔试面试题AI答之控件Views(6)

答案来着文心一言,仅供参考 目录 1.简述什么是RemoteViews?使用场景有哪些?RemoteViews的特性使用场景总结 2.获取View宽高的几种方法?1. 在onWindowFocusChanged方法中获取2. 使用ViewTreeObserver.OnGlobalLayoutListener3. 使用ViewTreeObserver.OnPreDrawLi…...

扭蛋机潮玩小程序搭建,扭蛋机行业的创新

在当下潮玩市场中,扭蛋机具有盲盒的未知性和惊喜体验感,商品丰富,并且价格相对低廉,获得了极高的人气。年轻人开始对扭蛋机逐渐“上头”,为了扭到喜欢的商品不断地进行复购下单,在这场随机性的扭蛋游戏中&a…...

supOS赋能千行百业

推进制造业数字化转型是促进数字经济和实体经济深度融合的重点领域。在长期摸索和实践过程中,蓝卓打造了工厂操作系统、行业云操作系统、产业大脑操作系统三大产品,形成了企业侧、行业侧、产业侧的立体化赋能体系,全面赋能工业企业&#xff0…...

Vue中filter的使用

在 Vue.js 中,filter() 方法用于创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。filter() 不会改变原数组,而是返回一个新的数组。 语法 array.filter(callback(element[, index[, array]])[, thisArg])callback:…...

案例研究|柯尼卡美能达软件开发(大连)有限公司基于DataEase构筑内部数据可视化体系

柯尼卡美能达软件开发(大连)有限公司于2007年5月25日注册成立。公司以“洞悉在工作的人们真实情况,探寻他们的愿望,持续提供使人们更加幸福的服务”为使命,致力于系统品质测试服务、软件开发服务、IT安全服务、高级BPO…...

PHP框架详解- symfony框架

文心一言 Symfony框架是一个用PHP语言编写的开放源代码的Web应用框架,旨在加速Web应用程序的开发过程,提高代码的可维护性和可扩展性。以下是对Symfony框架的详细解析: 一、框架概述 起源与开发者: Symfony由SensioLabs&#…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

Go语言多线程问题

打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...