为什么我无法播放这个波形文件?
我正在做一个音频播放器,它使用二维码作为输入。这个播放器在读取二维码的时候可以正常工作,但一旦需要播放音频文件audio.wav,就出现了“未知的波形格式”的错误。
import cv2
from pytube import YouTube
import pygame
PURPLE = '255, 0, 188'
PATH = 'A:\\VS\\programms\\ai-help'
MUSIC_PATH = 'A:\\VS\\programms\\ai-help\\audio.wav'
link = ''
pygame.mixer.pre_init(44100, 16, 2, 4096) #frequency, size, channels, buffersize
pygame.init()
cap = cv2.VideoCapture(2)
detector = cv2.QRCodeDetector()
def download():
try:
yt = YouTube(link)
except:
print('Connection error')
try:
mp3_stream = yt.streams.filter(only_audio=True).first()
mp3_stream.download(output_path=PATH,filename='audio.wav')
print('download complete')
except:
print('error downloading audiofile')
def play():
pygame.mixer.music.load(MUSIC_PATH)
pygame.mixer.music.play(MUSIC_PATH)
print('now playing')
我已经尝试过使用mp3格式,并且调整了采样频率和比特率,但还是无法正常播放。
2 个回答
0
谢谢大家的支持,我真的很感激。因为之前用ffmpeg的方法不奏效,所以我现在用了moviepy来把mp4格式转换成mp3格式,现在可以正常工作了。对于有需要的人来说,代码只有两行...
FILECONVERT = AudioFileClip(mp4_file)
FILECONVERT.write_audiofile(mp3_file)
还有导入的部分
from moviepy.editor import *
1
你下载的文件不是 wav
或 mp3
格式的。因为你是从 YouTube 下载的,我猜这个文件可能是 mp4a
或 opus
格式的。
由于 pygame 不支持这些格式,你需要先把文件转换成它支持的格式。
下面是一个简单的示例,使用了 ffmpeg 和 ffmpeg-python:
from pytube import YouTube
import ffmpeg
import pygame
video_url = "https://www.youtube.com/watch?v=6QbWfgq3PvQ"
audio_file = "input.mp4"
mp3_file = "output.mp3"
yt = YouTube(video_url)
yt.streams.filter(only_audio=True).first().download(filename=audio_file)
ffmpeg.input(audio_file).output(mp3_file).run()
pygame.mixer.init()
pygame.mixer.music.load(mp3_file)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
continue