# 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拉流播放器 **个人学习项目欢迎提意见**