C#中如何控制播放音乐的声音大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何控制播放音乐的声音大小相关的知识,希望对你有一定的参考价值。

参考技术A C# code:
[DllImport("winmm.dll", SetLastError=true, CallingConvention=CallingConvention.Winapi)] public static extern int waveOutSetVolume(int uDeviceID, int dwVolume); //Call waveOutSetVolume( 0, 100 );

第一个参数可以为0,表示首选设备
第二个参数为音量:0xFFFF为最大,0x0000为最小,其中高位(前两位)表示右声道音量,低位(后两位)表示左声道音量
int iVolume=50;//音量大小(0-100)
int left =Convert .ToInt32 ( Convert.ToInt32(iVolume));
int right = left;
int volume = (left << 8) | right ;
waveOutSetVolume(0,volume );本回答被提问者采纳
参考技术B 直接操作我们系统声音大小吧

如何在 heroku 上使用音乐不和谐机器人播放声音

【中文标题】如何在 heroku 上使用音乐不和谐机器人播放声音【英文标题】:How to play sound with a music discord bot on heroku 【发布时间】:2019-06-27 16:22:56 【问题描述】:

我在 discord.js 中创建了一个 Discord Music Bot,我已经安装了 ffmpeg,一切似乎都正常,但是当我执行播放命令时,bot 加入频道,发送消息,但不播放任何内容,我已经检查了控制台,它没有记录任何内容。 我知道这不是代码问题,因为它在本地完美运行,问题是当我尝试使用 heroku 时,我认为这可能是 opusscript 问题,但我不知道。

【问题讨论】:

【参考方案1】:

您好,如果您发布代码示例和详细的错误日志会更好。据我了解,

我可以告诉您,您可以轻松播放无法从 YouTube 下载的 mp3 文件,而无需任何依赖项(FFMPEG 除外)。您可能需要导航至https://discord.js.org 来查看文档:)

这里是 Discord.js 文档中主题的完整链接:https://discord.js.org/#/docs/main/stable/topics/voice

我再说一遍,我不太了解你的情况。提供异常行为和一些代码示例。

另一方面,如果您使用 master 分支并使用稳定版本的代码,您的代码可能无法工作。请检查您的分支,并针对破坏代码的更新进行必要的更改。

【讨论】:

【参考方案2】:

我在这里找不到相关的代码,因为它在我的本地主机中完美运行,但是当我开始在 Heroku 托管它时,什么也没有发生。 在这里你有它,也许有一个错误,但正如我所说,我认为问题出在 opusscript 或 node-opus。 Here are my Heroku buildpacks

这是我的代码:

const ytdl = require('ytdl-core');

let voiceChn = message.member.voiceChannel;

if(!voiceChn) return message.channel.send('¡Join a voice channel first!.'); 

if(!args) return message.channel.send('Add a youtube URL to play it.');

voiceChn.join()
    .then(connection => 
        const url = ytdl(args.join(' '),  filter : 'audioonly' );

        const dispatcher = connection.playStream(url);

        message.delete();

        message.channel.send('Now playing : '+ args);

    ).catch(console.error);

【讨论】:

【参考方案3】:

对于它的价值,我看到了一个非常相似的问题。我的机器人应该加入频道,播放来自 S3 存储桶(已公开)的声音片段,然后离开。 这是我的代码:

async function executePlaySoundCommand(message, filePath) 
  try 
    const voiceChannel = message.member.voiceChannel;
    const connection = await voiceChannel.join();
    console.log(`filePath: $filePath`);
    const file = `$process.env.S3_URL/$filePath`;
    console.log(`file: $file`);
    const dispatcher = await connection.playArbitraryInput(file);
    console.log('Playback finished');
    dispatcher.on('end', () => 
      voiceChannel.leave();
    );
   catch (err) 
    console.log(err);
  

机器人将在本地加入频道,播放声音,然后按预期离开。然而在 heroku 中,机器人会加入频道,然后立即离开。 以下是来自 heroku 的净化日志:

Executing <command-name> command
filePath: <audio-file>.mp3
file: https://s3-eu-west-1.amazonaws.com/<s3-bucket-name>/<audio-file>.mp3
Playback finished

我不认为我的代码有什么问题(?),查看ffmpeg 协议,看看我是否遗漏了什么。

【讨论】:

刚刚在另一个堆栈溢出帖子中找到了这个。 Heroku isn’t a virtual server, it does not bear well with the opus library. It’s recommended by the discord developers community to not use heroku to host bots since the platform isn’t meant for bot hosting as its unstable (downtimes) and doesn’t support opus (without extended modifications).从这里(***.com/questions/52372170/…)

以上是关于C#中如何控制播放音乐的声音大小的主要内容,如果未能解决你的问题,请参考以下文章

我想在我的 Android 游戏中播放音乐以及分析声音数据。使用 Unity C#

同时播放两个声音c#

C#播放背景音乐常用的四种方式

unity怎么播放多个音乐

如果设备已经在播放音乐,如何防止我的应用播放声音

IOS如何在后台播放音乐声音并暂停当前播放的音乐应用程序