ffmpeg 安装和录屏(python)

介绍

FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。 “FFmpeg”这个单词中的“FF”指的是“Fast Forward”。

安装

本文只单独介绍如何在Windows和macOS下安装FFmpeg,暂不讨论在Linux下的情况。
FFmpeg的官网为https://ffmpeg.org/download.html

Windows

    1. 首先打开上面的官网下载链接,找到Windows模块下的Windows builds from gyan.dev
      FFmpeg Windows 下载
    2. 在新打开的gyan.dev的页面中找到Release部分,Links里第一个full(如红箭头所示)的链接直接点击下载FFmpeg的最新版压缩包。
      Release
    3. 下载下来的7z安装包先解压,然后将解压后的文件夹放至你不会随意删掉或改动为止的路径下(如C盘的Program Files但不是必须放到C盘)。
    4. 复制ffmpeg解压后文件夹内的bin文件夹路径(如下图所示)
      复制bin文件夹路径
    5. 打开设置-系统-关于-高级系统设置
      设置-系统
      系统-关于-高级系统设置
    6. 打开高级系统设置后点开环境变量,找到系统变量中的Path变量双击点开。
      环境变量
      Path变量
    7. 新打开的页面点击右边的新建,粘贴进去在第四步复制的bin文件夹链接
      新建变量
    8. 添加完后一步一步确定-确定-确定。
    9. win+R,输入cmd,回车,打开cmd
      win+R
    10. 输入FFmpeg并回车测试是否安装成功,显示类似下图即为安装成功
      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()
复制代码

 

 

 


参考链接:

https://www.zl-asica.com/2020/ffmpeg/

https://blog.51cto.com/fengyuzaitu/3610970

https://www.jianshu.com/p/fa5e0d530628

 

posted @   超级宝宝11  阅读(936)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示