python+ffmpeg视频转码转格式(二)

python+tkinter制作窗口

首先我既然要去弄这个窗口,当然我们得知道tkinter这个模块怎么用,下面我总结了一些简单的用法 【示例】

import tkinter      #导入Tkubter模块
test = tkinter.Tk()
test.mainloop()

执行结果:

这样一个简单的windows窗口就有了,tkinter模块用法有很多,这里就不细说了,下面继续说我们的转码。

首先就是先制作一个windwos窗口然后让我输入一些信息,下面是我写的windows窗口。

import tkinter as tk    #导入tkinter模块,并起别名为tk

wind=tk.Tk()    #建立顶层控件wind
wind.geometry("800x400")    #设置窗口大小
wind.title("视频转码")  #设置窗口标题

title_lab=tk.Label(wind,text="视频转码",font="仿宋 20 bold")  #创建窗格标题内容,字体,颜色
title_lab.place(x=350,y=30) #设置标题位置

textlab=tk.Label(wind, text="请输入视频地址:", font="仿宋 20 bold", fg="blue", width=20) #创建表单名字,并设置字体、颜色、大小
textlab.place(x=0,y=100)    #设置表单名字位置
text_entry=tk.Entry(wind, width=30,font="仿宋 20 bold")   #建立输入的控件entry,也就是表单
text_entry.place(x=300,y=100)   #设置控件位置

mzlab=tk.Label(wind, text="请输入新视频名称:", font="仿宋 20 bold",fg="blue", width=18)   #创建表单名字,并设置字体、颜色、大小
mzlab.place(x=0,y=200)  #设置表单名字位置
mz_entry=tk.Entry(wind, width=30,bg="white",font="仿宋 20 bold")  #建立输入的控件entry,也就是表单
mz_entry.place(x=300,y=200) #设置控件位置

btn=tk.Button(wind,text="提交", font="仿宋 20 bold", fg="blue", width=8)    #设置提交按钮,并设置字体样式、大小
btn.place(x=350,y=300)  #设置按钮位置
wind.mainloop() #窗口的消息循环

最后效果图:

显示写出来了,后面该弄功能了

ffmpeg转码

在写功能之前首先得学习ffmpeg怎么用,不然的话功能也写不出来

1. ffmpeg工具软件

首先我们需要下载ffmpeg工具,下面是下载地址,下载的速度还算比较快,如果有觉的下载慢的,可以私聊我,我把软件包发给大家或者直接在我的资源里面下载也行 FFmpeg官网地址:  FFmpeg下载地址: 

2. 使用方法

语法:

ffmpeg -i 源文件路径及文件名称 转码后文件路径及名称

示例:

ffmpeg -i D:\test\abc.flv   D:\test\abc.mp4

实现就是这么简单,建议大家现在系统命令行中先测试下这个工具,看看能不能达到大家的要求,大家要是想了解ffmpeg的全部用法可以去官网文档上面查看

python调用ffmpeg

其实相当简单,只需要在python导入OS模块就可以了,下面直接上代码

import os
dir = os.getcwd()   
#获取当前文件路径,因为我这里把ffmpeg工具放到了代码路径,所以需要获取一下当前路径,这个根据大家实际情况写
dir2 = '/windows-ffmpeg/x64/ffmpeg.exe' #ffmpeg具体位置
ff = dir+dir    #组合路径
result = eval(repr(ff).replace('\\','/'))
#转换反斜杠为斜杠,因为获取到的路径是反斜杠的,需要转换成斜杠,转换后会发现是双斜杠,所以需要下面再转换下
ff = result.replace('//','/')   #双斜杠转为但斜杠
cmd = ff +' -i '+'D:\test\abc.flv' +' -c copy ' + 'D:\test\abc.mp4'
#写需要执行的命令
os.system(cmd)  #执行系统命令,也就是进行转码

OK,执行上面代码直接进行转码,这里需要注意的是路径位置一定要对哦! 窗口有了,功能有了,那后面就是拼接了

成果

废话不多说直接上结果:

import tkinter as tk
import os

wind=tk.Tk()    
wind.geometry("800x400")    
wind.title("视频转码")  

title_lab=tk.Label(wind,text="视频转码",font="仿宋 20 bold")
title_lab.place(x=350,y=30) 

textlab=tk.Label(wind, text="请输入视频地址:", font="仿宋 20 bold", fg="blue", width=20)
textlab.place(x=0,y=100)
text_entry=tk.Entry(wind, width=30,font="仿宋 20 bold")   
text_entry.place(x=300,y=100)   

mzlab=tk.Label(wind, text="请输入新视频名称:", font="仿宋 20 bold",fg="blue", width=18)
mzlab.place(x=0,y=200)
mz_entry=tk.Entry(wind, width=30,bg="white",font="仿宋 20 bold")
mz_entry.place(x=300,y=200)

#下面是引用了一个执行转码的方法,并声明执行结果
def getTextInput(): 
    lianjie = text_entry.get()
    mz = mz_entry.get()
    mz = mz + '.mp4'
    ff = '/windows-ffmpeg/x64/ffmpeg.exe'
    ff1 = os.getcwd()
    ff = ff1+ff
    result = eval(repr(ff).replace('\\','/'))
    ff = result.replace('//','/')
    cmd = ff +' -i '+lianjie+' -c copy '+mz

    if os.system(cmd) == 0:     #判断执行结果并进行转码
        test1=tk.Tk()   
        test1.geometry("200x100")   
        test1.title("") 
        title_lab=tk.Label(test1,text="视频转码成功",font="仿宋 20 bold")   
        title_lab.place(x=0,y=0)    
        test1.mainloop()
    else:
        test2=tk.Tk()   
        test2.geometry("200x100")   
        test2.title("") 
        title_lab=tk.Label(test2,text="视频转码失败",font="仿宋 20 bold")   
        title_lab.place(x=0,y=0)    
        test2.mainloop()

btn=tk.Button(wind,text="提交", font="仿宋 20 bold", fg="blue", width=8,command=getTextInput)   #将信息提交给上面的getTextInput方法
btn.place(x=350,y=300)
wind.mainloop()

双击python文件的话会出现两个窗口,一个是用来输入信息的窗口一个是用来显示报错信息的窗口,这个工具有待完善,希望有会python的大神可以完善下

注意:这个工具需要注意的是如果你不想改代码直接用的话,就直接把ffmpeg工具和你的代码文件放到一起,还有如果你不写转码后文件路径默认会保存到存放代码文件的地方。

posted @ 2021-05-18 14:38  路索丶  阅读(711)  评论(0)    收藏  举报