python视频转换为音频/音频格式修改

文章提供了一个Python脚本,使用pydub库将不同格式的音视频转换为单声道16kHz采样率、16位采样位数的音频,以适应后台分析程序的要求。转换过程包括音像分离、声道、采样率和采样位数的调整,并通过wave库验证转换结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用网页前端录制音视频供后台程序分析时,因音视频格式问题报错,记录一下。
后台分析程序支持的音频格式为:单声道 16kHz采样率,采样位数16位,转换代码如下:

# 音像分离
def convert_video_to_audio(file_path):
    from pydub import AudioSegment
    from pydub.exceptions import CouldntDecodeError
    import os

    file_ext = os.path.splitext(file_path)[1]
    try:
        audio = AudioSegment.from_file(file_path, file_ext[1:])
    except CouldntDecodeError:
        raise Exception(f" {file_ext} 格式不支持, 请使用 mp4, webm, flv,wav 等视频音频格式格式")
    # 转换为单声道
    audio = audio.set_channels(1)

    # 转换为采样率16kHz
    audio = audio.set_frame_rate(16000)

    # 采样位数16位
    audio = audio.set_sample_width(2)

    # 保存为wav文件
    # 设置文件名字为源文件的前缀
    filename = os.path.basename(file_path)
    filename_without_extension = os.path.splitext(filename)[0]
    new_file_path = filename_without_extension + ".wav"
    audio.export(new_file_path, format="wav")
    return new_file_path

判断转换之后的格式是否符合情况:

import wave

def get_wav_info(wav_file):
    with wave.open(wav_file, 'rb') as wav:
        frames = wav.getnframes()
        rate = wav.getframerate()
        channels = wav.getnchannels()
        width = wav.getsampwidth()
        duration = frames / float(rate)
    print("采样率: {}Hz".format(rate))
    print("声道数: {}".format(channels))
    print("采样位数: {}位".format(width*8))
    print("帧数: {}".format(frames))
    print("时长: {:.2f}秒".format(duration))

just like this:
在这里插入图片描述

个人邮箱:k1933211129@163.com 欢迎各位大佬批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值