You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04下如何通过Pyglet正确加载运行WAV文件?

解决pyglet加载WAV文件的格式异常问题

我之前在pyglet 1.x版本搭配Ubuntu环境时,也碰到过几乎一模一样的WAV加载报错,结合你的环境和错误信息,给你几个亲测有效的解决思路:

一、针对ffmpeg转换的WAV提示「Not a WAVE file」的问题

pyglet的WaveSource只支持PCM编码的标准WAV文件,而ffmpeg默认转换的WAV可能会包含一些非标准的元数据或者编码格式,导致pyglet无法识别。你需要在转换时明确指定PCM编码参数,用这条命令重新转换:

ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 output.wav

参数说明:

  • -acodec pcm_s16le:强制使用16位小端PCM编码(pyglet最兼容的格式)
  • -ar 44100:设置采样率为44.1kHz(标准音频采样率)
  • -ac 2:设置双声道(如果需要单声道可以改成1)

转换完成后再用pyglet加载,应该就能识别为合法的WAVE文件了。

二、针对下载的WAV提示「Size of format chunk is incorrect」的问题

这个报错是因为下载的WAV文件的RIFF格式不符合pyglet的严格校验逻辑——pyglet 1.3.2的riff.py会检查WAV的格式块(fmt chunk)大小是否为标准的16字节(PCM格式)或18字节(带扩展信息的PCM),而很多网上下载的WAV可能是经过压缩、修改过的非标准变种。

解决方法同样是将这些文件重新转成标准PCM WAV:

  1. 用上面的ffmpeg命令重新转换下载的WAV文件(即使原文件是WAV,重新转一次也能修复格式问题)
  2. 或者用音频编辑工具(比如Audacity)打开文件,选择「导出音频」,格式选「WAV (Microsoft)」,编码选「16位PCM」,导出后的文件就能被pyglet正常加载。

额外注意事项

  • 确认你的代码中pyglet.media.load()的参数:如果是小音频文件(比如音效),streaming=False是没问题的;如果是大文件,建议设为streaming=True避免内存占用过高。
  • 虽然你已经设置了音频后端选项,但如果后续播放时还有问题,可以检查Ubuntu上的pulseaudio或openal服务是否正常运行,不过当前的报错都是格式问题,和后端关系不大。

内容的提问来源于stack exchange,提问作者Yuriy Leonov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:32:10