音视频开发常用工具

文章目录

  • 前言
  • 一、VLC 播放器
    • 1、简介
    • 2、下载
    • 3、VLC media player
    • 4、VLC 打开网络串流
    • 5、VLC 作为流媒体服务器
      • ①、搭建 RTSP 流媒体服务器
      • ②、新建播放器
  • 二、MediaInfo
    • 1、简介
    • 2、下载
    • 3、MediaInfo
      • ①、主界面
      • ②、主要功能特点
      • ③、使用方法
      • ④、Mediainfo 相关参数和含义简介
  • 三、FlvAnalyzer
    • 1、简介
    • 2、下载
    • 3、基本功能特点
    • 4、FlvAnalyzer
      • ①、主界面
      • ②、格式分析
      • ③、数据分析
      • ④、时间分析
      • ⑤、码率分析
      • ⑥、同步分析
  • 四、Elecard Stream Analyzer 码流分析工具
    • 1、简介
    • 2、下载
    • 3、码流
    • 4、使用
    • 5、特色介绍
    • 6、多码流
  • 五、FFmpeg
    • 1、简介
    • 2、FFmpeg 项目组成
    • 3、FFmpeg 组成
    • 4、使用 ffmpeg 的方式分为两种
    • 5、FFmpeg 命令行
    • 6、FFmpeg 下载及安装
      • ①、FFmpeg 下载
      • ②、安装
      • ③、测试
  • 测试视频素材下载


前言

我们在进行音视频开发过程中不可避免的需要使用一些工具进行协助开发,本文重点讲解音视频开发过程中常用工具以及常用功能。


一、VLC 播放器

1、简介

VLC 支持多种常见音视频格式,支持多种流媒体传输协议,也可当做本地流媒体服务器使用,功能十分强大。

2、下载

官网下载地址: https://www.videolan.org/

或者在电脑的应用商店下载也可以
在这里插入图片描述

3、VLC media player

VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。

VLC 的全名是 Video Lan Client,是一个开源的、跨平台的视频播放器。

VLC 支持大量的音视频传输、封装和编码格式,下面给出一个简要的不完整的列表:

  • 操作系统: Windows、 WinCE、 Linux、 MacOSX、 BEOS、 BSD
  • 访问形式: 文件、 DVD/VCD/CD、 http、 ftp、 mms、 TCP、 UDP、 RTP、 IP 组播、 IPv6、 rtsp
  • 编码格式: MPEG*、 DIVX、 WMV、 MOV、 3GP、 FLV、 H.263、 H.264、 FLAC
  • 视频字幕: DVD、 DVB、 Text、 Vobsub
  • 视频输出: DirectX、 X11、 XVideo、 SDL、 FrameBuffer、 ASCII
  • 控制界面: WxWidgets、 QT4、 Web、 Telnet、 Command line
  • 浏览器插件: ActiveX、 Mozilla(firefox)

4、VLC 打开网络串流

http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8

媒体 -> 打开网络串流
在这里插入图片描述
将上面的网络复制并粘贴到此处,并点击播放
在这里插入图片描述
可以看到播放效果请添加图片描述

5、VLC 作为流媒体服务器

VLC 的功能很强大, 它不仅仅是一个视频播放器, 也可作为小型的视频服务器, 更可以一边播放一边转码, 把视频流发送到网络上。

①、搭建 RTSP 流媒体服务器

媒体 -> 流
在这里插入图片描述
添加一个本地的 mp4 格式视频文件,再点击串流
在这里插入图片描述
点击下一个
在这里插入图片描述

选择 RTSP,再点击添加
在这里插入图片描述
例如我这里指定一个 RTSP 默认的 554 端口,路径为 /test,再点击下一个
在这里插入图片描述
配置文件选择 Video - H.264 + MP3 (TS)
在这里插入图片描述
TS 流是一个一个的片段,在任意时刻我们可以找到同步头,可以播放出来,这是 TS 流的好处

可以看到如下内容,并点击流
在这里插入图片描述

  • vcodec=h264:H264 编码
  • vb=800:视频的比特率
  • acodec=mpga:音频的编码
  • ab=128:音频的比特数
  • channels=2:声道数
  • samplerate=44100:采样率
  • rtsp://:554/test:播放路径

rtp 是传输协议,rtsp 是控制协议

可以看到进度条开始动了,这样一个 RTSP 流媒体服务器就搭建好了
在这里插入图片描述

②、新建播放器

再打开一个 VLC media player
媒体 -> 打开网络串流,将上面的播放路径复制到 URL 处,并点击播放
在这里插入图片描述
可以看到视频文件正在被播放
请添加图片描述
左边是 VLC 作为流媒体服务器,作为推流,右边是 VLC 播放器打开网络串流,是一个小型的播放器

可以打开多个播放器打开网络串流

二、MediaInfo

1、简介

MediaInfo 用来分析视频和音频文件的编码和内容信息。

①、使用 MediaInfo 可以获得多媒体文件的哪些信息?

  • 内容信息: 标题, 作者, 专辑名, 音轨号, 日期, 总时间……
  • 视频: 编码器, 长宽比, 帧频率, 比特率……
  • 音频: 编码器, 采样率, 声道数, 语言, 比特率……
  • 文本: 语言和字幕
  • 段落: 段落数, 列表

②、MediaInfo 支持哪些文件格式?

  • 视频:MKV,OGM,AVI,DivX,WMV,QuickTime,Real,MPEG-1,MPEG-2,MPEG-4,DVD (VOB)…
  • (编码器:DivX,XviD,MSMPEG4,ASP,H.264,AVC…)
  • 音频:OGG,MP3,WAV,RA,AC3,DTS,AAC,M4A,AU,AIFF…
  • 字幕:SRT,SSA,ASS,SAMI…

2、下载

官网下载地址:https://mediaarea.net/en/MediaInfo

或者在电脑的应用商店下载也可以
在这里插入图片描述

3、MediaInfo

①、主界面

主页面如下图所示:
在这里插入图片描述

②、主要功能特点

支持众多视频和音频文件格式

多种查看方式: 文本, 表格, 树形图, 网页……
在这里插入图片描述
自定义查看方式

信息导出: 文本, CSV, HTML……

③、使用方法

如果是查看少数媒体文件的信息, 直接把文件拖入 Mediainfo 应用界面即可,然后就会直接显示出文件的相关信息。
在这里插入图片描述
Mediainfo 也可以直接查看整个文件夹下中的媒体文件信息, 可以点击界面左侧中间的图标即可。
在这里插入图片描述
Mediainfo 能够查看视频、 音频、 图片的格式信息。

④、Mediainfo 相关参数和含义简介

准备一个 mp4 文件的视频文件将其拖入到主界面,并且以 HTML 方式查看,此处先把视图切换为 HTML(View 菜单 -> HTML)

可以看出,主要包括三个部分的参数,分别是: General、 Video、 Audio。

General 主要是视频封装格式的信息,包括:文件大小、文件时长、比特率、编码时间等。
在这里插入图片描述
Video 主要是视频编码的相关信息,包括:编码器、Profile & Level、是否使用算术熵编码、比特率、视频文件大小、视频尺寸、帧率模式、帧率、色彩空间、扫描类型(逐行/隔行)、编码设置等
在这里插入图片描述
Audio 主要是音频编码的相关信息,包括:格式、声道数、编码格式、Profile、时长、比特率、是否有损压缩、音频的帧率等信息。
在这里插入图片描述

三、FlvAnalyzer

1、简介

直播推流的时候需要用到 RTMP 的视频数据格式。RTMP 的视频格式和 FLV 相似,通过查看 FLV 的格式文档,可以通过分析 FLV 协格式来解析 RTMP 格式。

RTMP 中的数据就是由 FLV 的 TAG 中的数据区构成。FLV 是流媒体封装格式,可以将其数据看为二进制字节流。

总体上看,FLV 包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的 TagTag Size 对组成,如下图所示。
在这里插入图片描述

2、下载

下载链接:flvAnalyser v0.1.2.005

3、基本功能特点

FlvAnalyser 是一款强大的 flv 文件分析工具,包括以下基本功能特点:

  • 文件格式分析
  • 数据分析: Tag 列表, 16 进制分析
  • 时间戳分析
  • 码率分析
  • 音视频同步分析
  • 日志记录
  • 语法指南(FLV 基本语法)
  • 视频、 音频 ES 提取存文件;
  • 时间信息提取存文件;

4、FlvAnalyzer

①、主界面

在这里插入图片描述

②、格式分析

file -> open file

这里和上面的讲过的 Mediainfo 很相似
在这里插入图片描述

③、数据分析

在这里插入图片描述

④、时间分析

在这里插入图片描述

⑤、码率分析

在这里插入图片描述

⑥、同步分析

在这里插入图片描述

上面最常用的是格式分析数据分析

四、Elecard Stream Analyzer 码流分析工具

1、简介

Elecard Stream Analyzer 是一款简单小巧的码流分析工具,通过该软件,用户可以快速的分析查看视频序列码流;用户只需将视频文件导入软件内,系统就会自动帮您分析文件,分析后就会显示视频码的文件大小、码流类型、数据包数等内容了

2、下载

链接:https://pan.baidu.com/s/1hMGBTPB58xYTmYysPwlrCA
提取码:ykhf

3、码流

码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率,是视频编码中画面质量控制中最重要的部分。

同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越好。

4、使用

打开一个 aac 文件,查看相关编解码信息
在这里插入图片描述

5、特色介绍

  • 显示和保存流摘要和图片信息
  • 显示的解码,预测和未经过滤的帧数据(YUV 和单机)
  • 显示剩余,转换和反量化系数
  • 保存的解码,预测,未经过滤和残余信息
  • 显示 VPS,SPS,PPS 的片头与偏移和位大小指示(如标准文档中)
  • 显示的编码树组数据:位置,分片索引,瓷砖指数,大小,编码,预测(MV,MVD及 MV 候选人),变换单元信息
  • 切片和小块边界,分区,运动矢量,种类,比特大小,量化的可视化
  • 通过图表栏或缩略图导航
  • 显示器内部的视频流比特分配。能够选择的比特流元素的显示
  • 流导航和显示 I,P,B,IP 和关键帧模式
  • 显示参考帧的
  • 十六进制查看器
  • 流浏览器 - 文件内容(头层)呈现在文本模式下
  • 查看参考原始数据
  • 指标计算
  • 参照原始数据可视化比较(温度,减,比较,块 PSNR 模式)

6、多码流

多码流技术是通过在编码过程中同时产生多种不同码流及分辨率的流媒体数据, 根据用户实际网络带宽条件为之自动分配相对最佳解码画质的解决方案。

五、FFmpeg

这里仅对 FFmepg 做简要介绍,因其内容庞大,具体部分准备放到后面讲解

1、简介

ffmpeg 是一个跨平台的音视频处理库, 为了跨平台那么就需要编译出适用于各个平台的 ffmpeg 库。

FFmpeg 是一套可以用来记录、 转换数字音频、 视频, 并能将其转化为流的开源计算机程序。它提供了录制、 转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库 libavcodec, 为了保证高可移植性和编解码质量,libavcodec 里很多 code 都是从头开发的。

2、FFmpeg 项目组成

  • libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构
  • libavcodec:用于各种类型声音/图像编解码;
  • libavutil:包含一些公共的工具函数;
  • libswscale:用于视频场景比例缩放、色彩映射转换;
  • libpostproc:用于后期效果处理;

①、ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等
②、ffsever:一个 HTTP 多媒体即时广播串流服务器;
③、ffplay:是一个简单的播放器,使用 ffmpeg 库解析和解码,通过 SDL 显示;

3、FFmpeg 组成

官网介绍 FFMPEG 是一个多媒体框架,其包含了多个模块库:AVFormat,AVCodec,AVFilter,AVDevice,AVUtil 等,并且提供了基于这些库的三个命令行工具: ffmpeg, ffplay, ffprobe。

4、使用 ffmpeg 的方式分为两种

  • 一种方式是直接使用 ffmpeg 提供的这三个命令行工具来进行多媒体处理;
  • 另一种是使用 ffmpeg 封装的这些库进行二次开发

5、FFmpeg 命令行

  • 列出支持的格式
  • 剪切一段媒体文件
  • 提取一个视频文件中的音频文件
  • 从 MP4 文件中抽取视频流导出为裸的 H264 数据
  • 视频静音, 即只保留视频 -an,-vn
  • 使用 AAC 音频数据和 H264 视频生成 MP4 文件
  • 音频格式转换
  • 从 WAV 音频文件中导出 PCM 裸数据
  • 将一个 MP4 的文件转换为一个 GIF 动图
  • 使用一组图片生成 gif
  • 淡入效果器使用
  • 将两路声音合并,比如加背景音乐
  • 为视频添加水印效果
  • 视频提亮效果器
  • 视频旋转效果器的使用
  • 视频裁剪效果器的使用
  • 将一段视频推送到流媒体服务器上
  • 将流媒体服务器上的流 dump 到本地
  • 将两个音频文件以两路流的形式封装到一个文件中

6、FFmpeg 下载及安装

①、FFmpeg 下载

官方下载地址:https://ffmpeg.org/download.html
在这里插入图片描述
选择 windows build from gyan.dev
在这里插入图片描述
选择其中一个进行下载
在这里插入图片描述

②、安装

<1>、下载好解压到本地目录 D:\FFmpeg 下
在这里插入图片描述
<2>、设置环境变量
此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统环境变量 -> PATH -> 编辑
在这里插入图片描述
新增 D:\FFmpeg\ffmpeg-6.0-essentials_build\bin 到环境变量中
在这里插入图片描述

③、测试

<1>、 查看 FFmpeg 的版本
cmd 中输入 ffmpeg -version 检查一下是否安装成功
在这里插入图片描述
这个回显说明安装成功

<2>、视频格式转换测试
我们再做一个测试将 mp4 格式文件转换成 flv 格式文件
D:\Work\test 目录下有一个 mp4 文件
在这里插入图片描述
输入以下命令

ffmpeg -i SampleVideo_1280x720_20mb.mp4 -c copy -f flv SampleVideo_1280x720_20mb.flv

在这里插入图片描述
完整的回显信息

D:\Work\test>ffmpeg -i SampleVideo_1280x720_20mb.mp4 -c copy -f flv SampleVideo_1280x720_20mb.flv
ffmpeg version 6.0-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, 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-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil      58.  2.100 / 58.  2.100libavcodec     60.  3.100 / 60.  3.100libavformat    60.  3.100 / 60.  3.100libavdevice    60.  1.100 / 60.  1.100libavfilter     9.  3.100 /  9.  3.100libswscale      7.  1.100 /  7.  1.100libswresample   4. 10.100 /  4. 10.100libpostproc    57.  1.100 / 57.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SampleVideo_1280x720_20mb.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41creation_time   : 1970-01-01T00:00:00.000000Zencoder         : Lavf53.24.2Duration: 00:01:57.31, start: 0.000000, bitrate: 1436 kb/sStream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 1048 kb/s, 25 fps, 25 tbr, 12800 tbn (default)Metadata:creation_time   : 1970-01-01T00:00:00.000000Zhandler_name    : VideoHandlervendor_id       : [0][0][0][0]Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)Metadata:creation_time   : 1970-01-01T00:00:00.000000Zhandler_name    : SoundHandlervendor_id       : [0][0][0][0]
Output #0, flv, to 'SampleVideo_1280x720_20mb.flv':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf60.3.100Stream #0:0(und): Video: h264 (Main) ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 1048 kb/s, 25 fps, 25 tbr, 1k tbn (default)Metadata:creation_time   : 1970-01-01T00:00:00.000000Zhandler_name    : VideoHandlervendor_id       : [0][0][0][0]Stream #0:1(und): Audio: aac (LC) ([10][0][0][0] / 0x000A), 48000 Hz, 5.1, fltp, 383 kb/s (default)Metadata:creation_time   : 1970-01-01T00:00:00.000000Zhandler_name    : SoundHandlervendor_id       : [0][0][0][0]
Stream mapping:Stream #0:0 -> #0:0 (copy)Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 2932 fps=0.0 q=-1.0 Lsize=   20659kB time=00:01:57.29 bitrate=1442.9kbits/s speed=1.27e+03x
video:15013kB audio:5497kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.726677%D:\Work\test>

此刻再看 D:\Work\test 目录下多了一个名为 SampleVideo_1280x720_20mb.flv 的文件
在这里插入图片描述


测试视频素材下载

各种格式,MP4, flv, mkv, 3gp 视频下载地址:
https://www.sample-videos.com/index.php#sample-mp4-video
https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/audio-samples.html


我的qq:2442391036,欢迎交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/116826.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp热更新

首先热更新需要wgt包&#xff1b; 其次先了解这两个组件 下载的方法 安装的组件 场景&#xff1a; 当你项目的js文件或者页面文件或者静态图片文件css文件更新的时候可以走热更新&#xff1b; 而当你安装新的组件插件或者开启新的权限等功能的时候就无法通过热更新进行更新了…

数据结构入门 — 队列

本文属于数据结构专栏文章&#xff0c;适合数据结构入门者学习&#xff0c;涵盖数据结构基础的知识和内容体系&#xff0c;文章在介绍数据结构时会配合上动图演示&#xff0c;方便初学者在学习数据结构时理解和学习&#xff0c;了解数据结构系列专栏点击下方链接。 博客主页&am…

开发指导—利用CSS动画实现HarmonyOS动效(一)

注&#xff1a;本文内容分享转载自 HarmonyOS Developer 官网文档 一. CSS 语法参考 CSS 是描述 HML 页面结构的样式语言。所有组件均存在系统默认样式&#xff0c;也可在页面 CSS 样式文件中对组件、页面自定义不同的样式。请参考通用样式了解兼容 JS 的类 Web 开发范式支持的…

002图的基本概念与表示方法

文章目录 一. 图的组成二. 本体图2.1 什么是本体图2.2 怎么设计本体图 三. 图的种类3.1 按连接是否有向分3.2 按本体图分3.3 按连接是否带权重分 四. 节点连接数&#xff08;节点的度&#xff09;4.1 无向图节点的度4.2 有向图节点的度 五. 图的表示方法5.1 邻接矩阵5.2 连接列…

【ES6】Promise.all用法

Promise.all()方法用于将多个 Promise 实例&#xff0c;包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中&#xff0c;Promise.all()方法接受一个数组作为参数&#xff0c;p1、p2、p3都是 Promise 实例&#xff0c;如果不是&#xff0c;就会先调…

新版Mongodb(6.0以上)找不到mongo.exe

安装目录下/bin目录中&#xff0c;没有mongo.exe文件&#xff0c;只有mongod和mongos&#xff0c;以及一个powershell命令脚本。 原因在于&#xff0c;mongodb6.0以后做出了重大改变&#xff0c;mongodb已经不再默认为你安装shell工具&#xff0c;因此需要安装一个额外的shell…

15年检测生涯转瞬即逝,复旦MBA助力邢国芒实现质量强国梦

日月光华&#xff0c;旦复旦兮&#xff01;复旦MBA如同一个巨大的磁场&#xff0c;吸引了诸多来自五湖四海、各行各业的职场精英。从初入职场的青涩懵懂到如今的独当一面专业干练&#xff0c;他们逐渐成长为职场的中坚力量&#xff0c;在各自领域内发光发热。作为新时代的青年&…

算法:分治思想处理归并递归问题

文章目录 算法原理实现思路典型例题排序数组数组中的逆序对计算右侧小于当前元素的个数 总结 算法原理 利用归并思想进行分治也是很重要的一种思路&#xff0c;在解决逆序对的问题上有很大的需求空间 于是首先归并排序是首先的&#xff0c;归并排序要能写出来&#xff1a; c…

ubuntu上安装nginx

这篇文章主要介绍怎么在ubuntu上安装nginx服务器&#xff0c;并进行一些简单的配置。 第一步&#xff1a;准备好一台ubuntu操作系统的虚拟机 注意&#xff1a;如果你还没有安装好ubuntu&#xff0c;个人推荐阅读以下文章完成unbutu安装&#xff0c;vm的版本不用刻意安装文章中…

修改yum下载文件的位置,指定安装位置

yum update 的软件包&#xff0c;可以放在别的地方。即可。 修改/etc/yum.conf 指定安装位置 yum -c /etc/yum.conf --installroot/usr/local --releasever/ install 你需要安装的软件

软考:中级软件设计师:邮件加密系统,网络安全保障,网络威胁与攻击,防火墙技术

软考&#xff1a;中级软件设计师:邮件加密系统 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

2.2 Vector<T> 动态数组(模板语法)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 动态数组 Vector&#xff08;难度1&#xff09; 其中&#xff0c;2 是 1 中的一个作业。2 中详细讲解了动态数组实现的基本原理。 本文目标 1 学会写基本的C类模板语法&#xff1b; 2 为以后熟练使用 S…

Redis 缓存穿透、击穿、雪崩

一、缓存穿透 1、含义 缓存穿透是指查询一个缓存中和数据库中都不存在的数据&#xff0c;导致每次查询这条数据都会透过缓存&#xff0c;直接查库&#xff0c;最后返回空。 2、解决方案 1&#xff09;缓存空对象 就是当数据库中查不到数据的时候&#xff0c;我缓存一个空对象…

C++--动态规划其他问题

1.一和零 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#xff0…

【数据结构】队列---C语言版(详解!!!)

文章目录 &#x1f438;一、队列的概念及结构&#x1f344;1、队列的概念定义&#x1f344;2、动图演示 &#x1f438;二、队列的实现&#x1f438;三、链表结构队列详解&#x1f34e;创建队列的结构⭕接口1&#xff1a;定义结构体&#xff08;QNode、Queue&#xff09;⭕接口2…

游戏发行商能够提供什么服务?

游戏发行商可以为游戏开发者提供广泛的服务&#xff0c;以帮助他们将游戏成功地引入市场并取得更好的业绩。以下是游戏发行商可能提供的一些服务&#xff1a; 市场营销和宣传&#xff1a;发行商通常具有丰富的市场营销经验&#xff0c;可以制定并执行有效的宣传和营销策略。他们…

力扣:82. 删除排序链表中的重复元素 II(Python3)

题目&#xff1a; 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - …

你知道用Woof创建的Linux吗?

Quirky 8.2 已发布&#xff0c;它是 Puppy Linux 的姊妹项目&#xff0c;是用一份叫 Woof 的定制工具创建的 Linux 发行。 新版本 Quirky 8.2 运行在 64 位的 x86 计算机上&#xff0c;主要提供了针对以前的 8.x 版本的增量改进。 Quirky Linux 8.2 x86_64 的代号是Xerus&…

这个在线网站让你三分钟制作出一份精美简历

今天&#xff0c;我要向大家推荐一个神奇的在线工具网站&#xff0c;它能够提供免费简历模板、简历范文&#xff0c;支持在线编辑&#xff0c;并且一键下载为PDF。这个工具让你的简历制作变得轻松便捷&#xff01; 首先&#xff0c;这个网站的简历模板非常丰富多样。无论你是刚…

电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒

不知道什么时候开始&#xff0c;我电脑C盘的系统数据存储文件夹programdata 不知不觉就没了&#xff0c;找不到了 programdata文件夹为存储系统数据文件的&#xff0c;这个文件不见了&#xff0c;而且我打开了显示隐藏文件和文件夹还是没有显示 然后我重启电脑&#xff0c;杀毒…