介绍
FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。 “FFmpeg”这个单词中的“FF”指的是“Fast Forward”。
安装
本文只单独介绍如何在Windows和macOS下安装FFmpeg,暂不讨论在Linux下的情况。
FFmpeg的官网为https://ffmpeg.org/download.html
Windows
- 首先打开上面的官网下载链接,找到Windows模块下的Windows builds from gyan.dev
- 在新打开的gyan.dev的页面中找到Release部分,Links里第一个full(如红箭头所示)的链接直接点击下载FFmpeg的最新版压缩包。
- 下载下来的7z安装包先解压,然后将解压后的文件夹放至你不会随意删掉或改动为止的路径下(如C盘的Program Files但不是必须放到C盘)。
- 复制ffmpeg解压后文件夹内的bin文件夹路径(如下图所示)
- 打开设置-系统-关于-高级系统设置
- 打开高级系统设置后点开环境变量,找到系统变量中的Path变量双击点开。
- 新打开的页面点击右边的新建,粘贴进去在第四步复制的bin文件夹链接
- 添加完后一步一步确定-确定-确定。
- win+R,输入cmd,回车,打开cmd
- 输入FFmpeg并回车测试是否安装成功,显示类似下图即为安装成功
命令行录屏
gdigrab基于Win32 GDI的屏幕捕获设备。可以捕获Windows桌面屏幕显示区域的画面图像,包含windows窗口显示画面。
参数说明
framerate:帧率
desktop:desktop是指输入设备是桌面屏幕
draw_mouse:是否绘制鼠标,0:不绘制鼠标,1:绘制鼠标(如果为空默认为1)
-offset_x:捕获的区域X坐标,屏幕左上角为起始坐标(0,0),右下角为(screenSize,screenSize)
-offset_y:捕获的区域Y坐标
1 录制桌面,支持微软自带播放器和浏览器播放
ffmpeg -f gdigrab -i desktop -vcodec libx264 -pix_fmt yuv420p output.mp4 -y
指定编码格式和像素格式
2 指定录制时长
ffmpeg -f gdigrab -i desktop -vcodec libx264 -pix_fmt yuv420p -t 60 output.mp4
-t 指定录制时间长度,单位秒
3 指定捕获区域(不加-offset_x 和 -offset_y就是捕获全屏)
ffmpeg -f gdigrab -i desktop -offset_x 10 -offset_y 20 -vcodec libx264 -pix_fmt yuv420p -t 60 output.mp4
python调用ffmpeg进行录屏
#coding:utf-8
import time
import os
import datetime
import subprocess
def live_video():
# 用时间命名录屏的输出文件
file_name = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S.mp4')
# 开始录屏
live_video = subprocess.Popen('ffmpeg -f gdigrab -i desktop -vcodec libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -pix_fmt yuv420p {} -y'.format(file_name),shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
#录屏10秒
time.sleep(10)
# 发送q指令给ffmpeg,退出录屏
live_video.stdin.write('q'.encode("GBK"))
live_video.communicate() live_video()