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

zz/2024/6/24 19:09:03

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


http://www.ngui.cc/zz/2390117.html

相关文章

ffmpeg使用指令转码b站上下载的视频

FFmpeg简易使用指令&如何转码b站上下载下来的视频最近在准备英语课堂影片配音如何解决这个问题?最近在准备英语课堂影片配音 ffmpeg是一个非常好用的视频转格式软件,转码之前首先要安装(简单易用!!) 这…

B站手机缓存的视频在电脑上转换观看

B站上挺多学习视频&#xff0c;要能下载到电脑上看就好了&#xff0c;下面是一个在手机上缓存后拷贝到电脑上采用转成mp4的脚本。 #!/bin/shif [ "x"$1 "x" ]; then echo "Usage: $0 <directory>" exit 1fiif [ ! -d $1 ]; then …

用MATLAB将bilibili缓存视频批量转换成MP4的方法

1、下载和安装ffmpeg详情参考博客 https://blog.csdn.net/weixin_41690708/article/details/90237568 下载地址&#xff1a;http://ffmpeg.org/ 2、从手机端bilibili的缓存视频文件夹中拷贝多个以数字命名的文件夹到电脑端&#xff0c;这些数字就是缓存视频的av号&#xff0c;可…

PowerShell路转粉之造轮子(01)------B站离线缓存简单合并blvm4s

起因是最早是为了缓存网课&#xff0c;从手机缓存拷贝出来后却没法直接看&#xff0c;所以就开始搜罗网上大佬提供的方法&#xff0c;身为一个同样写代码的人&#xff0c;显然就采用了最简单的方法&#xff1a; 1. ffmpeg -i video.m4s -i audio.m4s -c:v copy -c:a aac -stri…

b站安卓手机下载视频后使用matlab自动转为mp4文件并归档

第一步&#xff1a; 首先我们新建一个文件夹&#xff0c;比如我这里的第一个文件夹&#xff1a;b站视频。 第二步&#xff1a; 在matlab中创建新函数用ffmpeg软件来合并b站视频。我这里是matlab2019a&#xff0c;有些版本可能有些matlab自带函数不支持 代码如下&#xff1a; f…

将bilibili缓存文件转换为MP4格式

最近有想要在b站上下载一些视频&#xff0c;但是目前只能在移动端缓存&#xff0c;并且格式不为普通的MP4格式&#xff0c;作为计算机专业学生当然要想办法解决这个问题啦 使用环境&#xff1a;win10 Ubuntu 18.04子系统 指令神马的都在Ubuntu18.04子系统上运行的&#xff0…

LinuxMint 下 B站 番 blv 缓存 转 mp4

参考https://www.littleqiu.net/archives/886 &#xff08;不过我使用绝对路径&#xff0c;ffmpeg报错&#xff0c;相对路径没问题&#xff09; 一、安装ffmpge sudo apt-get install ffmpeg 在视频目录/home/foo/Videos/s_6463/115195/lua.hdflv2.bb2api.bd下新建一个files.tx…

B站安卓端缓存的视频blv批量转换成完整MP4

B站安卓端缓存视频小段blv合并完整MP4过程前言缓存的视频导入电脑批量转换处理思路找到现成的轮子安装依赖把下载的开源项目复制到bash目录把要转换格式目录放到开源项目的目录利用脚本转换前言 B站不得不说是一个很好的学习网站&#xff0c;没有广告的用户体验更是没得说&…

苹果PD20W快充芯片严重缺货!如何拯救这个苹果PD充电器市场?

苹果PD20W快充芯片严重缺货&#xff01;如何拯救这个苹果PD充电器市场&#xff1f;乐得瑞LDR6023E QC转PD协议方案&#xff01; 整个PD20W电源芯片市场的状况是这样的 或许是这样的 乐得瑞推出新的解决办法——让传统的QC适配器也能够支持输出PD协议快充&#xff0c;这样不但…

LTH7B,LTH7r,LTH7x,LTH7s五脚锂电池充电芯片应用说明电路图

一、 概述 LTH7R.是恒流/恒压座充充电器芯片&#xff0c;主要应用于单节锂电池充电。无需外接检测电阻&#xff0c;其内部为 MOSFET 结构&#xff0c;因此无需外接反向二极管。 LTH7R.在大功率和高环境温度下可以自动调节充电电流以限制芯片温度。它的充电电压固定在 4.2V&…