使用 ffmpeg 命令录制音视频数据
###获取音频设备
ffmpeg -list_devices true -f dshow -i dummy
可以获取 系统中 ffmpeg 可用的 DirectShow 音视频输入设备 ; -list_devices true : 列出所有 ffmpeg 的 指定类型的可用设备 ; -f dshow : 设置 输入设备 类型为 dshow , 这是 DirectShow 的简称 , DirectShow 是 Windows 的 音视频设备管理 框架 ; -i dummy : -i 表示 ffmpeg 输入文件或设备 , dummy 指的是虚拟的输入设备 , 该参数的作用是 指定 ffmpeg 可用的 dshow 虚拟输入设备。
###录制视频数据命令
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -c:v libx264 -preset ultrafast output.mp4
-f gdigrab : 设置 录制视频 的 输入格式为 gdigrab , Windows 上使用该方式捕获视频 , Linux 中设置的是 -f x11grab 参数 ; -framerate 30 : 设置 录制屏幕 的 帧率 为 30 FPS ; -offset_x 0 -offset_y 0 : 设置 录制区域的偏移量 , 也就是 视频的左上角 所在的 屏幕中的位置 , 这里设置为屏幕的左上角 , 配合下面的 1920x1080 也就是全屏录制 ; -video_size 1920x1080 : 设置 录制视频尺寸为 1920x1080 , 这也是屏幕的分辨率 ; -i desktop : 设置录制视频的 输入设备或文件 为系统桌面 ; -c:v libx264 : 设置 视频编码器 为 libx264 ; -preset ultrafast : 设置编码速度为 ultrafast ;
###bat文件
@echo off
setlocal
rem 获取当前日期和时间,并将其格式化为文件名
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "filename=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%"
rem 使用 ffmpeg 进行录屏和录音
ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="Microphone (High Definition Audio Device)" -c:v libx264 -preset ultrafast -crf 0 -c:a aac -b:a 128k "%filename%.mp4"
echo 屏幕录制完成,文件已保存为 %OUTPUT_FILE%
pause
endlocal
@echo off
setlocal enabledelayedexpansion
:: 获取当前日期和时间
set DATE_STR=%date:~0,4%-%date:~5,2%-%date:~8,2%
set TIME_STR=%time:~0,2%-%time:~3,2%
:: 去掉时间中的秒和毫秒(如果有的话)
set TIME_STR=%TIME_STR:~0,5%
:: 设置输出文件名
set OUTPUT_FILE=ScreenRecording_%DATE_STR%_%TIME_STR%.mp4
:: 使用FFmpeg开始录屏并录制默认麦克风声音,这里以录制全屏、编码为H264、音频编码为AAC为例
ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="Microphone (High Definition Audio Device)" -c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 128k "%OUTPUT_FILE%"
:: ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="Microphone (High Definition Audio Device)" -c:v libx264 -preset ultrafast -crf 0 -c:a aac -b:a 128k "%OUTPUT_FILE%"
echo 屏幕录制完成,文件已保存为 %OUTPUT_FILE%
pause

评论