利用python+ffmpeg合并B站视频及格式转换的实例代码


Posted in Python onNovember 24, 2020

利用python+ffmpeg合并B站视频及格式转换 B站客户端下载的视频一般有两种格式:早期的多为blv格式(由flv格式转换而来,音视频轨道在同一文件下)。

如今的多为m4s格式,音频轨视频轨分开 以下为利用ffmpeg简单对文件处理,使其转换为大多数播放器能正常播放的mp4格式 前提:已正常安装ffmpeg

import tkinter as tk
from tkinter import filedialog
import os
import tkinter.messagebox
from tkinter import ttk
mainGUI=tk.Tk()
width = 400
height = 400
screenwidth = mainGUI.winfo_screenwidth()
screenheight = mainGUI.winfo_screenheight()
alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
mainGUI.geometry(alignstr)
mainGUI.title("转码系统")
def browseDialog():
 root = tk.Tk()
 root.withdraw()
 return filedialog.askopenfilename()
def browseDialogTo():
 path=browseDialog()
 var.set(path)
def browseDialogTo2():
 path=browseDialog()
 var2.set(path)
def browseDialogTof2():
 path=browseDialog()
 varf2.set(path)
def browseDialogTof3():
 path=browseDialog()
 varf3.set(path)
def browseDialogTof4():
 path=browseDialog()
 varf4.set(path)

tab = ttk.Notebook(mainGUI)

frame0 = tk.Frame(tab)
tab6 = tab.add(frame0, text = "m4s转mp4")

frame1 = tk.Frame(tab)
tab1 = tab.add(frame1, text = "blv,flv转mp4")

frame2 = tk.Frame(tab)
tab2 = tab.add(frame2, text = "提取音频")

frame3 = tk.Frame(tab)
tab3 = tab.add(frame3, text = "音频截取")

tab.pack(expand = True, fill = tk.BOTH)

#----------------------------------------------------------------------------------------------#
l1=tk.Label(frame0,text = "请选择视频文件",font=('Arial', 15),width=100,height=2)
l1.pack()
var=tk.StringVar()
var.set("")
e1 = tk.Entry(frame0,textvariable = var, show = None)#显示成明文形式
e1.pack()
b1=tk.Button(frame0, text='浏览', width=6,
     height=2, command=browseDialogTo)
b1.pack()

l2=tk.Label(frame0,text = "请选择音频文件",font=('Arial', 15),width=100,height=2)
l2.pack()
var2=tk.StringVar()
var2.set("")
e2 = tk.Entry(frame0,textvariable = var2, show = None)#显示成明文形式
e2.pack()
b2=tk.Button(frame0, text='浏览', width=6,
     height=2, command=browseDialogTo2)
b2.pack()

l3=tk.Label(frame0,text = "请输入新文件命名",font=('Arial', 15),width=100,height=2)
l3.pack()
e3 = tk.Entry(frame0, show = None)#显示成明文形式
e3.pack()

def myCMD(path1,path2,name):
 ver=os.popen("FFmpeg -i "+path1+" -i "+path2+" -codec copy "+"C:\\Users\\renboyu010214\\Desktop\\outputFile\\"+name+".mp4")
 ver.close()
def myCMDmain():
 path1=e1.get()
 path2=e2.get()
 name=e3.get()
 myCMD(path1,path2,name)
 tkinter.messagebox.showinfo(title='success', message="转码成功!")
b4=tk.Button(frame0, text='确定', width=6,
     height=2, command=myCMDmain)
b4.pack()
#----------------------------------------------------------------------------------------------#
lf2=tk.Label(frame1,text = "请选择blv或flv文件",font=('Arial', 15),width=100,height=2)
lf2.pack()
varf2=tk.StringVar()
varf2.set("")
ef2 = tk.Entry(frame1,textvariable = varf2, show = None)#显示成明文形式
ef2.pack()
bf2=tk.Button(frame1, text='浏览', width=6,
     height=2, command=browseDialogTof2)
bf2.pack()
lf2_1=tk.Label(frame1,text = "请输入新文件命名",font=('Arial', 15),width=100,height=2)
lf2_1.pack()
ef2_1 = tk.Entry(frame1, show = None)#显示成明文形式
ef2_1.pack()
def myCMDmainf2():
 path1=ef2.get()
 name=ef2_1.get()
 ver=os.popen("ffmpeg -i "+path1+" "+"C:\\Users\\renboyu010214\\Desktop\\outputFile\\"+name+".mp4")
 ver.close()
 tkinter.messagebox.showinfo(title='success', message="转码成功!")
bf2=tk.Button(frame1, text='确定', width=6,
     height=2, command=myCMDmainf2)

bf2.pack()

#----------------------------------------------------------------------------------------------#
lf3=tk.Label(frame2,text = "请选择视频文件",font=('Arial', 15),width=100,height=2)
lf3.pack()
varf3=tk.StringVar()
varf3.set("")
ef3 = tk.Entry(frame2,textvariable = varf3, show = None)#显示成明文形式
ef3.pack()
bf3=tk.Button(frame2, text='浏览', width=6,
     height=2, command=browseDialogTof3)######
bf3.pack()
lf3_1=tk.Label(frame2,text = "请输入新文件命名",font=('Arial', 15),width=100,height=2)
lf3_1.pack()
ef3_1 = tk.Entry(frame2, show = None)#显示成明文形式
ef3_1.pack()
def myCMDmainf3():
 path1=ef3.get()
 name=ef3_1.get()
 ver=os.popen("ffmpeg -i "+path1+" -acodec copy -vn "+"C:\\Users\\renboyu010214\\Desktop\\outputFile\\"+name+".aac") 
 #ffmpeg -i F:\video\冠世一战.mp4 -acodec copy -vn F:\video\output.aac
 ver.close()
 tkinter.messagebox.showinfo(title='success', message="音频提取成功!")
bf3=tk.Button(frame2, text='确定', width=6,
     height=2, command=myCMDmainf3)

bf3.pack()

#----------------------------------------------------------------------------------------------#

#----------------------------------------------------------------------------------------------#
lf4=tk.Label(frame3,text = "请选择音频/视频文件",font=('Arial', 15),width=100,height=2)
lf4.pack()
varf4=tk.StringVar()
varf4.set("")
ef4 = tk.Entry(frame3,textvariable = varf4, show = None)#显示成明文形式
ef4.pack()
bf4=tk.Button(frame3, text='浏览', width=6,
     height=2, command=browseDialogTof4)######
bf4.pack()
lf4_1=tk.Label(frame3,text = "请输入新文件命名(音频后缀.mp3 视频后缀.mp4)",font=('Arial', 15),width=100,height=2)
lf4_1.pack()
ef4_1 = tk.Entry(frame3, show = None)#显示成明文形式
ef4_1.pack()
lf4_2=tk.Label(frame3,text = "请输入开始时间(xx:xx:xx)",font=('Arial', 15),width=100,height=2)
lf4_2.pack()
ef4_2 = tk.Entry(frame3, show = None)#显示成明文形式
ef4_2.pack()
lf4_3=tk.Label(frame3,text = "请输入截取时间(xx:xx:xx)",font=('Arial', 15),width=100,height=2)
lf4_3.pack()
ef4_3 = tk.Entry(frame3, show = None)#显示成明文形式
ef4_3.pack()
def myCMDmainf4():
 path1=ef4.get()
 name=ef4_1.get()
 startTime=ef4_2.get()
 time=ef4_3.get()
 ver=os.popen("ffmpeg -ss "+startTime+" -t "+time+" -i "+path1+" -vcodec copy -acodec copy "+"C:\\Users\\renboyu010214\\Desktop\\outputFile\\"+name) 
 #ffmpeg -ss 00:00:00 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4 
 ver.close()
 tkinter.messagebox.showinfo(title='success', message="音频/视频截取成功!")
bf4=tk.Button(frame3, text='确定', width=6,
     height=2, command=myCMDmainf4)

bf4.pack()

#----------------------------------------------------------------------------------------------#

mainGUI.mainloop()

到此这篇关于利用python+ffmpeg合并B站视频及格式转换的实例代码的文章就介绍到这了,更多相关python+ffmpeg合并B站视频及格式转换内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python获取元素在数组中索引号的方法
Jul 15 Python
python字典DICT类型合并详解
Aug 17 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
Python异常模块traceback用法实例分析
Oct 22 Python
python numpy 矩阵堆叠实例
Jan 17 Python
Python调用.net动态库实现过程解析
Jun 05 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
python导入库的具体方法
Jun 18 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
python 如何停止一个死循环的线程
Nov 24 #Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 #Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 #Python
Python调用Redis的示例代码
Nov 24 #Python
基于django和dropzone.js实现上传文件
Nov 24 #Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 #Python
Django web自定义通用权限控制实现方法
Nov 24 #Python
You might like
PHP设计聊天室步步通
2006/10/09 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php报错502badgateway解决方法
2019/10/11 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
一起深入理解js中的事件对象
2021/02/06 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
中科前程Java笔试题
2016/11/20 面试题
学生党支部先进事迹
2014/02/04 职场文书
八年级语文教学反思
2014/02/11 职场文书
教师个人事迹材料
2014/12/17 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
关于MySQL中的 like操作符详情
2021/11/17 MySQL