02 ffmpeg工具详解【全】
ffmpeg是FFmpeg源代码编译后生成的一个可执行程序,其可以作为命令行工具使用。它是一个非常全能的视频和音频处理器,可以对音视频进行编码、解码、转封装以及字幕处理等操作。其工作流程也非常简单:
目录
1、ffmpeg 操作选项
2、ffmpeg 的使用
(1) 获取视频的信息
a 第一部分
b 第二部分
c 第三部分
(2) 视频格式转换
(3) 录制
a 屏幕录制
b RTSP录制
c 等间隔录制
(4) 视频裁剪
(5) 截图
a 视频截图
b 等间隔截图
c 按间隔帧来提取视频中的帧
(6) 图片合成视频
(7) 转分辨率和码率
1、ffmpeg 操作选项
命令格式:
ffmpeg [options] [ [infile options] -i infile]... {[outfile options] outfile}...
参数:
- options:表示的是ffmpeg全局操作项
- infile options:对输入文件进行的操作项
- infile:输入文件的全路径,包含文件名称
- outfile options:对输出文件进行的操作项
- outfile:输出文件的全路径,包含文件名称
ffmpeg的可用操作项非常多,部分操作项使用起来相当复杂,所以建议对ffmpeg的使用仅仅当作一本工具书,即在使用时再去查找,切勿死记硬背,因为即使当时记住了,长时间不使用,很容易忘记。详细内容可以参考官方文档:ffmpeg工具官方文档。
以下是个人对ffmpeg参数的理解性翻译,仅作参考:
wangxx@wanglxxMacBook-Pro ~ % ffmpeg -h long
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developersbuilt with Apple clang version 12.0.5 (clang-1205.0.22.9)configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4_2 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolboxlibavutil 56. 70.100 / 56. 70.100libavcodec 58.134.100 / 58.134.100libavformat 58. 76.100 / 58. 76.100libavdevice 58. 13.100 / 58. 13.100libavfilter 7.110.100 / 7.110.100libavresample 4. 0. 0 / 4. 0. 0libswscale 5. 9.100 / 5. 9.100libswresample 3. 9.100 / 3. 9.100libpostproc 55. 9.100 / 55. 9.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...Getting help:-h -- 打印出支持的基本操作-h long -- 打印出更多支持的基本操作-h full -- 打印出所有支持的操作(非常多)-h type=name -- 打印出指定模块所支持的详细信息(decoder/encoder/demuxer/muxer/filter/bsf/protocol)Print help / information / capabilities:
-L 显示license
-h topic 显示帮助信息
-? topic 显示帮助信息
-help topic 显示帮助信息
--help topic 显示帮助信息
-version 显示版本信息
-buildconf 显示该工具编译时指定的配置项
-formats 显示所有可用的多媒体格式
-muxers 显示所有可用的支持混流合成的媒体格式
-demuxers 显示所有可用的支持分离混的媒体格式
-devices 显示所有可用的设备
-codecs 显示所有可以的编解码器
-decoders 显示所有可用的解码器
-encoders 显示所有可以的编码器
-bsfs 显示所有可用的比特流过滤器
-protocols 显示可用的网络协议
-filters 显示可用的过滤器
-pix_fmts 显示可用的像素编码格式
-layouts 显示channel名称和标准channel布局
-sample_fmts 显示可用的采样格式
-colors 显示识别的颜色名称
-sources device 设置输入设备自动检测源
-sinks device 设置输出设备自动检测源
-hwaccels 显示可用的硬件加速方法Global options (全局操作项):
-loglevel loglevel 设置日志级别
-v loglevel 设置日志级别
-report 生成报告
-max_alloc bytes 设置ffmpeg在堆上每次最大分配的字节数
-y 覆盖输出文件
-n 永远不覆盖输出文件
-ignore_unknown 如果尝试复制此类流,则忽略具有未知类型的输入流而不是失败
-filter_threads 设置用于处理过滤器管道的线程数。每个管道将生成一个线程池,其中包含许多可用于并行处理的线程。默认值为可用 CPU 的数量
-filter_complex_threads 设置用于处理 filter_complex 图的线程数
-stats 显示编码进度/统计信息。默认是打开的,若要禁用,需指定-nostats.
-max_error_rate rate 设置解码帧失败的比例,当超过此值时,ffmpeg将返回退出代码 69,默认值为 2/3
-bits_per_raw_sample number 设置每个原始样本的位数
-vol volume 设置音频音量 (256=normal)Advanced global options(高级全局操作项):
-cpuflags flags 设置CPU的标志
-hide_banner 隐藏ffmpeg版权声明
-copy_unknown 允许复制具有未知类型的输入流而不是失败
-benchmark 在编码结束时显示基准信息,显示真实的系统和用户使用时间以及最大内存消耗。
-benchmark_all 在编码期间显示基准信息,显示在各个步骤(音频/视频编码/解码)中使用的真实时间、系统时间和用户时间。
-progress url 将ffmpeg工具执行的进度信息发送到 url。
-stdin 在标准输入上启用交互,默认情况下打开,要显式禁用交互,需指定 -nostdin。
-timelimit limit 设置ffmpeg工具在CPU上运行的最大时间,超过该时间,则强制退出
-dump 打印每个包至stderr
-hex 打印每个包时,也显示详细负荷内容
-vsync 视频帧同步方法
-frame_drop_threshold 丢帧阈值,指定视频帧在被丢弃之前可以落后多少。
-async 音频同步方法
-adrift_threshold threshold 设置时间戳和音频数据之间的最小差异(以秒为单位)以触发添加/删除样本以使其与时间戳匹配。
-copyts 不处理输入时间戳,但保留它们的值而不尝试清理它们,特别是初始开始时间偏移值。
-start_at_zero 当与复制一起使用时,将输入时间戳移位,使它们从0开始。
-copytb mode 指定流复制时如何设置编码器时基。
-dts_delta_threshold threshold 时间戳不连续增量阈值。
-dts_error_threshold threshold 时间戳连续错误增量阈值。
-xerror error 以指定error退出
-abort_on flags 设置异常终止条件
-filter_complex graph_description 创建一个复杂的过滤器图,即具有任意数量的输入和/或输出的过滤器图。
-lavfi graph_description 创建一个复杂的过滤器图
-filter_complex_script filename 从文件中读取复杂的 filtergraph 描述
-auto_conversion_filters 所有过滤器图中启用自动插入格式转换过滤器
-stats_period time 设置更新编码进度/统计信息的时间段。 默认值为 0.5 秒。
-debug_ts 打印时间戳调试信息
-intra 不推荐使用-g 1
-sameq 已移除
-same_quant 已移除
-deinterlace 此选项已弃用,请改用 yadif 过滤器
-psnr 计算压缩帧的 PSNR
-vstats 将视频编码统计信息转储到文件
-vstats_file file 将视频编码统计信息转储到文件
-vstats_version 指定要使用的 vstats 格式的版本。 默认值为 2。
-qphist 显示 QP 直方图
-vc channel 此选项已弃用,请改用 -channel
-tvstd standard 此选项已弃用,请改用 -standard
-isync 此选项已弃用
-sdp_file file 将输出流的 sdp 信息打印到文件。
-init_hw_device args 初始化硬件设备参数
-filter_hw_device device 设置过滤时使用的硬件设备Per-file main options(单文件操作项):
-f fmt 强制设置输入或输出文件格式。
-c codec 使用指定的编解码器
-codec codec 使用指定的编解码器
-pre preset 指定匹配流的预设。
-map_metadata outfile[,metadata]:infile[,metadata] 从输入文件设置下一个输出文件的元数据信息
-t duration 录像或转码音频/视频的持续时间(秒)
-to time_stop 设置录像或转码音频/视频的持续时间(秒),-t的优先级更高
-fs limit_size 设置输入/输出文件的尺寸最大值
-ss time_off 设置输入/输出流相对于开始位置的时间偏移
-sseof time_off 设置输入/输出流相对于结束位置的时间偏移,即负值在文件中较早,0位于EOF。
-seek_timestamp 此选项使用 -ss 选项在输入文件中启用或禁用按时间戳搜索,默认情况下它是禁用的。 如果启用,则 -ss 选项的参数被视为实际时间戳,并且不会被文件的开始时间偏移。 这仅适用于不从时间戳 0 开始的文件,例如传输流。
-timestamp time 设置开始录制的时间戳('now' 表示当前时间)
-metadata string=string 增加或修改元数据键/值对。
-program title=string:st=number... 添加具有指定流的程序
-target type 指定目标文件类型
-apad 填充输出音频流。
-frames number 设置要输出的帧率
-filter filter_graph 设置流过滤器图
-filter_script filename 从文件中读取流过滤器图描述
-reinit_filter 在输入参数更改时重新初始化 filtergraph
-discard 允许从流中丢弃特定的流或帧。 可以使用值 all 完全丢弃任何输入流,而从流中选择性丢弃帧发生在解复用器处,并非所有解复用器都支持。
-disposition 显示流处置。Advanced per-file options(单文件高级操作项):
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] 指定一个或多个输入流作为输出文件的源
-map_channel file.stream.channel[:syncfile.syncstream] 指定一个或多个输入音频流作为输出文件的音频源
-map_chapters input_file_index 设置输入文件的某股流作为输出
-accurate_seek 此选项使用 -ss 选项启用或禁用在输入文件中的准确搜索。 它默认启用,因此转码时搜索是准确的。 使用 -noaccurate_seek 禁用它,这可能很有用,例如 复制某些流并转码其他流时。
-itsoffset time_off 设置输入时间偏移。
-itsscale scale 重新调整输入时间戳
-dframes number 设置要输出的帧率,被-frames替代
-re 以输入文件的帧率输出
-shortest 当最短的输入流结束时完成编码。
-bitexact 为 (de)muxer 和 (de/en)coder 启用 bitexact 模式
-copyinkf 在进行流复制时,还要复制开头找到的非关键帧。
-copypriorss 在开始时间之前复制或丢弃帧
-tag fourcc/tag 强制使用tag/fourcc 来匹配流。
-q q 使用固定质量标度 (VBR)
-qscale q 使用固定质量标度 (VBR)
-profile profile 设置编码配置文件
-attach filename 将附件添加到输出文件。
-dump_attachment filename 将匹配的附件流提取到名为 filename 的文件中。
-stream_loop loop count 设置输入流应循环的次数。 loop 0 表示不循环,loop -1 表示无限循环。
-thread_queue_size 此选项设置从文件或设备读取时排队数据包的最大数量。
-find_stream_info 读取和解码流以使用启发式填充缺失的信息
-autorotate 根据文件元数据自动旋转视频。 默认启用,使用 -noautorotate 禁用它。
-autoscale 根据第一帧的分辨率自动缩放视频。 默认启用,使用 -noautoscale 禁用它
-muxdelay seconds 设置最大解复用器解码延迟。
-muxpreload seconds 设置初始解复用器解码延迟。
-time_base ratio 设置编解码器时基
-enc_time_base ratio 设置编码器时基
-bsf bitstream_filters 为匹配流设置比特流过滤器。
-fpre filename 从指定的预设文件中设置选项
-max_muxing_queue_size packets 对音频和/或视频流进行转码时,ffmpeg 将不会开始写入输出,直到每个此类流都有一个数据包。 在等待这种情况发生时,其他流的数据包会被缓冲。
-muxing_queue_data_threshold bytes 这是一个最小阈值,在此之前不考虑复用队列大小。 默认为每个流 50 兆字节,并基于传递给多路复用器的数据包的总体大小。Video options:(视频操作项)
-vframes number 设置要输出的视频帧数。
-r rate 设置帧率
-fpsmax rate 设置最大帧率
-s size 设置帧大小。
-aspect aspect 设置由aspect指定的视频显示纵横比。
-bits_per_raw_sample number 设置每个原始样本的位数
-vn 禁用视频
-vcodec codec 设置视频编解码器。 这是 -codec:v 的别名。
-timecode hh:mm:ss[:;.]ff 指定用于写入的时间码
-pass n 选择通行证编号(1 或 2)。 它用于进行两遍视频编码。 视频的统计信息在第一遍记录到日志文件中(另请参见选项 -passlogfile),在第二遍中,该日志文件用于以准确请求的比特率生成视频。
-vf filter_graph 创建由 filtergraph 指定的 filtergraph 并使用它来过滤流。
-ab bitrate 音频比特率
-b bitrate 视频码率
-dn 作为输入选项,阻止文件的所有数据流被过滤或自动选择或映射用于任何输出。作为输出选项,禁用数据记录,即任何数据流的自动选择或映射。 如需完全手动控制,请参阅 -map 选项。Advanced Video options:(视频高级操作项)
-pix_fmt format 设置像素格式。
-rc_override override 特定间隔的速率控制覆盖,格式为“int,int,int”列表,以斜线分隔。 前两个值是开始和结束帧编号,最后一个是使用正数的量化器,或负数时使用的质量因子。
-passlogfile prefix 设置两遍日志文件名前缀为prefix,默认文件名前缀为“ffmpeg2pass”。
-psnr 计算压缩帧的 PSNR
-vstats 将视频编码统计信息转储到文件
-vstats_file file 将视频编码统计信息转储到文件
-vstats_version 要使用的 vstats 格式的版本。
-intra_matrix matrix 指定矩阵内系数
-inter_matrix matrix 指定矩阵内系数
-chroma_intra_matrix matrix 指定矩阵内系数
-top top=1/bottom=0/auto=-1 字段优先
-vtag fourcc/tag 强制视频tag/fourcc
-qphist 显示 QP 直方图
-force_fps 强制选择帧率,禁用最佳支持的帧率选择
-streamid streamIndex:value 为输出流分配一个新的 stream-id 值。
-force_key_frames timestamps 在指定的时间戳强制关键帧
-hwaccel hwaccel name 使用硬件加速来解码匹配的流
-hwaccel_device devicename 选择用于硬件加速的设备。
-hwaccel_output_format format 选择用于硬件加速解码的输出格式
-vc channel 弃用,改用-channel
-tvstd standard 弃用,改用 -standard
-vpre preset 将视频选项设置为指定的预设Audio options:(音频操作项)
-aframes number 设置要输出的音频帧数。 这是 -frames:a 的过时别名,您应该改用它。
-aq quality 设置音频质量(特定于编解码器)
-ar rate 设置音频采样率(以赫兹为单位)
-ac channels 设置音频通道数
-an 禁用音频
-acodec codec 设置音频编解码器。 这是 -codec:a 的别名。
-vol volume 设置音频音量(256=normal)
-af filter_graph 设置音频过滤器Advanced Audio options:(音频高级操作项)
-atag fourcc/tag 强制音频tag/fourcc
-sample_fmt format 设置音频样本格式。
-channel_layout layout 输入流的通道布局。 默认为“立体声”
-guess_layout_max 如果某些输入通道布局未知,则仅尝试猜测它是否最多对应于指定数量的通道。
-absf audio bitstream_filters 已弃用
-apre preset 将音频选项设置为指定的预设Subtitle options(字幕操作项):
-s size 设置帧大小
-sn 禁用字幕
-scodec codec 强制字幕编解码器
-stag fourcc/tag 强制字幕tag/fourcc
-fix_sub_duration 修复字幕持续时间。
-canvas_size size 设置用于渲染字幕的画布大小
-spre preset 将字幕选项设置为指定的预设
2、ffmpeg 的使用
(1) 获取视频的信息
ffmpeg -i test.mp4
输出结果如下:
各部分含义解释如下:
a 第一部分
Metadata:major_brand : mp42 minor_version : 0compatible_brands: mp41isom creation_time : 2021-12-04T13:35:49.000000Z Duration: 00:01:11.10, start: 0.000000, bitrate: 8054 kb/s
这部分信息表明了该文件的Metadata信息:
major_brand字段表示该文件的封装格式为mp42(MP4格式的子规范),文件创建时间为 2021-12-04T13:35:49.000000Z,视频持续时间为00:01:11.10(1分钟11秒),开始播放的时间是从0.000000ms,文件的比特率是8054 kb/s
b 第二部分
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc), 1280x720 [SAR 1:1 DAR 16:9], 7852 kb/s, 29.57 fps, 20 tbr, 30k tbn, 60 tbc (default)Metadata:creation_time : 2021-12-04T13:35:49.000000Zhandler_name : VideoHandlervendor_id : [0][0][0][0]encoder : AVC Coding
在介绍该部分信息之前,需要先知道几个专业术语,即关于时间基相关的定义:
- tbr 表示帧率,该参数倾向于一个基准,往往tbr跟fps相同
- tbn 表示视频流 timebase(时间基准),比如ts流的timebase 为90000,flv格式视频流timebase为1000
- tbc 表示视频流codec timebase ,对于264码流该参数通过解析sps间接获取(通过sps获取帧率)
这部分信息表示文件的第一股流是视频流,编码方式是H264的格式,封装格式是AVC1,帧的数据格式是yuvj420p,分辨率是1280x720,比特率是7852 kb/s 。
c 第三部分
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)Metadata:creation_time : 2021-12-04T13:35:49.000000Zhandler_name : SoundHandlervendor_id : [0][0][0][0]
这行信息表示第二股流是音频流,编码方式是AAC,封装格式是MP4A,并且采用的Profile是LC规格,采样率是48000Hz,声道数是立体声,数据表示格式是浮点型,这路音频流的比特率是195kb/s.
(2) 视频格式转换
ffmpeg -i 720.avi -an -vcodec libx264 outfile.h264
- -i input file
- -an disable audio
- -vcodec 指定编码类型
(3) 录制
a 屏幕录制
ffmpeg -y -f gdigrab -t 30 -r 25 -i desktop -vcodec libx264 -s 1366x768 test720.mp4
- -t 表示录屏时间,默认无限制
- -r 表示帧率
- -y 表示会覆盖同名文件
- - s 表示分辨率
- -vcodec 表示编码器的库为x264
- test720.mp4 为输出文件名
b RTSP录制
ffmpeg -y -rtsp_transport tcp -i "rtsp://admin:admin123@172.23.240.20:554/cam/realmonitor?channel=1&subtype=0" -t 30 -vcodec copy rtsp.avi
- -y 表示会覆盖同名文件
- -rtsp_transport tcp 强制使用tcp方式读取rtsp流,默认为UDP方式
-vcodec copy 按照rtsp流中视频原本的编码格式来保存。
- -t 表示录屏时间,默认无限制
c 等间隔录制
ffmpeg -rtsp_transport tcp -i "rtsp://admin:admin123@172.23.240.20:554/cam/realmonitor?channel=1&subtype=0" -vcodec copy -f segment -segment_list out.list -segment_time 10 -segment_atclocktime 1 -strftime 1 "%Y-%m-%d_%H-%M-%S_1.mp4"
- -f segment 视频自动分割
- -segment_list out.list 分割后的视频文件名称列表保存在out.list中。
- -segment_time 900 每隔900s(15min)保存一个视频文件
- -segment_atclocktime 1 -strftime 1 "%Y-%m-%d_%H-%M-%S_1.mp4" 文件名称的格式
(4) 视频裁剪
ffmpeg -ss 00:00:05 -t 00:00:10 -y -i "rtsp.avi" -vcodec copy -acodec copy cutVideo.mp4
- -ss 00:00:05 从视频的00:00:05位置开始裁剪
- -t 00:00:10 裁剪的视频时长为10秒
- -vcodec copy 按照rtsp流中视频原本的编码格式来保存
- -acodec copy 按照rtsp流中音频原本的编码格式来保存
(5) 截图
a 视频截图
ffmpeg -i rtsp.avi -y -f mjpeg -ss 3 -t 1 test1.jpg
- -f mjpeg 指定格式化的格式为mjpeg
- -ss 3 从第3秒开始截取
- -t 1 截取一帧
b 等间隔截图
ffmpeg.exe -i rtsp.avi -vf fps=2 -ss 00:00:10 -to 00:00:15 out%d.png
从视频的10-15秒区间,每秒截取两帧画面
c 按间隔帧来提取视频中的帧
ffmpeg -i rtsp.avi -vf "select=between(n\,10\,100)*not(mod(n\,4))" -vsync 0 image_%05d.jpg
主体是一个select 的过滤语句,表示从第10帧到第100帧中间,每隔4帧取一张图像。
- between(n\,*) 表示从第几帧到第几帧之间进行提取...
- not(mode(n\, K)) 是指每隔几帧输出一帧
(6) 图片合成视频
ffmpeg -i image_%5d.jpg out.mp4
要求你的图片素材的文件名格式必须为image_00001.jpg,例如:
(7) 转分辨率和码率
ffmpeg -i rtsp.avi -b:v 10000k -s 216x384 output4.mp4
码率直接影响着视频文件的大小,如果视频画面中色彩不是很丰富,而且很少有运动目标的话,可以用很低的码率就可以保证画面清晰度了
- -b:v 10000k 设置码率为10000k
- -s 216x384 设置分辨率为216*384
02 ffmpeg工具详解【全】相关推荐
- FFmpeg入门详解之117:视频监控的架构和流程
几张架构图带您快速了解视频监控 图一 图二 图三 图四 视频监控系统的简介 视频监控 视频监控是安全防范系统的重要组成部分,英文Cameras and Surveillance.传统的监控系统包括前端 ...
- FFmpeg入门详解之89:HTTP-FLV讲解
HTTP-FLV简介 HTTP-FLV,即将音视频数据封装成 FLV,然后通过 HTTP 协议传输给客户端. HLS 其实是一个 "文本协议",而并非流媒体协议.那么,什么样的协议 ...
- rpm包安装和卸载,rpm查询,yum工具详解,yum仓库搭建
rpm包安装和卸载 [root@binbinlinux Packages]# rpm -ivh zip-3.0-1.el6.x86_64.rpm 安装rpm包命令 ivh I=安装的意思in ...
- PS调整边缘工具详解
转载地址 : http://www.360doc.com/content/15/1129/12/4127803_516682427.shtml *"调整边缘"工具详解 (ps教程) ...
- FFmpeg入门详解之83:流媒体与直播技术
流媒体 流媒体又叫流式媒体,它是指商家用一个视频传送服务器(比如:vlc)把节目(比如:ande10.mp4)当成数据包发出,传送到网络上.用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显 ...
- FFmpeg入门详解之124:Qt5 FFmpeg单路网络摄像头采集预览
Qt5+FFmpeg单路网络摄像头采集预览 源码工程:S26_Test4 RTSP协议简介 RTSP(Real Time Streaming Protocol),RFC2326 RTSP(Real T ...
- FFmpeg入门详解之111:RTSP协议2
rtsp消息详解 1.RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种消息的格式不同. 请求消息格式: 方法 URI RTSP版本 CR LF 消息头 C ...
- FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社
大家好,我的第一本书正式出版了,可以在京东各大店铺抢购哦. <FFmpeg入门详解--音视频原理及应用:梅会东:清华大学出版社> 京东自营链接:https://item.jd.com/13 ...
- Ffmpeg快速命令使用 Ffmpeg选项详解 Ffmepg格式详解 常见视频文件格式详解
http://www.ffmpeg.com.cn/index.php/%E9%A6%96%E9%A1%B5 Ffmpeg快速命令使用 From Ffmpeg工程组 Jump to: navigatio ...
最新文章
- LeetCode简单题之山羊拉丁文
- 比特币的价格今年会达到10万美元吗?有人用蒙特卡罗方法预测了一下
- 刚毕业就年薪百万!华为给予八名博士高薪惹争议:值这么多钱吗
- pandas 按日期范围筛选数据的实现
- 史上最轻量K8s发行版,赋能边缘计算
- java 拼图_我最喜欢的Java拼图2 + 1 = 4
- 敏捷开发流程的8个步骤_敏捷开发——个体和互动高于流程和工具
- 【Python成长之路】来聊聊多线程的几位“辅助”
- sublime html整理阶梯,sublime text 之添加插件 并使用
- boost电路输出电流公式_boost电路解析
- Leetcode每日一题:52.N-Queens II(N皇后Ⅱ)
- 微信分享链接,如何自定义图片,标题,内容介绍
- 战“疫”日记②|火神山小分队:像听到发令枪一样;徐碧江带勇士集结长沙“小汤山”...
- CentOS 6.5 安装 Redis 执行 make #error Newer version of jemalloc required
- linux kill 杀一个进程
- win10动态壁纸怎么设置_手机怎么设置动态壁纸-手机壁纸怎么设置动态
- 【面试题】 做了一份前端面试复习计划,保熟~
- java null==null_Java中关于Null的9个解释(Java Null详解)
- vue中的@click.native.prevent,点击事件加上native.prevent究竟有什么用呢?
- C# 实现解答数独功能
热门文章
- 【python】win10安装Tesserocr失败解决方法
- 前端面试知识点整理——网络
- 向何志强学习什么(母校学报)
- ModuleNotFoundError: No module named 'xxx'; 'xxx' is not a package
- 动物解剖vr模拟实训方案及优势
- 全站仪模拟仿真实训系统_城轨交通地高铁车站自动售检票(AFC)实训系统解决方案...
- 计算机缺失MSVCP120D.dll
- 【2019.09.30】“福大同好”——原型设计展示~(软工实践第四次作业)
- 交响乐团的组成及站位(附图)
- 现代教育技术计算机网络试题及答案,《现代教育技术》期末复习题及答案