在前一段时间因为比赛需要把在手机上录的MP4视频转成Gif动图,放在PPT上,但是在网上搜了很多的网站和软件发现都是需要进行付费的,虽然是有免费的,但是转出来都有水印,这可就
在前一段时间因为比赛需要把在手机上录的MP4视频转成Gif动图,放在PPT上,但是在网上搜了很多的网站和软件发现都是需要进行付费的,虽然是有免费的,但是转出来都有水印,这可就太无语了。。。。
突然想到是不是Python里边有个moviepy的库,可以直接把mp4视频转成Gif,这可就省了一大笔钱了,废话不多说,直接上代码。
# 将mp4视频转为gif动图import moviepy.editor as mp
import os
def ToGif(file_path, gif_path):
file_name = os.path.basename(file_path)
file_name = file_name.split('.')[0]
clip = mp.VideoFileClip(file_path)
clip.write_gif(gif_path + file_name + '.gif', fps=5)
if __name__ == "__main__":
ToGif(r'C:\Users\MSI\Desktop\采集音频.mp4', r'C:/Users/MSI/Desktop/')
但是这样还不是很方便,对团队里边的一些没有装python库的小伙伴,用起来很不方便,再加上一点细节,搞个图形化界面吧。
import tkinter as tkimport tkinter.filedialog
from tkinter import *
from tkinter import messagebox
import moviepy.editor as mp
import os
import xlrd
import xlwt
"""
pip3 install xlrd == 1.2.0
pip3 install xlwt == 0.7.5
pip3 install tkinter == 8.6.7
"""
def select_export_path():
temp = tk.filedialog.askopenfilename()
export_path.set(temp)
def select_all_number_path():
# 选择文件夹
temp = tk.filedialog.askdirectory()
all_number_Path.set(temp)
root = tk.Tk()
export_path = StringVar()
all_number_Path = StringVar()
diff_path = StringVar()
def ui():
"""
选择界面设计以及路径功能
"""
root.title("Mp4ToGif")
root.geometry("325x110")
# 标签
tk.Label(root, text="视频地址:").grid(row=0, column=0)
tk.Label(root, text="导出GIF存放地址:").grid(row=1, column=0)
# 输入框
processed_export_excel_file = tk.Entry(root, textvariable=export_path, state="readonly")
processed_export_excel_file.grid(row=0, column=1)
all_number_file = tk.Entry(root, textvariable=all_number_Path, state="readonly")
all_number_file.grid(row=1, column=1)
# 按钮
tk.Button(root, text="选择文件", command=select_export_path).grid(row=0, column=2)
tk.Button(root, text="选择地址", command=select_all_number_path).grid(row=1, column=2)
begin_contrast_button = tk.Button(root, text="开始转换",
command=lambda: contrast_button_clicked(processed_export_excel_file.get(),
all_number_file.get()))
begin_contrast_button.grid(row=3, column=1)
root.mainloop()
def contrast_button_clicked(processed_export_excel_file, all_number_file):
contrast(processed_export_excel_file, all_number_file)
messagebox.showinfo("提示", "转换完成")
def contrast(processed_export_excel_file, all_number_file):
file_name = os.path.basename(processed_export_excel_file)
file_name = file_name.split('.')[0]
clip = mp.VideoFileClip(processed_export_excel_file)
clip.write_gif(all_number_file + r"/" + file_name + '.gif', fps=5)
if __name__ == '__main__':
ui()
再用Pyinstaller打包下
pyinstaller -F -w contrast.py --hidden-import=pandas._libs.tslibs.timedeltas