解放双手,提高生产力,看我如何用 Python 实现自动化剪视频

简介: 人类和动物最本质的区别就是人类懂的制造并使用工具,这是由上古时代一直延续至今的基因所决定的。前段时间朋友的一个业务需要大量的原创短视频,问我是否可以帮忙弄下,我了解了具体需求之后发现不需要很高质量的内容,操作也不是很复杂,完全可以通过 Python 实现自动化操作,也是就把这个事给应承了下来。

人类和动物最本质的区别就是人类懂的制造并使用工具,这是由上古时代一直延续至今的基因所决定的。

前段时间朋友的一个业务需要大量的原创短视频,问我是否可以帮忙弄下,我了解了具体需求之后发现不需要很高质量的内容,操作也不是很复杂,完全可以通过 Python 实现自动化操作,也是就把这个事给应承了下来。

我们知道 PyAutoGUI 是一个通过编程方式来控制鼠标和键盘的 Python 库,那么就从它身上下手了。


安装

Win 和 macOS 的安装命令有所不同。


## windows
py -m pip install pyautogui
## macOS
python3 -m pip install pyautogui


屏幕位置

屏幕上的位置由笛卡尔坐标表示,X 坐标从左上角的 0 开始,向右增加,与数学不同,Y 坐标从左上角 0 开始,向下增加。

因此左上角的像素位于坐标(0,0),如果你的屏幕分辨率为 1920 x 1080,则右下角的像素将为(1919, 1079),因为像素是从坐标 0 开始的。屏幕分辨率大小可以通过 size() 函数获得,当前鼠标位置则可以通过 position() 函数获得。


0,0       X increases -->
+---------------------------+
|                           | Y increases
|                           |     |
|   1920 x 1080 screen      |     |
|                           |     V
|                           |
|                           |
+---------------------------+ 1919, 1079
import pyautogui
x, y = pyautogui.position()
print(x, y)
x, y = pyautogui.size()
print(x, y)
## 输出结果
545 437
1440 900


鼠标移动

鼠标的移动则分为绝对坐标移动和相对坐标移动。

比如你想将鼠标移动到坐标(100,100)处,直接调用 moveTo 函数即可。


import pyautogui
# 将鼠标移动至(100,200)坐标处
pyautogui.moveTo(100, 200)   
# 将鼠标移动至(100,500 坐标处
pyautogui.moveTo(None, 500)  
# 将鼠标移动至(600,500)坐标处
pyautogui.moveTo(600, None)
# 将鼠标移动至(100,200)坐标处,该移动过程是一个持续性过程,耗时 2 秒
pyautogui.moveTo(100, 200, 2)


而 move 函数则是简单的相对移动。

import pyautogui
# 将鼠标移动至(100,200)坐标处
pyautogui.moveTo(100, 200)
# 将鼠标向下移动 50 像素
pyautogui.move(0, 50)
# 将鼠标向左移动 30 像素
pyautogui.move(-30, 0)
# 将鼠标向左移动 30 像素
pyautogui.move(-30, None)


鼠标拖拽

和鼠标移动相比,鼠标拖拽同样分为绝对坐标拖拽和相对坐标拖拽。同样 dragTo 函数使用绝对坐标,drag 使用相对坐标。

import pyautogui
# 按住鼠标左键将目标拖拽至(100,200)坐标处
pyautogui.dragTo(100, 200, button='left')     
# 按住鼠标左键将目标拖拽至(100,200)坐标处,该移动过程是一个持续性过程,耗时 2 秒
pyautogui.dragTo(100, 200, 2, button='left')  
# 按住鼠标右键将目标向右移动 30 个像素,该移动过程是一个持续性过程,耗时 2 秒
pyautogui.drag(30, 0, 2, button='right')


鼠标点击

我们可以通过 click() 函数模拟鼠标单击。

import pyautogui
# 在当前位置单击左键
pyautogui.click()
# 将鼠标移动至(100,200)坐标处,然后单击左键
# 但是这个方法有点奇怪,有时候会失灵,可以使用 moveTo + click
pyautogui.click(x=100, y=200)
# 在当前位置单双击左键
pyautogui.doubleClick()


控制键盘

键盘控制一般常用的就是输入字符串,按下某个按键以及组合键。


import pyautogui
# 输入 “Hello World”
pyautogui.write('Hello world!')
# 按下 enter / F1 键 
pyautogui.press('enter')
pyautogui.press('f1')
# 组合按键 command + a
pyautogui.hotkey('command', 'a')


制作视频

有了以上的基础,就可以开始我们的视频制作了,这次使用的是剪映软件。

这里你需要熟悉一下剪映的操作步骤,基本分为三块:将指定图片拖入视频轨道、调整视频时长、导出。

最终效果如下:

image.gif

# coding=utf-8
import time
import pyautogui
# 将图片拖入轨道
def drag_img_to_track():
    # 选中图片
    pyautogui.moveTo(170, 270)
    pyautogui.doubleClick()
    # 拖拽图片至轨道
    pyautogui.dragTo(120, 600, 1, button='left')
# 调整视频时长
def drag_img_to_3_min():
    # 选中轨道中的第一张图
    pyautogui.moveTo(125, 600)
    pyautogui.click()
    # 拖拽至第三分钟
    pyautogui.moveTo(135, 600)
    pyautogui.dragTo(700, 600, 1, button='left')
# 删除旧的素材
def delete_top_img():
    # 删除轨道中的第二张图片
    pyautogui.moveTo(300, 160)
    pyautogui.doubleClick()
    pyautogui.press("backspace")
    # enter yes
    pyautogui.moveTo(650, 470)
    time.sleep(0.5)
    pyautogui.click()
# 导出
def export(name):
    pyautogui.moveTo(126, 600)
    pyautogui.click()
    pyautogui.hotkey('command', 'e')
    pyautogui.write(name)
    time.sleep(1)
    pyautogui.moveTo(800, 393)
    pyautogui.click()
    time.sleep(20)
    pyautogui.click()
index = 0
count = 2
while index < count:
    drag_img_to_track()
    drag_img_to_3_min()
    delete_top_img()
    export(str(index))
    time.sleep(2)
    index += 1
    print("end..." + str(index))


总结

今天我们通过 pyautogui 实现了全自动制作视频,我们只需要将素材导入到剪映中即可。

由于 gif 大小限制,只录制了一小部分,你可以通过调整主函数中的 count 值来控制制作视频的个数。

目录
相关文章
|
13天前
|
搜索推荐 Python
使用Python自动化生成物业通知单
本文介绍如何使用Python结合Pandas和python-docx库自动化生成物业通知单。通过读取Excel数据并填充至Word模板,实现高效准确的通知单批量制作。包括环境准备、代码解析及效果展示,适用于物业管理场景。
53 14
|
17天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
25天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
3天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
21 7
|
18天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
24 7
|
17天前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
28 4
|
16天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
23天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
28天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
65 4
下一篇
DataWorks