2 Star 3 Fork 1

guee / GueeRecorder

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
Clone or Download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

本程序还在持续开发中,提供UOS和Fedora的安装包。分为Loongson版和AMD64版,放在了我的个人网站上。

点击打开下载页面(含使用说明)

开发日记

本项目同时存放在gitee和github上。

GueeRecorder (Guee 录屏机) 前言

  这是一个为了学习Linux下的应用程序开发,而编写的一个实验性的对屏幕和摄像头录像,然后保存为视频文件或直播到网络的软件。

  这是我第一次在Linux上开发的软件,在此之前我从未实践过Linux下的软件开发,甚至于在购买基于国产CPU龙芯3A4000的电脑之前,我对Linux系统的累计的使用时间大概也只有几天。

  2020春节期间,在快递把龙芯3A4000送到之后,尝试编译了一款名为“SimpleScreenRecorder”的软件,但它的功能太简单,并且由于源码中对x86有大量SIMD汇编优化,但龙芯却只能使用兼容的C++代码,在龙芯CPU上的性能表现也就有些不堪。我数年前开发过Windows平台下的录屏软件,不过那是公司的产品,各种功能实现与Windows及x86也关联得较深,无法直接移植,于是我就萌生了在直接龙芯平台上重新开发一款录屏软件的想法。只是我也知道最大的性能瓶颈是视频编码库没有优化,可我能力有限,能够控制的只是把图像送入视频编码库之前的代码。但我还是想要尝试一下,性能优化有困难,但是在功能方面做得比它完善一些,应该不难。虽然我知道同类软件中有个大名鼎鼎的OBS,我预计要完成的功能只是OBS的子集,但作为第一次在Linux上开发的程序,只要能把预计的功能完成,并且在龙芯平台上的运行效率能稍高于SimpleScreenRecorder,那就是胜利。

  然后一边学一边做大约花了半个月时间写了一些基础的代码,只是由于众所周知的原因,不久后孩子开始上网课,公司也要求远程工作,于是每天疲于奔命,就中断了开发。后来虽然稍有了一些空闲时间,但每天琐事仍然很多,自造轮子这种不太紧要的事情也就一直没有重新拾起。在连续的繁忙之后,每天颓废得连上网水帖看新闻都没有精力,开发中断之后,龙芯的电脑我都有半年没有开过机。

  本来很怀疑这个软件又会像我以往的众多半成品一样,一旦开发过程被打断,就会永远躺在硬盘里成为一个归档文件。但这毕竟是我第一次在龙芯电脑上开发软件,还是不愿就这么半途而废。即使只是为了熟悉Linux下应用软件开发,我也应该把它完成。近期工作生活都逐渐像疫情前那样按步就班有了条理,因此我决定继续开发这个软件。由于这个软件总体上算是学习过程中的实验品,无论功能、界面还是代码等都感觉有点凌乱,因此打算在把它完成之后,再重写所有的代码,继续提高软件的性能和完善软件功能,还需重新设计软件界面。大概,未来计划中的2.0版才会是令我自己基本满意的作品。

功能说明

  可以把屏幕、摄像头,图片等各种画面作为图层,合成在一起之后再编码为视频文件。软件有一个预览区域,在预览区域可以对各个图层平移和缩放。当选中某个图像时,会在预览区域中显示图层列表,可以通过功能按钮调整图层顺序及其它参数。可设置视频编码的参数,视频可保存为mp4或flv文件。同时具有较为灵活的录音功能,可以分别录制电脑播放的声音和麦克风输入,也可以随时对录音进行开关。

屏幕录像:

  录制全屏,支持单屏和多屏幕;

  录制窗口,支持选择整个窗口或窗口客户区(不含窗口标题栏和边框);

  录制区域,选择区域和选择窗口的操作与QQ截图类似。

  可以任意添加屏幕多个区域,并可以随时添加和删除。

摄像头:

  支持添加USB摄像头,可选择分辨率和帧率。

  每个摄像头只允许添加一次,但可以添加多个摄像头。

图片文件:

  支持向画面中添加多个 bmp、png、jpg 等常见格式的文件。

文字/涂鸦:

  计划中,尚未开发。

视频编码:

  当前仅支持x264软件编码器。

  可自由设置为各种分辨率,不受截屏大小和摄像头分辨率等限制。

  可设置视频帧率,截屏或摄像头性能较低时进行视频编码。

  可设置视频编码的各种常规参数:码率(含码率控制方式)、预设质量等级、关键帧间隔等。

  可保存为 mp4 或 flv 格式的文件。

视频直播:

  计划中,尚未开发。可以向支持rtmp推流的直播站点进行直播。

声音录制:

  可以同时录制电脑播放的声音和麦克风声音,也可以只录制其中之一,在录像过程中可以随时打开和关闭录音。

开发环境

硬件环境:

  CPU:龙芯 Loongson 3A4000@1.8GHz

  内存:紫光 DDR4 2666 8G

  显卡:AMD R5 230

  硬盘:WD SN750 1T Nvme

软件环境:

  OS:统信 UOS 专业版、龙梦 Fedora28

  开发工具:Qt 5.x

开发环境配置:

  因为我对Linux还不熟悉,特别是被VisualStudio养成了懒人,对GCC这类编译器以及编译各种开源库都缺少经验,于是只要是软件源中存在的库,我就直接安装使用。即使库的版本老一点,即使编译参数不是最优……只要能凑合用就行。

  统信 UOS 专业版:

    sudo apt-get install g++

  sudo apt-get install gdb

    sudo apt-get install libgl1-mesa-dev

    sudo apt-get install libqt5x11extras5-dev

    sudo apt-get install libxinerama-dev

    sudo apt-get install libxfixes-dev

    sudo apt-get install libxcomposite-dev

    sudo apt-get install qt5-default

    sudo apt-get install qt5creator

  龙梦 Fedora28:

    sudo yum inatall gcc-c++

    sudo yum inatall gdb

    sudo yum install mesa-libGL-devel

    sudo yum install mesa-libGLU-devel

    sudo yum install qt5-qtx11extras-devel

    sudo dnf install libXinerama-devel

    sudo dnf install libXcomposite-devel

    sudo dnf install libXfixes-devel

    sudo dnf inatall qt5-devel

    sudo dnf inatall qt-creator

Repository Comments ( 1 )

Sign in to post a comment

About

一个在龙芯3A4000上开发的Linux录屏软件,可以添加屏幕、屏幕区域、窗口、摄像头、图像文件等作为图层,使用OpenGL进行图像计算,然后编码为视频。尽管程序中没有任何的汇编代码,但在龙芯3A4000上仍然具有超过同类软件的性能表现。其在x86CPU上与同类软件的性能表现差不多,这说明其它软件在龙芯上性能表现不佳的原因,是因为它们对龙芯仅仅是兼容。 expand collapse
C++ and 5 more languages
GPL-3.0
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
C++
1
https://gitee.com/guee/GueeRecorder.git
git@gitee.com:guee/GueeRecorder.git
guee
GueeRecorder
GueeRecorder
master

Search

103111 552b83b3 1850385 103110 ed87a847 1850385