如何播放.m4s文件并将它们转换为Discord Bot的二进制流

问题描述

我想下载BBC广播2并将其流式传输到不和谐的服务器。每个请求均为https://as-dash-uk-live.akamaized.net/pool_904/live/uk/bbc_radio_two/bbc_radio_two.isml/dash/bbc_radio_two-audio=320000-250636302.m4s,但是时间戳会更改,并且会定期删除内容。我还发现了一个.dash文件https://as-dash-uk-live.akamaized.net/pool_904/live/uk/bbc_radio_two/bbc_radio_two.isml/dash/bbc_radio_two-audio=320000.dash,这似乎是要求的。但是我找不到如何通过discord机器人将其发送到discord服务器的方法。我的代码

const axios = require('axios')


module.exports = {
    play: async function (guild,message) {
        const serverQueue = {};
        const voiceChannel = message.member.voice.channel
        serverQueue.connection = await voiceChannel.join();
        plays(guild)
        
        async function plays(guild) {
            let data1 = new Date(1353439725);
            let data2 = new Date(Date.Now()/1000);
            console.log(`https://as-dash-uk-live.akamaized.net/pool_904/live/uk/bbc_radio_two/bbc_radio_two.isml/dash/bbc_radio_two-audio=320000-${Math.floor((data2 - data1))-4000}.m4s`)
            const dispatcher = serverQueue.connection.play((await axios.get(`https://as-dash-uk-live.akamaized.net/pool_904/live/uk/bbc_radio_two/bbc_radio_two.isml/dash/bbc_radio_two-audio=320000-${Math.floor((data2 - data1))-4000}.m4s`)).data)
                .on('finish',() => {
                    console.log('Music ended!');
                    plays(guild);
                    return
                })
                .on('error',error => {
                    console.error(error);
                    plays(guild);
                    return
                });
            dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
        }
    }
}

但是,没有音频播放,并且总是调用音频结束事件。我是不是真的很蠢?或者有办法做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)