使用网页前端录制音视频供后台程序分析时,因音视频格式问题报错,记录一下。
后台分析程序支持的音频格式为:单声道 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 欢迎各位大佬批评指正