V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
woshipanghu
V2EX  ›  程序员

electron 打包后遇到音频无法播放

  •  
  •   woshipanghu · 2023-01-29 23:29:34 +08:00 · 1443 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。

    electron+vue

    在开发的时候音频都是正常播放的

    但是打包之后音频就无法正常播放了 使用的是 audio 标签

    打开控制台报: DOMException: Failed to load because no supported source was found.

    加载的音频文件的请求也是成功 不过很奇怪 大小只有 0kb

    解决了一天了还没搞定 有能提供下解决思路吗?

    第 1 条附言  ·  2023-01-30 21:20:52 +08:00
    暂时解决方案:
    用小一点的音频 打包后可以播放
    第 2 条附言  ·  2023-01-31 10:00:34 +08:00
    13 条回复    2023-01-30 17:17:06 +08:00
    jackytsu
        1
    jackytsu  
       2023-01-30 08:40:45 +08:00
    看看是不是没有 ffmpeg.dll 这个文件
    jackytsu
        2
    jackytsu  
       2023-01-30 08:42:53 +08:00
    Google 了一下,也有可能是这个问题: https://juejin.cn/post/7033172482815328270#heading-9
    woshipanghu
        3
    woshipanghu  
    OP
       2023-01-30 09:40:45 +08:00
    @jackytsu 应该是我描述的不清楚 播放页面是在 html audio 标签里的播放的 ffmpeg 这个应该用不到
    你上面的那篇文章也按他的修改也测试过了 无是没效果
    electron 加载远程的音频是没问题的 但是对加载本地音频文件的某个限制,控制台我也打开看了 地址没问题有文件 加载过来的内容大小是 0kb
    感觉像是 electron 这个框架对本地加载的文件做了某些限制
    我试过换小一点的音频文件 也是一样加载不到
    jackytsu
        4
    jackytsu  
       2023-01-30 09:59:31 +08:00
    不知道你的 audio 标签里面的 src 是怎么写的
    官方有个类似的 issue 可以试试: https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/1798#issuecomment-1185462737
    woshipanghu
        5
    woshipanghu  
    OP
       2023-01-30 10:16:56 +08:00
    @jackytsu 好的 非常感谢 我试试看
    Yeen
        6
    Yeen  
       2023-01-30 10:30:37 +08:00
    本地音频资源没打进去?
    woshipanghu
        7
    woshipanghu  
    OP
       2023-01-30 11:02:16 +08:00
    @Yeen 打包进去了 文件检查了大小也没问题 打开控制台请求返回的 200 如果没加载到的话就是 404
    mlmdflr
        8
    mlmdflr  
       2023-01-30 11:49:52 +08:00
    是否能提供一个最小复现的仓库
    woshipanghu
        9
    woshipanghu  
    OP
       2023-01-30 13:31:17 +08:00
    @mlmdflr
    import clockUrl from '../assets/media/clock.wav'
    <audio :src="clockUrl" ref='audio' loop />
    调用 js 播放
    const audioDom = this.$refs.audio
    audioDom.setAttribute = 'anonymous'
    audioDom.currentTime = 0;
    audioDom.play()
    .then(()=>{
    console.log('ppppplay')
    })
    .catch(error => {
    console.log(error)
    })

    播放音频相关的代码
    Yeen
        10
    Yeen  
       2023-01-30 15:15:46 +08:00
    你把音频资源放到 app.asar.unpacked 呢,不要放到 asar 包里试试。
    Yeen
        11
    Yeen  
       2023-01-30 15:16:36 +08:00
    @Yeen yourappdir/resources/app.asar.unpacked/
    woshipanghu
        12
    woshipanghu  
    OP
       2023-01-30 17:15:20 +08:00
    @Yeen 打包的时候 asarUnpack: ["**/*" ],
    在 app 下面能看到音频文件 但是还是播放不了 真的奇怪了
    woshipanghu
        13
    woshipanghu  
    OP
       2023-01-30 17:17:06 +08:00
    @Yeen Uncaught (in promise) DOMException: Failed to load because no supported source was found. 还是一样的报错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2479 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:47 · PVG 23:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.