windows10|音视频剪辑|FFMPEG录屏和网络推流源初步的生成

前言:

FFMPEG的功能强大是毋庸置疑的,那么录屏的需求大家在某些时候大家可能是非常需要的,例如,现有的项目需要演示,因此录制一段演示视频;亦或者做内容分发直播的,比如游戏主播,需要录制在玩某个游戏的精彩片段,以创建一个后期的视频素材库;亦或者通过FFMPEG抓取摄像头的实时画面,满足某些人的疯狂的偷窥欲(友情提醒:大家还是需要做一个守法公民,不要看了我的文章然后去做坏事!!!!!);亦或者遇到了某些非常好听或者好看的视频,但无法保存,此时就需要录屏功能来弥补这些遗憾了;亦或者在服务器运维的时候,需要做运维审计工作等等录屏需求

而在FFMPEG面前,这些功能的实现通常都是一条简简单单的命令就可以完成了

Windows下ffmpeg录屏的主要方式是dshow(directshow)、vfwcap、gdigrab,其中dshow可以用来抓取摄像头、采集卡、麦克风等,vfwcap主要用来采集摄像头类设备,gdigrab则是抓取Windows窗口的程序。

下面将就如何录屏,如何确保录屏的质量以及网络推流的一些基本概念做一个简单的介绍

一,

电脑录屏和网络推流的概念

电脑录屏指的是在一定的时间内,录制电脑上的所有活动,比如,打开网页,播放视频,播放音乐等等动作,统统都记录,最后将这些实时产生的音视频数据流写入指定的文件,这些都是本地的活动,通常电脑端的录屏活动生成的本地文件是作为视频素材库使用的,也就是说后期还需要通过音视频剪辑工具按需裁剪,最后按需求分发到网络或者保留在本地自己欣赏

网络推流指的是通过特定软件比如利用摄像头实时捕捉音视频数据流,将这些数据主动推送到远程的指定的网络端,一般情况下,直播,实时摄像头这些最终都是网络推流,本地是不保存音视频数据的(后台本地有时候可能会保存,毕竟直播什么的有时候还需要一些审计,或者比如交通摄像头,事故发生的时候可能需要视频回溯)

网络推流和拉流需要一些相应的网络协议支持,比如rmtp协议,这里就不展开说了

二,

基本的录屏

这里说的基本录屏是指的Windows10,win7,或者win11 ,无需其它驱动,基于Windows操作系统的gdigrab直接录屏,但录制的只有视频,没有音频

无疑的,这样的方式是比较简单的,但缺点也是比较大的:没有声音,只能录制Windows内的整个桌面

命令如下:

fmpeg -f gdigrab -i desktop -f mp4 d:/out.mp4 -y

注意,这个命令生成的out.mp4文件可能Windows media可能打不开,需要使用vlc播放器播放

输出支持的格式也可以是wma,flv   按q退出录屏

一般不需要特别设置,比如视频的比特率什么的,直接默认就可以了,在现在的硬件条件下,清晰度基本可以满足,录屏主要是CPU运算

注意:经过实践,在本次实验中,mp4格式的视频清晰度最高,效果最好

ffmpeg -f gdigrab -i desktop  d:/out.flv -y
ffmpeg -f gdigrab -i desktop  d:/out.wma -y

🆗,这个基本录屏只能录制视频,有点不太能满足需求,比如翻录某些视频的情况下,下面就来一个进阶录屏:可以同时录制高清视频和高清音频

三,

高清音视频录制

此种方式需要安装虚拟屏幕驱动并启用声卡录音功能,主要是基于dshow驱动来进行的

常用的驱动如UScreenCapture,screen-capture-recorder

本例中使用screen-capture-recorder,该驱动程序下载地址:http://sourceforge.net/projects/screencapturer/files/

###注意,该驱动更新频率比较低,直接选择最新版本就可以了,本例使用的是Setup Screen Capturer Recorder v0.12.11

此程序默认安装就可以了,安装完毕后,会有一个新的FFMPEG,这个FFMPEG版本是比较低的,但后面的录屏还只能用这个低版本的FFMPEG,高版本的FFMPEG好像用不了:

查询dshow驱动执行情况: 

ffmpeg -list_devices true -f dshow -i dummy

旧新版本的FFMPEG查询现在支持的录屏驱动,新的FFMPEG可能是不支持的,现在暂时还没有办法(第一个命令是旧版FFMPEG,第二个命令是新版FFMPEG):

C:\Users\Administrator>"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -list_devices true -f dshow -i dummy
ffmpeg version N-44080-gdfb4757 Copyright (c) 2000-2012 the FFmpeg developersbuilt on Aug 31 2012 16:58:51 with gcc 4.7.1 (GCC)configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zliblibavutil      51. 70.100 / 51. 70.100libavcodec     54. 55.100 / 54. 55.100libavformat    54. 25.104 / 54. 25.104libavdevice    54.  2.100 / 54.  2.100libavfilter     3. 15.101 /  3. 15.101libswscale      2.  1.101 /  2.  1.101libswresample   0. 15.100 /  0. 15.100libpostproc    52.  0.100 / 52.  0.100
[dshow @ 0292bc80] DirectShow video devices
[dshow @ 0292bc80]  "screen-capture-recorder"
[dshow @ 0292bc80] DirectShow audio devices
[dshow @ 0292bc80]  "楹﹀厠椋?(Realtek(R) Audio)"
[dshow @ 0292bc80]  "virtual-audio-capturer"
[dshow @ 0292bc80]  "绔嬩綋澹版贩闊?(Realtek(R) Audio)"
dummy: Immediate exit requestedC:\Users\Administrator>ffmpeg -list_devices true -f dshow -i dummy
ffmpeg version 6.1.1-full_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 --pkg-config=pkgconf --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-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --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-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --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      58. 29.100 / 58. 29.100libavcodec     60. 31.102 / 60. 31.102libavformat    60. 16.100 / 60. 16.100libavdevice    60.  3.100 / 60.  3.100libavfilter     9. 12.100 /  9. 12.100libswscale      7.  5.100 /  7.  5.100libswresample   4. 12.100 /  4. 12.100libpostproc    57.  3.100 / 57.  3.100
[dshow @ 000001d0b92ba200] "UScreenCapture" (video)
[dshow @ 000001d0b92ba200]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\UScreenCapture"
[dshow @ 000001d0b92ba200] "screen-capture-recorder" (video)
[dshow @ 000001d0b92ba200]   Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2C8A-4AE6-A561-56E4B5044439}"
[dshow @ 000001d0b92ba200] "麦克风 (Realtek(R) Audio)" (audio)
[dshow @ 000001d0b92ba200]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{9A0CE0E2-9E7D-4F81-857D-CF4BA1D888E3}"
[dshow @ 000001d0b92ba200] "virtual-audio-capturer" (audio)
[dshow @ 000001d0b92ba200]   Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-DB61-4309-AFA1-3578E927E935}"
[dshow @ 000001d0b92ba200] "立体声混音 (Realtek(R) Audio)" (audio)
[dshow @ 000001d0b92ba200]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{E3B2D1FC-6202-4AFE-AC1C-2BD8DD95EB72}"
[in#0 @ 000001d0b92ba080] Error opening input: Immediate exit requested
Error opening input file dummy.

Setup Screen Capturer Recorder v0.12.11安装完毕后,不需要重启服务器,立刻就生效了

这个时候还需要安装Java环境,jdk下载地址:https://www.java.com/en/download/  ,如何安装jdk就不用说了,有手就可以安装了,没办法jdk是Setup Screen Capturer Recorder v0.12.11的强依赖

还需要打开Windows的录制功能:

🆗,现在可以开始录制带音频的录屏文件了:

"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq  -ar 22050 d:\out1.flv -y
"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq  -ar 22050 d:\out1.wma -y

指定输出格式为mp4的时候报错了,报错如下:

看样子mp4编码转码的时候失败了,也就是说该驱动不支持mp4,或者和操作系统有关吧???

C:\Users\Administrator>"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq  -ar 22050 -f mp4 d:\out1.mp4 -y
ffmpeg version N-44080-gdfb4757 Copyright (c) 2000-2012 the FFmpeg developersbuilt on Aug 31 2012 16:58:51 with gcc 4.7.1 (GCC)configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zliblibavutil      51. 70.100 / 51. 70.100libavcodec     54. 55.100 / 54. 55.100libavformat    54. 25.104 / 54. 25.104libavdevice    54.  2.100 / 54.  2.100libavfilter     3. 15.101 /  3. 15.101libswscale      2.  1.101 /  2.  1.101libswresample   0. 15.100 /  0. 15.100libpostproc    52.  0.100 / 52.  0.100
leaving aero on[dshow @ 029cbe40] Estimating duration from bitrate, this may be inaccurate
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, dshow, from 'video=screen-capture-recorder:audio=virtual-audio-capturer':Duration: N/A, start: 30738.314000, bitrate: 1536 kb/sStream #0:0: Video: rawvideo, bgra, 2560x1440, 30 tbr, 10000k tbn, 30 tbcStream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
[libx264 @ 04065b40] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX AVX2 FMA3 BMI1 BMI2
[libx264 @ 04065b40] profile High, level 5.0
[libx264 @ 04065b40] 264 - core 125 r2208 d9d2288 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=24 lookahead_threads=4 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'd:\out1.mp4':Metadata:encoder         : Lavf54.25.104Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 2560x1440, q=-1--1, 10000k tbn, 30 tbcStream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, stereo, s16, 128 kb/s
Stream mapping:Stream #0:0 -> #0:0 (rawvideo -> libx264)Stream #0:1 -> #0:1 (pcm_s16le -> libvo_aacenc)
Press [q] to stop, [?] for help
x264 [error]: malloc of size 15786496 failedime=00:00:27.74 bitrate= 109.3kbits/s dup=3 drop=0
Video encoding failed
Received stop event after 2795 passes

换成flv格式的输出文件,第二次在执行录屏的时候报错了:

[dshow @ 02a2be40] real-time buffer 100% full! frame dropped!

这个报错说的是buffer溢出了,根本原因是输出的文件里有内容了,录制的视频不知道如何把数据流写到文件的哪个位置了,很简单,换一个输出文件名或者把原来的输出文件删除就可以继续录制了

C:\Users\Administrator>"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq  -ar 22050 -vol 200 d:\out1.flv -y
ffmpeg version N-44080-gdfb4757 Copyright (c) 2000-2012 the FFmpeg developersbuilt on Aug 31 2012 16:58:51 with gcc 4.7.1 (GCC)configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zliblibavutil      51. 70.100 / 51. 70.100libavcodec     54. 55.100 / 54. 55.100libavformat    54. 25.104 / 54. 25.104libavdevice    54.  2.100 / 54.  2.100libavfilter     3. 15.101 /  3. 15.101libswscale      2.  1.101 /  2.  1.101libswresample   0. 15.100 /  0. 15.100libpostproc    52.  0.100 / 52.  0.100
leaving aero on[dshow @ 02a2be40] Estimating duration from bitrate, this may be inaccurate
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, dshow, from 'video=screen-capture-recorder:audio=virtual-audio-capturer':Duration: N/A, start: 31001.957000, bitrate: 1536 kb/sStream #0:0: Video: rawvideo, bgra, 2560x1440, 30 tbr, 10000k tbn, 30 tbcStream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
File 'd:\out1.flv' already exists. Overwrite ? [y/N] real-time buffer 63% full! frame dropped!
[dshow @ 02a2be40] real-time buffer 66% full! frame dropped!
[dshow @ 02a2be40] real-time buffer 68% full! frame dropped!
[dshow @ 02a2be40] real-time buffer 71% full! frame dropped!
[dshow @ 02a2be40] real-time buffer 73% full! frame dropped!
[dshow @ 02a2be40] real-time buffer 76% full! frame dropped!Last message repeated 1 times
[dshow @ 02a2be40] real-time buffer 78% full! frame dropped!Last message repeated 1 times
[dshow @ 02a2be40] real-time buffer 80% full! frame dropped!Last message repeated 19 times
[dshow @ 02a2be40] real-time buffer 83% full! frame dropped!Last message repeated 1 times
[dshow @ 02a2be40] real-time buffer 85% full! frame dropped!Last message repeated 1 times
[dshow @ 02a2be40] real-time buffer 88% full! frame dropped!Last message repeated 2 times
[dshow @ 02a2be40] real-time buffer 90% full! frame dropped!Last message repeated 2 times
[dshow @ 02a2be40] real-time buffer 93% full! frame dropped!Last message repeated 2 times
[dshow @ 02a2be40] real-time buffer 95% full! frame dropped!Last message repeated 32 times
[dshow @ 02a2be40] real-time buffer 98% full! frame dropped!Last message repeated 2 times
[dshow @ 02a2be40] real-time buffer 100% full! frame dropped!

录制好的视频播放后,可以看到确实录制到声音了,我的QQ音乐播放的歌曲完全录制进视频内了,开心…………^……^

那么,到这里就很清楚了,如果只需要录制视频,那就把audio="virtual-audio-capturer"这一段删除,反之亦然!!!!!

上面的录屏参数说明:

  • -f dshow 指定输入的数据流使用dshow驱动
  • -rtbufsize 1202000k 录制时的最大缓存使用量
  • -i video="screen-capture-recorder":audio="virtual-audio-capturer" 从哪抓取数据流,这里指定了具体执行动作的驱动
  • -sameq  -ar 22050  如果是flv输出的话,不使用此参数会报错[flv @ 0295caa0] flv does not support that sample rate, choose from (44100, 22050, 11025),因此,我选择了22050,这三个数【44100, 22050, 11025】里面选择一个就可以了
  •  -vol 200 这里是调节声音大小,如果电脑内的声音本身比较小,放大两倍
  • -s 1940*1440  这里是设置录屏的大小,以及-v 15(帧率)等等,等同于-video_size 1280x720注意注意,这些录屏属性设置需要放在命令的后面,最好是在输出文件之前  例如这样:
  • "C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq  -ar 22050 -vol 200 -s 1920*1440  d:\out1.flv -y

  • -preset ultrafast  视频非常清晰,但文件会很大(这个效果真的非常nice,但我录制了20分钟的游戏视频竟然有7.5G大小)

  • 但这样的参数位置将会报错,需要特别注意哦:

C:\Users\Administrator>"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -ar 22050 -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq   -vol 200 -s 1920*1440  d:\out1.flv -y
ffmpeg version N-44080-gdfb4757 Copyright (c) 2000-2012 the FFmpeg developersbuilt on Aug 31 2012 16:58:51 with gcc 4.7.1 (GCC)configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zliblibavutil      51. 70.100 / 51. 70.100libavcodec     54. 55.100 / 54. 55.100libavformat    54. 25.104 / 54. 25.104libavdevice    54.  2.100 / 54.  2.100libavfilter     3. 15.101 /  3. 15.101libswscale      2.  1.101 /  2.  1.101libswresample   0. 15.100 /  0. 15.100libpostproc    52.  0.100 / 52.  0.100
leaving aero on[dshow @ 0286bf20] Could not set audio options
video=screen-capture-recorder:audio=virtual-audio-capturer: Input/output error

再次强调,参数位置问题,音视频属性参数一定要在-i 的后面,下面是一个完整的例子

"C:\Program Files (x86)\Screen Capturer Recorder\configuration_setup_utility\vendor\ffmpeg\bin\ffmpeg.exe" -f dshow -rtbufsize 1202000k    -i video="screen-capture-recorder":audio="virtual-audio-capturer" -sameq     -ar 22050 -vol 200 -preset ultrafast -s 1980*1440 d:\out1.flv  -y

顺便说一句,音视频剪辑对于硬件也就是cpu和内存的性能要求比较高,至少i7 13代+32G内存吧

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

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

相关文章

MySQL 学习记录 1

原文:https://blog.iyatt.com/?p12631 1 前言 去年年初报考 3 月的计算机二级(C 语言)【https://blog.iyatt.com/?p9266 】考过了,这次打算报考 3 月的计算机三级(数据库)。数据库这一块,很…

Kubernetes(K8s)的基础概念

K8s的概念 K8S 的全称为 Kubernetes (K12345678S) (简化全称) Kubernetes 是一个可移植、可扩展的开源平台,用于 管理容器化工作负载和服务,有助于声明式配置和自动化。它拥有庞大且快速发展的生态系统。Kubernetes 服务、支持和…

SQL防止注入工具类,可能用于SQL注入的字符有哪些

SQL注入是一种攻击技术,攻击者试图通过在输入中注入恶意的SQL代码来干扰应用程序的数据库查询。为了防止SQL注入,你需要了解可能用于注入的一些常见字符和技术。以下是一些常见的SQL注入字符和技术: 单引号 ​: 攻击者可能会尝试…

【前端工程化面试题】webpack proxy的工作原理,为什么能解决跨域问题

在 webpack 的配置文件 webpack.config.js 中有一个配置项 devServer 里面有一个属性是 proxy,这里面可以配置代理服务器,解决跨域问题,请参考官网。 一般来说 webpack 的代理就是说的开发服务器 webpack-dev-server。 其实不光是 webpack 其…

线阵相机之帧超时

1 帧超时的效果 在帧超时时间内相机若未采集完一张图像所需的行数,则相机会直接完成这张图像的采集,并自动将缺失行数补黑出图,机制有以下几种选择: 1. 丢弃整张补黑的图像 2. 保留补黑部分出图 3.丢弃补黑部分出图

爬虫知识--02

免费代理池搭建 # 代理有免费和收费代理 # 代理有http代理和https代理 # 匿名度: 高匿:隐藏访问者ip 透明:服务端能拿到访问者ip 作为后端,如何拿到使用代理人的ip 请求头中:x-forwor…

⭐北邮复试刷题106. 从中序与后序遍历序列构造二叉树__递归分治 (力扣每日一题)

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7], postor…

人工智能深度学习

目录 人工智能 深度学习 机器学习 神经网络 机器学习的范围 模式识别 数据挖掘 统计学习 计算机视觉 语音识别 自然语言处理 机器学习的方法 回归算法 神经网络 SVM(支持向量机) 聚类算法 降维算法 推荐算法 其他 机器学习的分类 机器…

基于vue的个性化推荐餐饮系统Springboot

项目:基于vue的个性化推荐餐饮系统Springboot 摘要 现代信息化社会下的数据管理对活动的重要性越来越为明显,人们出门可以通过网络进行交流、信息咨询、查询等操作。网络化生活对人们通过网上购物也有了非常大的考验,通过网上进行点餐的人也…

C# Winfrom实现的肺炎全国疫情实时信息图

运行结果: using System; using System.Drawing; using System.Text; using NSoup; using NSoup.Nodes; using System.IO; using System.Net; using System.Text.RegularExpressions; using System.Windows.Forms;namespace Pneumonia {public partial class MainFo…

C#开发AGV地图编辑软件

C#自己开发AGV地图编辑软件: 1、自由添加和删除站点、停车位、小车、运行路径。 2、编辑得地图以XML文件保存。 3、导入编辑好地图的XML文件。 4、程序都是源码,可以直接在此基础上进行二次开发。 下载链接:https://download.csdn.net/d…

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture04反向传播

lecture04反向传播 课程网址 Pytorch深度学习实践 部分课件内容: import torchx_data [1.0,2.0,3.0] y_data [2.0,4.0,6.0] w torch.tensor([1.0]) w.requires_grad Truedef forward(x):return x*wdef loss(x,y):y_pred forward(x)return (y_pred-y)**2…

19个Web前端交互式3D JavaScript框架和库

JavaScript (JS) 是一种轻量级的解释(或即时编译)编程语言,是世界上最流行的编程语言。JavaScript 是一种基于原型的多范式、单线程的动态语言,支持面向对象、命令式和声明式(例如函数式编程&am…

Spring最新核心高频面试题(持续更新)

1 什么是Spring框架 Spring框架是一个开源的Java应用程序开发框架,它提供了很多工具和功能,可以帮助开发者更快地构建企业级应用程序。通过使用Spring框架,开发者可以更加轻松地开发Java应用程序,并且可以更加灵活地组织和管理应…

OpenAI全新发布文生视频模型:Sora!

OpenAI官网原文链接:https://openai.com/research/video-generation-models-as-world-simulators#fn-20 我们探索视频数据生成模型的大规模训练。具体来说,我们在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。我们利用对视频和…

【Vuforia+Unity】AR03-圆柱体物体识别

1.创建数据库模型 这个是让我们把生活中类似圆柱体和圆锥体的物体进行AR识别所选择的模型 Bottom Diameter:底部直径 Top Diameter:顶部直径 Side Length:圆柱侧面长度 请注意,您不必上传所有三个部分的图片,但您需要先为侧面曲面关联一个图像&#…

HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化

Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化 概述 ObjectLink和Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步: 被Observed装饰的类,可以被观察到属性的变化;子组件中ObjectLink装饰器装饰的状…

动态内存管理(下)

动态内存管理(上)-CSDN博客(malloc, realloc, calloc, free函数的用法以及注意事项等知识点) 动态内存管理(中)-CSDN博客(常见的内存出错问题) -----------…

Java 学习和实践笔记(15):面向过程和面象对象其实很简单!

学完这一节,才真正明白了什么叫面向对象和面向过程,其实很简单~ 第一个例子:怎样把大象装进冰箱 这个很清楚很容易地可以列出第一步。 第二个例子:怎样制造一台汽车 这个就很难确定哪一步做第一步。 面向过程和面向对象的区别 …

快速学习springsecurity最新版 (版本6.2)---用户认证

简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。目前比较主流的是另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富,但是shiro并不简便,这里轻量级安全框架更推荐国产安全框架satokensatoken官网 ​ 一般大型的项目都…