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

利用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站视频及格式转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用PythonFFmpeg合并B站视频,您可以按照以下步骤操作: 1. 首先,您需要安装Python的相关库和FFmpeg。您可以使用pip命令在终端中安装Python库,如有需要,可以使用官方文档检查所需库的正确名称。FFmpeg可以从其官方网站下载,并根据您的操作系统进行安装。 2. 在安装完成后,您需要确定要合并B站视频的位置。在代码中,您可以使用Python的os库来处理文件和文件夹的路径。 3. 接下来,您可以使用subprocess库来运行FFmpeg命令。您可以使用subprocess.Popen()函数,并通过您的FFmpeg命令作为参数传递给它。 4. 在运行合并命令之前,您需要使用FFmpeg的concat协议来创建一个文本文件,其中包含要合并视频文件的列表。您可以使用Python的open()函数来创建一个.txt文件,并在其中写入视频文件的路径。 5. 编写一个Python函数来执行这些步骤。该函数可以接受两个参数,即要合并视频文件夹路径和合并视频的文件名。 6. 使用Python的os库来获取文件夹中的视频文件列表。 7. 使用subprocess库来运行FFmpeg命令,使用concat协议将视频文件合并为一个文件。命令中会使用刚才生成的包含视频列表的txt文件。 8. 最后,您可以在代码中调用该函数,并传递视频文件夹路径和合并视频的文件名。 请注意,由于B站视频的特殊格式和保护措施,可能需要额外的处理步骤来解码和处理B站视频文件。此外,需要根据FFmpeg的版本和操作系统的要求对命令进行相应的调整。 通过以上步骤,您就可以使用PythonFFmpeg成功合并B站视频了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值