为什么我无法播放波形文件?

问题描述 投票:0回答:1

我正在开发一个使用二维码作为输入的音频播放器。它会一直工作,直到它真正需要播放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 并更改样本频率和比特率,但我无法让它工作。

python pygame wave
1个回答
0
投票

您下载的文件不是

wav
mp3
文件。既然你是从 youtube 下载的,我猜它要么是
mp4a
要么
opus
文件。

由于 pygame 不支持这些编解码器,因此您必须首先将文件转换为支持的格式。

这是一个使用 ffmpeg 的简单有效示例:

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
© www.soinside.com 2019 - 2024. All rights reserved.