TightVNC 远控协助
以实战为线索,逐步深入了解VNC开发各个环节。
老狼主
工作中展现自我,学习中完善自我,生活中乐活自我!
展开
-
TightVNC H264编解码(一)
经过尽二个月的不断摸索,TightVNC终于支持H264编解码了,前期真正编写H264编解码器只花了一周左右时间,但是测试发现效果并不是太理想(帧率太低,延迟大),这大概是所有远程控制软件要处理的通病吧。作为一位经验丰富的程序员,造成这种问题的原因,有以下几点:1、抓屏?2、H264编码?3、TCP网络发送?4、H264解码?5、视频渲染?为了排除到底哪个环节出了问题,看来不摸透底层事务流程是行不通的,不得已摸透代码画出了下面这个简陋的流程图。Server端事务处理流程图.原创 2021-12-31 21:25:36 · 1660 阅读 · 6 评论 -
TightVNC H264编解码(三)之去图像抖动
本以为服务器端改造完硬编码,客户端升级完解码功能之后,一切也就该收尾了,可没成想如鱼哽喉卡住了,客户端播放视频画面,当服务器端窗口有快速移动的时候,客户端显示窗口边缘会产生抖动(不够顺滑流畅),分析其原因:1、服务器端视频编码问题2、客户端视频解码问题3、网络数据丢包问题4、客户端渲染问题5、其它问题只能逐一排查了。在此之前,我完成了二件事,其一是编写了一个流媒体服务器,其二采用SDL库编写了一个实时视频流播放器,均是为后面的排查工作做铺垫。问题1、服务器视频编码问题将硬原创 2022-03-04 16:31:20 · 1293 阅读 · 5 评论 -
TightVNC H264编解码(二)之硬编码库的编译
AVCodec * codec = avcodec_find_encoder_by_name("nvenc_h264");如果是默认的ffmpeg库,返回结果是NULL,看来是不带有硬编码功能的,重新编译分支ffnvcodec,不到半个小时编译完成,返回值终于ok了(^-^),继续编写代码:AVCodecContext *avctx = avcodec_alloc_context3(codec);int ret = avcodec_open2(avctx, codec, 0);返回值-40.原创 2022-01-08 20:54:24 · 2186 阅读 · 0 评论