所以我制作了一个音频播放器,它使用YT-DLP下载音频,然后使用pygame播放.blender .

the main problem,我得到的是pygame不会运行那个音频,相反,它只会为不同的音频格式(如Wav、Ogg和Mp3)提供错误.

对于Wav格式,我得到这个错误:pygame.error: Unknown WAVE format

对于MP3,我得到这个错误:pygame.error: mpg123_seek: Invalid RVA mode. (code 12)

对于Ogg,我得到这个错误:pygame.error: Not an Ogg Vorbis audio stream

在对这些事情思考了一段时间后,我认为有Something WrongCodecs.

Working Audio File

供参考

这是我用来下载所需音频文件的yt dlp代码.

from  yt_dlp import YoutubeDL
(option,C1,C2,C3)=[dict(extractaudio=True,outtmpl='src/backend/temp_audio/%(title)s.mp3'),'https://youtu.be','https://youtube.com','https://www.youtube.com',]

def download_song(link):
        try:
            with YoutubeDL(option) as ydl:
                ydl.download([link])
        except:
            print("Error in Downloading : " + link )
            pass
            

安装必备组件的命令:python -m pip install yt-dlp

为了快速回顾,这里是我想玩的test Audio File个游戏的链接.

推荐答案

Problem Solved

在询问了Pygameyt-dlp台Discord服务器上的大量用户之后.

我发现了什么?

  • 这是pygame的一个问题,它将无法播放具有该规格的音频文件.
  • 我们可以使用yt dlp和ffmpeg来修改音频,使其与pygame兼容.

那么,我们如何安装ffmpeg:

  1. 下载ffmpeg:(https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip)

  2. 提取文件并查找ffmpeg.exe和ffprobe.exe在bin文件夹中.

  3. 将这两个文件复制到与脚本相同的文件夹中.

Now

在安装了ffmpeg之后,现在我们需要对yt dlp的代码进行一些更改,以使其与ffmpeg一起运行.以下是新代码:

from  yt_dlp import YoutubeDL

option={'final_ext': 'mp3',
 'format': 'bestaudio/best',
 'postprocessors': [{'key': 'FFmpegExtractAudio',
                     'nopostoverwrites': False,
                     'preferredcodec': 'mp3',
                     'preferredquality': '5'}],
 'outtmpl': 'src/backend/temp_audio/%(title)s.%(ext)s',
 'ffmpeg_location': 'YOUR-LOCATION/ffmpeg.exe'}

def download_song(link):
        try:
            with YoutubeDL(option) as ydl:
                ydl.download([link])
        except:
            print(Exception)
            pass

现在,您的音频文件将与pygame完美配合!

Python相关问答推荐

使用unmanagedexports从Python调用的c#DLC

在Python中添加期货之间的延迟

如何在Power Query中按名称和时间总和进行分组

使用imap-tools时错误,其邮箱地址包含域名中的非默认字符

删除pandas rame时间序列列中未更改的值

在Windows上启动新Python项目的正确步骤顺序

阅读Polars Python中管道的函数定义

如何在PIL、Python中对图像应用彩色面膜?

不允许AMBIMA API请求方法

如何销毁框架并使其在tkinter中看起来像以前的样子?

Python中是否有方法从公共域检索搜索结果

在Python中为变量的缺失值创建虚拟值

将轨迹优化问题描述为NLP.如何用Gekko解决这个问题?当前面临异常:@错误:最大方程长度错误

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

如何让程序打印新段落上的每一行?

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如何请求使用Python将文件下载到带有登录名的门户网站?

基于索引值的Pandas DataFrame条件填充

NumPy中条件嵌套for循环的向量化

如何防止Pandas将索引标为周期?