# ScreenRecord
**Repository Path**: midsummer-s/screen-record
## Basic Information
- **Project Name**: ScreenRecord
- **Description**: ffmpeg个人项目
- **Primary Language**: C++
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-08-10
- **Last Updated**: 2026-04-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ScreenRecord
## 介绍
本项目使用ffmpeg6.0建立的采集windows系统桌面,使用screen-capture-recorder虚拟设备采集系统音频,目前支持推流rtmp(rtmp服务器可使用srs搭建本地服务器)和存储本地mp4文件功能
screen-capture-recorder 说明:
下载安装后即可采集系统音频,否则音频设备打开失败仅可采集图像无音频
虚拟设备下载地址:https://github.com/rdp/screen-capture-recorder-to-video-windows-free/releases
2.0 增加gdi桌面采集,wasapi音频采集系统音频数据
## 使用说明
需要 CMake 版本等于或高于 3.17。我们需要让 CMake 生成的文件与项目文件在不同的目录中,因此,建立一个 `build` 目录并在其中运行 CMake,并输出工程至此目录,命令行编译cmake输出vs工程参考如下
```sh
mkdir build
cd build
cmake .. -A x64 -G "Visual Studio 17 2022"
```
作者使用vs2022研发此项目,故推荐使用vs2022研发
**特别提醒:本项目ffmpeg库目前仅支持windows x64平台运行**
## Example
使用cmake生成工程后编译可得到dll,可使用"include/control.h"配合dll输出的lib加载dll。
lib默认在构建目录内的lib文件夹内,例:
```
/build/lib/screen-record.lib
```
引入头文件和lib之后可使用CreateControl创建一个输出对象,创建后初始化参数需要传入mp4保存路径或者rtmp推流url
``` cpp
Control* ctrl = CreateControl();
if(ctrl != nullptr){
ctrl->init("output.mp4");
}
```
库中仅仅简单的匹配了rtmp的路径来区分rtmp输出还是mp4输出
``` cpp
if (strncmp(output_path, "rtmp://", strlen("rtmp://")) == 0){
_output = CreateOutput(OutputType_RTMP);
}
else{
_output = CreateOutput(OutputType_Mp4);
}
```
初始化完成后调用Start接口启动录制保存/推送,可调用Stop结束录制
```cpp
ctrl->Start();
ctrl->Stop();
```
## TODO
1. rtmp服务器
2. rtmp拉流播放器
**个人学习项目欢迎提意见**