import subprocess
import sys
import os
import ffmpeg
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from qss_read import QssRead
class mm_win(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
"""初始化UI"""
self.qssfile1="M03_musicconvert_pro2023/qss_main_style_audiosplit.qss"
self.qss1=QssRead.readQSS(self.qssfile1)
self.btn1=QPushButton('载入音频',self)
self.btn1.setGeometry(40,40,80,40)
self.btn1.clicked.connect(self.audio_load)
self.lbl10=QLabel(self)
self.lbl10.setGeometry(160,20,80,20)
self.lbl10.setText('源音频路径:')
self.lbl1=QLabel(self)
self.lbl1.setGeometry(160,40,200,20)
self.lbl1.setText('')
self.lbl2=QLabel(self)
self.lbl2.setGeometry(40,100,80,20)
self.lbl2.setText("源音频信息:")
self.src_music_list=QListWidget(self)
self.src_music_list.setGeometry(40,130,200,120)
self.lbl3=QLabel(self)
self.lbl3.setGeometry(300,80,60,20)
self.lbl3.setText("开始时间")
self.qlt1=QLineEdit(self)
self.qlt1.setGeometry(300,120,60,20)
self.lbl5=QLabel(self)
self.lbl5.setGeometry(362,120,15,20)
self.lbl5.setText('秒')
self.lbl4=QLabel(self)
self.lbl4.setGeometry(400,80,60,20)
self.lbl4.setText("持续时间")
self.qlt2=QLineEdit(self)
self.qlt2.setGeometry(400,120,60,20)
self.lbl6=QLabel(self)
self.lbl6.setGeometry(462,120,15,20)
self.lbl6.setText('秒')
self.btn2=QPushButton('开始分割',self)
self.btn2.setGeometry(400,160,60,40)
self.btn2.clicked.connect(self.audio_split)
self.lbl11=QLabel(self)
self.lbl11.setGeometry(400,210,80,20)
self.lbl11.setText('目标音频路径:')
self.lbl7=QLabel(self)
self.lbl7.setGeometry(400,230,200,20)
self.lbl7.setText('')
self.setWindowTitle('音频格式转换')
self.setGeometry(100,100,700,400)
self.setWindowIcon(QIcon('M03_musicconvert_pro2023\\CoDeSys.ico'))
self.setStyleSheet(self.qss1)
self.show()
def audio_load(self):
"""音频载入"""
self.filename1,_=QFileDialog.getOpenFileName(self,'选择文件','C:/',"Allfile(*);;txt(*.txt)")
#self.filepath1=os.path.dirname(self.filename1)
self.filepath1="C:/Users/rongjv/Desktop/"
print(self.filepath1)
if self.filename1:
self.lbl1.setText(self.filename1)
self.audio_info(self.filename1)
else:
QMessageBox.about(self,'tip','文件不存在')
def audio_info(self,filename):
"""获取音频信息"""
probe=ffmpeg.probe(filename)
print(probe)
format=probe['format']
stream=probe['streams'][0]
#print(format)
audio_time=format['duration']
audio_byte=str(int(format['size'])/1024/1024)
audio_rate=stream['bit_rate']
audio_rate2=float(audio_rate)/1000
audio_name=format['filename']
audio_geshi=format['format_name']
name1=audio_name.split('/')
name2=name1[len(name1)-1]
name3='曲名:%s'%name2
self.musciname=name2.split('.')[0]
geshi1='格式:%s'%audio_geshi
self.geshi2=audio_geshi
dura=float(audio_time)
dura2='时长:%6.6s 秒'%dura
size1='大小: %5.4s MB'%audio_byte
rate1='比特率: %s kb'%audio_rate2
#添加到列表显示
self.src_music_list.clear()
self.src_music_list.addItems([name3,geshi1,dura2,size1,rate1])
def audio_split(self):
"""音频分割"""
src_audio_name=self.filename1
start_time=self.qlt1.text()
dura_time=self.qlt2.text()
des_audio_name=self.filepath1+start_time+'_'+dura_time+'.'+self.geshi2
self.des_filepath1=des_audio_name
cmdtxt=['ffmpeg','-i',src_audio_name,'-vn','-acodec','copy','-ss',start_time,'-t',dura_time,des_audio_name]
self.ffmpeg_cmd_exec(cmdtxt)
def ffmpeg_cmd_exec(self,cmdtxt):
"""ffmpeg指令执行"""
pp=subprocess.Popen(cmdtxt,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,encoding='utf-8',text=True)
for line in pp.stdout:
print(line)
QMessageBox.about(self,'tip','分割完成')
self.lbl7.setText(self.des_filepath1)
if __name__ =='__main__':
app=QApplication(sys.argv)
mw1=mm_win()
sys.exit(app.exec_())
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本程序主要使用python和ffmpeg来制作,其中UI界面使用PyQt5来制作,而界面配色使用Qss文件渲染,原因是非常方便且可移植性高。 而对音频处理的核心程序是ffmpeg,这是一个开源且免费的程序,可以提供API接口,但本例中使用的是subprocess直接调用ffmpeg.exe来处理音频。 对音频文件信息的读取,则使用ffmpeg的probe功能,对读取的信息进行了过滤,会在界面上显示常用的属性如名称、大小、时长、格式等。 而对文件的导入导出,则使用PyQt5的Qfiledialog模块。 综合来说,本程序希望实现的是对音频文件的分割,但初版是单次分割,后续会添加多段分割,以及自动分割时长计算等,请关注博文的更新。
资源推荐
资源详情
资源评论
收起资源包目录
python_ffmpeg_音频分割.rar (7个子文件)
qss_read.py 141B
ffprobe.exe 73.32MB
qss_main_style_audiosplit.qss 2KB
音频分割.py 5KB
ffplay.exe 73.28MB
CoDeSys.ico 67KB
ffmpeg.exe 73.41MB
共 7 条
- 1
资源评论
机构师
- 粉丝: 366
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功