利用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去除字符串两端空格的方法
May 21 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
python爬取淘宝商品销量信息
Nov 16 Python
Python中的枚举类型示例介绍
Jan 09 Python
Python Django 封装分页成通用的模块详解
Aug 21 Python
python-numpy-指数分布实例详解
Dec 07 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
Python如何读写CSV文件
Aug 13 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简单生成随机数的方法
2015/07/30 PHP
laravel model 两表联查示例
2019/10/24 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
python使用代理ip访问网站的实例
2018/05/07 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python实现复制文件到指定目录
2019/10/16 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
《鸟的天堂》教学反思
2014/02/27 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
优秀员工推荐材料
2014/12/20 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
教研活动主持词
2015/07/03 职场文书
建房合同协议书
2016/03/21 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python