【源代码】基于streamlit和FFmpeg的wav转mp3

一、软件实测

二、源代码

# 将wav格式文件转为mp3
# 导入streamlit库,用于创建交互式Web应用
import streamlit as st
# 导入pydub库中的AudioSegment类,用于音频处理
from pydub import AudioSegment
# 导入os模块,用于进行操作系统相关的操作,如文件管理
import os

# 定义一个函数,用于将WAV文件转换为MP3文件
def convert_wav_to_mp3(wav_file):
    # 使用AudioSegment.from_wav方法从WAV文件中读取音频数据
    audio = AudioSegment.from_wav(wav_file)
    # 生成对应的MP3文件名,将原文件名中的".wav"替换为".mp3"
    mp3_filename = wav_file.replace(".wav", ".mp3")
    # 使用export方法将音频数据以MP3格式导出到指定文件
    audio.export(mp3_filename, format="mp3")
    # 返回生成的MP3文件名
    return mp3_filename

# 在Streamlit应用中设置标题为“WAV to MP3 Converter”
st.title("WAV to MP3 Converter")

# 创建一个文件上传组件,允许用户上传多个WAV文件
uploaded_files = st.file_uploader("Upload WAV files", type=["wav"], accept_multiple_files=True)

# 检查用户是否上传了文件
if uploaded_files:
    # 遍历上传的每个文件
    for file in uploaded_files:
        # 以二进制写入模式打开文件,并将上传的文件内容写入本地文件
        with open(file.name, "wb") as f:
            f.write(file.getbuffer())
        
        # 调用convert_wav_to_mp3函数将WAV文件转换为MP3文件,并获取生成的MP3文件名
        mp3_file = convert_wav_to_mp3(file.name)
        # 在Streamlit应用中显示成功转换的消息
        st.success(f"Converted {file.name} to {mp3_file}")
        
        # 以二进制读取模式打开生成的MP3文件,读取文件内容
        with open(mp3_file, "rb") as f:
            bytes_data = f.read()
        # 在Streamlit应用中创建一个下载按钮,用于下载转换后的MP3文件
        st.download_button(
            # 按钮上显示的文本
            label=f"Download {mp3_file}",
            # 要下载的数据
            data=bytes_data,
            # 下载时保存的文件名
            file_name=mp3_file,
            # 文件的MIME类型
            mime="audio/mpeg"
        )
        
        # 处理完成后,删除原始的WAV文件和生成的MP3文件,进行清理操作
        os.remove(file.name)
        os.remove(mp3_file)

注: 

1、下载并解压FFmpeg:

FFmpeg官网

2、将FFmpeg添加到系统路径

3、验证FFmpeg是否安装成功:ffmpeg -version

4、安装导入库:pip install streamlit pydub

5、运行代码:streamlit run main.py

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值