<canvas id="clientCanvas" style="position: absolute; top: 0px; left: 0px;" width="1563" height="528">

function onMouseMove (e) {
    var canvas = document.getElementById('clientCanvas');
    var ctx = canvas.getContext("2d");
    var imageData = canvas.toDataURL("image/png");

    socket.emit('SS_onMouseMove', {imageData: imageData});
};

https://codereview.stackexchange.com/questions/116816/pass-canvas-content-from-client-to-admin-using-web-socket

docker pull ubuntu:20.04
docker run -it ubuntu:20.04 /bin/bash
apt update
apt -y install wget vim unzip cmake build-essential
apt -y install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
apt -y install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
apt -y install libgtk-3-dev libfreeimage3 libfreeimage-dev
apt -y install libpng-dev libjpeg-dev libopenexr-dev libtiff-dev libwebp-dev libdc1394-dev
apt -y install pkg-config libfreetype-dev libharfbuzz-dev

mkdir -p /home/hesy/opencv && cd /home/hesy/opencv
wget https://github.com/opencv/opencv/archive/refs/tags/4.9.0.tar.gz
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.9.0.zip
unzip opencv_contrib-4.9.0.zip
tar xvf opencv-4.9.0.tar.gz
cd opencv-4.9.0
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_IPP=OFF -D WITH_OPENGL=OFF -D WITH_QT=OFF -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=/home/hesy/opencv/opencv_contrib-4.9.0/modules -D BUILD_EXAMPLES=OFF -D WITH_JASPER=OFF -D BUILD_DOCS=OFF -D BUILD_TESTS=OFF -D BUILD_opencv_java=NO -D BUILD_opencv_python=NO -D BUILD_opencv_python2=NO -D BUILD_opencv_python3=NO -DWITH_FREETYPE=ON ..

make -j32
make install

tar czvf opencv-dev-4.9.0.tar.gz /usr/local/include usr/local/lib

【书单推荐】18本经典人物传记推荐
update:2024-5-6
1、《富兰克林自传》
《富兰克林自传》是一部影响了几代美国人、历经两百余年经久不衰的励志奇书,它包含了人生奋斗与成功的真知灼见,以及诸种善与美的道德真谛,被公认为是改变了无数人命运的美国精神读本。
推荐语:能透过时间留存的伟大总有可取可鉴之处,汲取一切可汲取的营养。

2、《史蒂夫·乔布斯传》

作家沃尔特在过去两年与乔布斯面对面交流40多次、对乔布斯100多位家庭成员、朋友、竞争对手和同事的采访的基础上撰写而成,详尽描写了乔布斯的成长经历,创业生涯和打造苹果公司及其产品的全过程。 推荐语:读完乔布斯传才明白人生不一定要伟大,但一定要精彩。这本书给了我坚持自己的信念。

3、《希特勒传 : 从乞丐到元首》

《希特勒传》语言生动、内容翔实。是迄今为止关于希特勒的军政生涯和个人生活面、最完整、最生动的记述。该书试图还原我们一个真实的历史:希特勒的出现并不是偶然的,而是德国被压抑和损害的民族利益情绪的极端爆发。 推荐语:平实的描述,让我看到了一个不一样的希特勒。一个激情的演说家和鼓动家。一面沉着冷静,一面疯狂热烈。

4、《拿破仑传》

本书以时间为线索,以史实为基础,描述了拿破仑叱咤风云的传奇一生中经历过的各次重大战役和心路成长的历程。作者通过翔实的史料,将拿破仑的伟大魅力和历史功过真实、生动地展现在读者面前。 推荐语:一个心灵受到了伤害,在呻吟,在泣血,主要不是由于它失去了自由,而是由于世界不识伟大。一本辉煌的传记文学,感谢作者与译者,拿破仑的一生是一部真正伟大和不朽的史诗,值得一读再读。

5、《苏东坡传》

苏东坡虽文章闻名天下,仕途却历尽艰辛,屡遭迫害,但终不改其乐观的天性;他一生融儒、释、道于一体,诗、文、词、书、画俱在才俊辈出的宋代登峰造极;学贯中西的林语堂先生用生花妙笔将一位文学家、政治家、书画家的一生娓娓道来,一个性格鲜明、多才多艺、形象饱满、可敬可爱的苏东坡也清晰地浮现在人们的眼前。 推荐语:纵观苏东坡的一生,传达给我的不仅是他冠绝文坛的才华,更有他不管自己境遇如何都心怀天下的心,最让人振奋的是他豁达的人生观,给我无尽的正能量。就像他自己说的那样:“若问平生功绩,黄州惠州儋州。”正是他一生的真实写照。

6、《渴望生活 : 梵高传》

该书是欧文·斯通仅二十六岁时的作品。欧文·斯通认为,最能打动读者的不是名人深厚的成就和辉煌,而是他们追求和探索的过程。七十余年来,梵高悲惨而成就辉煌的人生震撼了无数读者。 推荐语:看完传记才意识到他是我的精神知音。他教我如何真挚面对生活,这些痛苦也变得可以接受。他用自己的一生教我:你越想真正活出内心所想的东西,你就越不能听从别人的,你需要培养独立思考的能力和强大内心。是的,我也想像他一样。

7、《毛泽东传》

作者罗斯·特里尔采取了通常以叙述为主的传记笔法,在史料甄别、背景分析和观点评价等方面,都经过深思熟虑和精雕细琢,是西方数百种《毛泽东传》中的经典之作。 推荐语:比较客观的传记,从成长到心理分析,换一个角度了解这位深深影响了这个国度的人物。

8、《邓小平时代》

哈佛大学傅高义教授倾十年心力完成的巨著《邓小平时代》,是对邓小平跌宕起伏的一生以及中国惊险崎岖的改革开放之路的全景式描述。 推荐语:理解邓小平的时代,有助于透视当下中国发展过程中的各种问题框架,这是傅高义严谨而充满洞察力的著作所带来的视野,对保守与激进的高屋建瓴的分析评述,向复杂的历史投出了一把尖利的镖刀。

9、《人生不设限——我那好得不像话的生命体验》

力克·胡哲(Nick Vujicic),“没有四肢的生命”(Life Without Limbs)组织创办人、澳大利亚杰出青年,他于1982年12月4日出生于澳大利亚墨尔本,他天生没有双臂和双腿,只在左侧臀部以下的位置有一个带着两个脚趾头的他自称的“小鸡腿”。这样的他,成长过程必是十分艰难的。然而,他克服了常人难以想象的困难,不仅学会了生活自理,还学会了骑马、打鼓、游泳、踢足球、打高尔夫球和冲浪等体育项目。他中学时是学校的学生会主席,并顺利地获得了会计和财务规画本科双学位。他熟稔投资,大学毕业后拥有了自己的公司。 推荐语:《人生不设限》是力克·胡哲根据自己的亲身经历创作的励志书籍,是一部撼动数亿人心灵的勇气之书,让我们看到了作者如何面对人生的挑战,让我们知道了他的处事的智慧。

10、《十年一觉电影梦 : 李安传》

《十年一觉电影梦》以第一人称口述的方式,讲述李安电影生涯第一个十年的追梦历程。书中真实回顾了他的成长岁月、每部电影创作的用意、遭遇的困难、对演员的看法及相处、参加影展的经验、对东西方文化的思考、对人生的感悟等。 推荐语:这不止是一本关于电影的书。李安高度自省而宽怀他人的态度丝毫不搀做作,读完之后不仅深深爱上他,也自觉希望成为一个这样的、更好的人。

11、《忏悔录》

《忏悔录》记载了卢梭从出生到1766年被迫离开圣皮埃尔岛之间50多年的生活经历。他历数了孩提时寄人篱下所受到的粗暴待遇,描写了他进入社会后所受到的虐待以及他耳闻目睹的种种黑暗和不平,愤怒地揭露社会的“弱肉强食”、“强权即公理”以及统治阶级的丑恶腐朽。 推荐语:卢梭的伟大之处跟其他人不一样,从来没有人像他这样的坦白,把自己的内心完完整整的在读者面前剖开,包括丑陋的一面。

12、《人类群星闪耀时》

斯蒂芬·茨威格的传记名作之一。本书共收入他的历史特写14篇,分别向我们展现了14个决定世界历史的瞬间:千年帝国拜占庭的陷落、巴尔沃亚眺望水天一色的太平洋、亨德尔奇迹的精神复活、老年歌德热恋的悲歌、滑铁卢的一分钟, 英雄的瞬间, 南极探险的斗争,西塞罗,威尔逊的梦想与失败以及马赛曲神佑般的创作。 推荐语:他的文字真的具有这般的魔力,让你读来欲罢不能!一个个 历奇妙的瞬间,一个个历史的人物,在他的笔调之下都是一个个趣味十足耐人寻味的故事,你要做的就是仔细的去品味,去思考。
13、《维特根斯坦传 : 天才之为责任》

维特根斯坦,20世纪最重要的哲学家之一,语言哲学的奠基人。本书以时间为线索,运用大量生动、翔实的第一手资料描绘维特根斯坦独特的精神世界以及传奇的一生,堪称一流的思想传记。 推荐语:人生来肩负不同的责任,天才的责任犹为艰巨,了解下不寻常的人生,对自己也是激励。

14、《别闹了,费曼先生》

《别闹了,费曼先生》是物理学家、故事大王、艺术家、鼓手和密码破译专家R·P·费曼和R·莱顿联手写成的费曼先生自传。故事大多关注于费曼先生生前发生的大大小小的奇闻趣事,文风轻快幽默,引人发笑。 推荐语:很少看传记看得那么开心,费曼真的是一个很有趣的人,强烈推荐。从费曼的身上,我看到了一种截然不同的思考方式,比许多空洞无味的说教更有说服力。

15、《蛤蟆的油》

从孩提时代一个孱弱的“夜哭郎”,如何痴迷于绘画和电影,如何幸得启蒙而踏入电影界,最后如何执导《罗生门》等影片而成为的导演黑泽明坦然直面过往的一切,人生的甘苦,艺术的感悟,流露于字里行间。 推荐语:黑泽明是一个有着相当自知之明的人,朴实真挚,即使不使用电影作为媒介,而使用文字,也难以被我低估,所以我只得将这本书抬高了,仔细的读完,缅怀先生是不够的,需要“读”。

16、《美与暴烈:三岛由纪夫的生与死》

在这部三岛由纪夫传记中,斯托克斯用深入、动情的笔调,梳理了三岛充满矛盾的短暂人生中一个个重要的转折点和文学成就,也刻画出他那颗深受煎熬、躁动的心灵。作者是三岛的好友,也是见证三岛率领政治团体进行军事训练、并参加三岛死后对其追随者法庭审判的外国人。 推荐语:“美的毁灭,美过于美本身”,若一个极端迷恋死亡和暴力之美的人,要是甘于平静的自然死亡反倒让我不满。政治的空想和毁灭之美使他即使到最后自杀也要如此惊世骇俗,暴烈至极。

17、《贝多芬传》

贝多芬生在一个“破”与“立”相冲突的时代。他才华横溢,创作了一曲又一曲传世之作;他命运多舛,历经磨难,依然坚持着“一心向善,爱自由甚于爱一切;在任何情况下,绝不背叛真理”的初衷。在这部传记中,作者从不同的视角,不仅以优美的语言讲述了音乐大师贝多芬充满传奇色彩的人生,更将一个伟大心灵展现在读者面前。 推荐语:这部作品除了简述生平外,更希望告诉大家贝多芬的纯粹的执着,告诉人们创作的巨大能量来源于哪里。贝多芬充满着坚强的意志和力量,虽然经历着苦难的生活,却把欢乐的旋律洒向人间。

18、《梁启超传》

梁启超被誉为“中国精神之父”,是近代史上一位百科全书式的人物。其一生既是一部中国近代史,也堪称那个时代的完美载体。他是近代思想启蒙者、清华国学研究院四大导师之一,涉猎哲学、文学、史学、经学、法学、伦理学、宗教学……既是学贯中西方文化的大师,亦是百科全书式巨人!
Referenced from:https://www.zhihu.com/tardis/zm/art/144504232?source_id=1003

经过对比了visual c++ 与 mingw64,最后决定还是采用mingw64的方案来静态编译

使用mingw64的优势在于,生成的最终文件不需要依赖了,可以直接就用,同时,也方便跨平台的开发与支持.

编译过程,分为以下几步,安装编译工具mingw64,安装visual studio 社区版.

安装visual studio社区版:

在微软官方网址:https://visualstudio.microsoft.com/zh-hans/vs/community/ 下载对应的社区版本,在安装时,只勾选
"使用C++的桌面开发",就够用了.一直下一步,直到安装完成.

安装mingw64

安装包下载网址: https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/

32位版本的就下载: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/i686-8.1.0-release-posix-sjlj-rt_v6-rev0.7z

64位版本下载地址: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z

下载完成后,解压到c:mingw32或者c:mingw64即可.添加环境变量等操作,按相应的操作执行即可.

安装完成后,验证是否安装成功,在命令行下输入

i686-w64-mingw32-gcc -v

输出如下显示就没问题了.
Thread model: posix
gcc version 8.1.0 (i686-posix-sjlj-rev0, Built by MinGW-W64 project)

接下来就是安装vcpkg

vcpkg的官方网站在 https://github.com/microsoft/vcpkg

最好的方式是使用git 来拉取相应的代码

git clone https://github.com/microsoft/vcpkg.git

当然也可以直接下载压缩包:

https://github.com/microsoft/vcpkg/archive/refs/tags/2024.04.26.zip

二种方法都可以,看自己喜好.

下载完成后,解压进入vcpkg目录,执行
bootstrap-vcpkg.bat
完成vcpkg.exe等的下载.

接下来是安装编译ffmpeg的库,命令如下

vcpkg install ffmpeg[x264,x265,ffmpeg,ffplay,ffprobe,sdl2,openssl]:x86-mingw-static --recurse

以上命令是编译基于32位的静态库,x86代表32位,mingw表示是用mingw32/mingw64的编译器,static表示静态库.
最好是加上--recurse,缺少什么,会自己去下载安装.

如果一切顺利,就只需要静静的等结果.如果出现什么错误,再针对性的修改.再编译.

同样,如果需要编译64位的静态库的话,可以使用下述命令
vcpkg install ffmpeg[x264,x265,ffmpeg,ffplay,ffprobe,sdl2,openssl]:x64-mingw-static --recurse

如果需要使用vc的编译器来编译的话,可以使用下述命令

vcpkg install ffmpeg[x264,x265,ffmpeg,ffplay,ffprobe,sdl2,openssl]:x86-static --recurse
vcpkg install ffmpeg[x264,x265,ffmpeg,ffplay,ffprobe,sdl2,openssl]:x64-static --recurse

这是使用windows开发的方法,使用mingw64可以在Linux下交叉编译什么的.

经过一段时间的等待,编译安装结束后,将vcpkginstalledx86-mingw-static目录下面的lib和include目录复制到需要使用的项目中就可以了.

vcpkg查看已安装的包:
C:vcpkg>vcpkg list |findstr x86-mingw-static
bzip2:x86-mingw-static 1.0.8#5 bzip2 is a freely available, patent free, high-q...
bzip2[tool]:x86-mingw-static Builds bzip2 executable
curl:x86-mingw-static 8.7.1#2 A library for transferring data with URLs
curl[non-http]:x86-mingw-static Enables protocols beyond HTTP/HTTPS/HTTP2
curl[schannel]:x86-mingw-static SSL support (Secure Channel)
curl[ssl]:x86-mingw-static Default SSL backend
curl[sspi]:x86-mingw-static SSPI support
flatbuffers:x86-mingw-static 24.3.25 FlatBuffers is a cross platform serialization li...
giflib:x86-mingw-static 5.2.2 A library for reading and writing gif images.
hdf5:x86-mingw-static 1.14.2 HDF5 is a data model, library, and file format f...
hdf5[szip]:x86-mingw-static Build with szip
hdf5[zlib]:x86-mingw-static Build with zlib
leptonica:x86-mingw-static 1.84.1 An open source library containing software that ...
libiconv:x86-mingw-static 1.17#3 GNU Unicode text conversion
libjpeg-turbo:x86-mingw-static 3.0.2 libjpeg-turbo is a JPEG image codec that uses SI...
liblzma:x86-mingw-static 5.4.4 Compression library with an API similar to that ...
libpng:x86-mingw-static 1.6.43#1 libpng is a library implementing an interface fo...
libwebp:x86-mingw-static 1.4.0 WebP codec: library to encode and decode images ...
libwebp[libwebpmux]:x86-mingw-static Build the libwebpmux library
libwebp[nearlossless]:x86-mingw-static Enable near-lossless encoding
libwebp[simd]:x86-mingw-static Enable any SIMD optimization.
libwebp[unicode]:x86-mingw-static Build Unicode executables. (Adds definition UNIC...
libxml2:x86-mingw-static 2.11.7 Libxml2 is the XML C parser and toolkit develope...
libxml2[iconv]:x86-mingw-static Add ICONV support
libxml2[lzma]:x86-mingw-static Use LZMA
libxml2[zlib]:x86-mingw-static Use ZLib
openjpeg:x86-mingw-static 2.5.2 OpenJPEG is an open-source JPEG 2000 codec writt...
sdl2:x86-mingw-static 2.30.1 Simple DirectMedia Layer is a cross-platform dev...
szip:x86-mingw-static 2.1.1#12 Szip compression software, providing lossless co...
tiff:x86-mingw-static 4.6.0#4 A library that supports the manipulation of TIFF...
tiff[jpeg]:x86-mingw-static Support JPEG compression in TIFF image files
tiff[lzma]:x86-mingw-static Support LZMA compression in TIFF image files
tiff[zip]:x86-mingw-static Support ZIP/deflate compression in TIFF image files
x264:x86-mingw-static 0.164.3107 x264 is a free software library and application ...
x264[asm]:x86-mingw-static Enable platform-specific assembly optimizations
x264[default-features]:x86-mingw-static Default set of features
x264[gpl]:x86-mingw-static Allow use of GPL code, the resulting libs and bi...
x265:x86-mingw-static 3.5 x265 is a H.265 / HEVC video encoder application...
zlib:x86-mingw-static 1.3.1 A compression library

vcpkg查看ffmpeg 还支持编译哪些包

vcpkg search ffmpeg

要安装ffmpeg全量包的话,可以直接

vcpkg install ffmpeg[all]:x86-mingw-static

这样就不会有什么遗漏,但一般情况下,我们只编译安装需要用到的部分就可以了.

在Linux下测试验证编译好包的库和头文件是否正确.

将include 和 lib文件解压到当前installed 目录

来一个ffmpeg版本的Hello World

//file hello.cpp

include "bits/stdc++.h"

extern "C"
{

include "libavutil/log.h"

}
using namespace std;

int main(int argc, char *argv[])
{

av_log_set_level(AV_LOG_DEBUG);
av_log(NULL, AV_LOG_DEBUG, "%s", "Hello World !\n");

return 0;

}

编译命令:

i686-w64-mingw32-g++ -static -static-libgcc -static-libstdc++ hello.cpp -o hello.exe -I./installed/include -L./installed/lib -lavutil

查看生成的结果:

file hello.exe
hello.exe: PE32 executable (console) Intel 80386, for MS Windows

将文件复制到windows上运行,看看有没有依赖,确认是否静态编译成功.

ls -lh hello.exe
-rwxrwxrwx 1 hesy hesy 2.6M 5月 23 17:24 hello.exe

在windows下使用depends查看依赖,没有依赖ffmpeg相关的东西.

接下来,使用静态库编译成单个dll文件,就不会有其他的依赖.