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

如何将音频文件内容嵌入.py文件(如Base64编码)解决exe跨机播放问题?

打包exe后音频路径问题的解决方案:Base64嵌入音频

完全可以通过Base64编码将音频内容嵌入Python代码中,彻底解决打包后跨机器的路径问题,具体实现步骤如下:

1. 将音频文件转为Base64编码字符串

写一个临时脚本把你的mysound.mp4转换成Base64字符串并保存为单独的Python模块:

import base64

# 读取音频文件并编码
with open("mysound.mp4", "rb") as audio_file:
    encoded_audio = base64.b64encode(audio_file.read()).decode("utf-8")

# 保存为可导入的模块
with open("audio_data.py", "w") as f:
    f.write(f"EMBEDDED_AUDIO = '{encoded_audio}'")

运行这个脚本后,会生成audio_data.py文件,里面存储了音频的Base64编码字符串。

2. 修改主脚本,播放嵌入的音频

因为playsound库需要读取文件路径(无法直接解码Base64字符串播放),所以我们需要把解码后的音频写入临时文件,播放完成后再删除临时文件:

import base64
import tempfile
import os
from playsound import playsound
from audio_data import EMBEDDED_AUDIO

def play_audio():
    # 解码Base64字符串为音频字节
    audio_bytes = base64.b64decode(EMBEDDED_AUDIO)
    
    # 创建临时音频文件(避免路径问题)
    with tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") as temp_file:
        temp_file.write(audio_bytes)
        temp_path = temp_file.name
    
    try:
        # 播放临时文件
        playsound(temp_path)
    finally:
        # 播放完成后清理临时文件
        os.unlink(temp_path)

# 调用播放函数
play_audio()

3. 打包为exe

使用PyInstaller打包时,直接打包你的主脚本即可,不需要额外指定音频文件(因为音频已经嵌入在audio_data.py中,会被一起打包):

pyinstaller --onefile your_main_script.py

注意事项

  • 建议使用playsound==1.2.2版本,这个版本在Windows上的兼容性更好,避免播放失败的问题。
  • 临时文件会自动在播放完成后删除,不会留下垃圾文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:50:28