用Naudio或Win API同时播放多个.wav文件
嗨,所有我都有一个应用程序,该应用程序通过来自不同UDP端口的多个线程同时接收WAV数据: 是否可以同时使用Wave Out API? 同时播放所有接收的WAV数据 是否可以同时使用Naudio同时播放所有收到的WAV数据? Naudio对象是否安全? 同时播放我的意思是,当媒体播放器中播放的文件和YouTube中的某些内容同时播放时,您可以同时听到扬声器的两种声音: 任何帮助或提示将不胜感激.预先感谢. 解决方案 是的,您可以使用多个WaveOut实例(一个用于每个流)进行操作,也可以使用单个浪潮进行操作并自己混合(例如,使用MixingSample -Provider) 其他解决方案 我认为您可以做到. 本教程可以为您提供帮助: 它解释了如何集成视频,但我认为二手库可以播放音频
12 2024-04-20
编程技术问答社区
C语言中的PlaySound会发出提示音,但不能播放wav文件
在c中,我的PlaySound没有扔任何错误...而不是播放我想要的文件,而只是发出哔哔声. 有什么建议? 我尝试了: PlaySound("song1.wav", NULL, SND_ALIAS | SND_APPLICATION); 和: PlaySound("song1.wav", NULL, SND_FILENAME); 但是我得到了相同的结果. 解决方案 而不是像您完成的相对路径: PlaySound("song1.wav", NULL, SND_FILENAME); 使用类似的绝对路径: PlaySound("F:\\path\\to\\your\\song\\song1.wav", NULL, SND_FILENAME); 其他解决方案 引用API描述的报价,请访问msdn.microsoft.com: PlaySound搜索以下目录以获取声音文件: 当前目录; Windows目录; Windows
10 2024-04-06
编程技术问答社区
用SND_MEMORY在PlaySound中播放操纵的音量水平
我正在面临播放WAV文件的问题,该文件首先读取为字节数组并将其修改以降低其音量级别.我为实现它而制作的片段取自各种网络来源. 但是,当我通过Visual Studio 2013 Community运行程序时,它运行良好. 但是,在发行X64模式下生成的可执行文件时,它会产生运行时错误,我听不到任何声音(也无法使用try-catch捕获). 我希望我的可执行文件工作,但仅当我评论行 - > p [i] =(__int8)(((float)p [i] * fvolume)时,它才能起作用. 我无法理解为什么EXE无法正常工作,而Visual Studio可以在Release X64模式下轻松运行它. Wav文件被操纵: 感谢您的关注! void PlaySound_Volume(string fname, float fVolume = 1, bool async = false){ DWORD dwFileSize; BYTE* pFile
10 2024-03-19
编程技术问答社区
如何用Delphi播放单音或自定义波?
我查找了一些代码,似乎一切都在创建一些数学功能波,但是我想单个音调或用自定义单调制成的自定义波. 我读了 我如何产生不同频率的连续色调? 与我的回答很近. 假设我将像上面的链接中使用WaveWrite一样,我似乎无法弄清楚如何计算Hwaveout中每个样本的AMP/FREQ. 在链接中的代码中,它是这样完成的: Samples[i] := round(vol*sin(omega*t)); 假设我想要15kHz freq单调带有某些放大器(没关系),如何计算样本[1]? 解决方案 可以将连续的(时间)正弦波定义为A*sin(2*PI*f*t),其中A是一定的振幅,PI是,PI是3.14 ...,f是音调频率赫兹(Hertz)和t是秒的时间. 现在,由于您没有连续的时间,因为您的时间是离散的,因此您代替t并获得t并获得A*sin(2*PI*f*dt*i),其中dt是样本之间的时间或dt dt i是样本号.您可以将其拼写为A*sin(2*PI*(f/Fs)
2 2023-12-06
编程技术问答社区
在Win32 SDK中使用PlaySound时,如何检测声音是否已经播放完毕?
我正在使用Win32 SDK的PlaySound函数来播放波浪声文件.目前,我有以下代码行: PlaySound(szFile,NULL,SND_FILENAME ); 但是现在我想知道,如何检测波文件完成播放的时间?波浪停止播放时,我想更改按钮的文字. 解决方案 弹奏的功能非常有限.在我从事的产品中,我们在DirectSound的基础上构建了一个媒体播放库,以克服限制.在许多事情中,它涉及编写WAV文件解析器和螺纹代码,以将PCM样本流到直接缓冲区中.不是为了晕倒. 您可以走这条路线,但这是一些更简单的建议. 如果您知道您正在播放的WAV文件的长度,则可以使用SND_ASYNC标志调用弹奏.安排一个计时器在估计的声音应该结束播放的时间内开火.如果您不知道WAV文件的长度,则可以编写一个解析器来读取文件的标题.将采样率和格式从" FMT"块与数据块中的字节数进行比较以计算文件的时间长度. 或....创建一个专用线程,以发出弹奏呼叫(无SND_ASYNC
4 2023-12-05
编程技术问答社区
PlaySound在Visual Studio中工作,但在独立的exe中不工作。
我正在尝试使用Visual Studio在C ++中播放WAV文件. 我将文件" my.wav"放在我的项目目录中,并使用代码 PlaySound(TEXT("my.wav"), NULL, SND_FILENAME | SND_SYNC); 我按下播放按钮(或F5甚至Ctrl-f5),并且声音正常. 我打开命令提示 注意:理想情况下,声音会捆绑在EXE中,因此我可以分发EXE,并且可以使用.我尝试将其放入资源中.rc,但是我在所有示例中看到的代码 PlaySound( (char*)IDR_WAVE1, NULL, SND_RESOURCE | SND_SYNC ); 甚至没有为我编译.抱怨IDR_WAVE1即使这是我的资源的名称. 解决方案 我在老派Win32上有点生锈,但这是这样的: 在您的文件中包含资源. PlaySound(MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_RESOURCE | SND_SYN
10 2023-12-04
编程技术问答社区
如何使用Windows API在C++中播放声音?
我尝试在编码中播放音乐文件,但失败了.我将音乐文件放在保存.cpp文件的同一文件夹中. 有人可以帮我吗? 我的代码是: #include #include int main() { PlaySound("kenny g.WAV", NULL, SND_ASYNC); } 解决方案 您需要使用绝对路径,请确保您发送文件名(使用SND_FILENAME标志),并暂停程序足够长以播放声音文件(例如,使用GetChar()).您需要在项目设置中链接winmm.lib库,以及#include windows.h and mmsystem.h. #include #include int main() { PlaySoundA((LPCSTR) "C:\\kenny g.WAV", NULL, SND_FILENAME | SND_ASYNC
8 2023-12-04
编程技术问答社区
Visual C++或C语言播放声音
我正在开发用C(Visual C ++)编写的简单游戏 我想知道是否有一种播放声音的方法, 谢谢 (我正在使用Visual Studio) 解决方案 看一下功能. 如果您使用SND_ASYNC标志呼叫PlaySound(),则该功能在开始声音后立即返回. 例如: #include #include PlaySound(L"test.wav", NULL, SND_ASYNC | SND_FILENAME); 您还必须在项目设置中添加Winmm.lib 这是一个应该有效的快速示例: #pragma once #include "stdafx.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { if(!PlaySound(L"test.wav", NULL, SND_AS
4 2023-11-20
编程技术问答社区
如何使用playsound()在VB6中播放声音
如何使用Playound()播放.WAV文件?我弹奏(声音),但我一直遇到错误"参数不是可选". 还如何停止播放声音? 解决方案 您在问题中没有向我们展示任何代码,所以我只需要猜测可能是什么问题. 首先,PlaySound函数需要在您的VB 6代码中正确声明: Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" _ (ByVal lpszName As String, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long 您需要一些常数,您可以使用API​​ Viewer应用程序轻松找到它们.这是我在没有安装VB 6的情况下删除网
12 2023-11-15
编程技术问答社区
播放随机声音而不重复
我想拥有一个图像,当单击时,播放一个声音剪辑(从声音夹的列表中)而不重复相同的剪辑(直到用户浏览了整个声音列表.) ) 目前我的代码可以随机播放我的任何声音剪辑,并重复很多. 如果有人知道如何调整它以使其至少在重复之前至少一次播放列表中的每个剪辑! 这是我目前正在使用的代码: function playSounds() { var sounds = [ "AUDIO URL", "AUDIO URL", "AUDIO URL", "AUDIO URL", "AUDIO URL" ]; var index = Math.floo
24 2023-06-13
编程技术问答社区
在停止后使音频'恢复'?
我正在构建基于文本的RPG,并且我设法在没有问题的情况下向我的程序添加了一些.wav文件,我也可以在没有问题的情况下正确播放它们. 目前会发生什么? i有2 .wav文件,1个通用背景音乐(newbieMelody.wav),另一个用于升级时(levelUp.wav).因此,首先,当我运行游戏时,我们从newbieMelody.wav文件中开始播放,就像: : #pragma comment(lib, "winmm.lib") #include "Quiz.h" #include #include #include int main() { PlaySound(TEXT("C:\\Users\\User\\Documents\\GIT\\TextBased\\QuizApplication\\playSound\\newbieMelody.wav"),
62 2023-03-01
编程技术问答社区
如何在客户端运行一个.wav。ASP.NET
我有一个使用Soundplayer类播放波浪文件的应用程序.但是,当我在IIS中发布该应用程序时,文件将不会播放. 要使用Soundplayer类,我添加了一个参考Windows.dll,它可能会干扰? public void PlaySound() { try { while (1 == 1) { List distinctMusic = GetMusicFile.Distinct().ToList(); for (int i = 0; i
24 2023-01-02
编程技术问答社区
如何在Python脚本的后台播放音频(playsound)?
我只是为了好玩而编写一个小型 Python 游戏,并且我有一个功能可以完成开头的叙述. 我试图让音频在后台播放,但不幸的是 mp3 文件在功能继续之前先播放. 如何让它在后台运行? import playsound def displayIntro(): playsound.playsound('storm.mp3',True) print('') print('') print_slow('The year is 1845, you have just arrived home...') 另外,有没有办法控制播放声音模块的音量? 我应该补充一点,我使用的是 Mac,我并不热衷于使用 playsound,它似乎是我唯一可以使用的模块. 解决方案 在windows中: 使用 winsound.SND_ASYNC 异步播放它们 import winsound winsound.PlaySound("filename", winsound.SND_AS
1424 2022-08-21
编程技术问答社区
Python 3 没有名为 AppKit 的模块
我正在尝试在 python 中运行音频文件 from playsound import playsound def main(): playsound('audio.mp3') main() 但是,我不断收到以下错误: File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/playsound.py", line 55, in _playsoundOSX from AppKit import NSSound ImportError: No module named 'AppKit' 我在 macOS 10.12.6 上使用 Python 3.5.4.我尝试通过 pip 安装它,但返回此错误: Using cached AppKit-0.2.8.tar.gz Requirement already satisfied: flask in /Lib
596 2022-08-21
编程技术问答社区
用PlaySound()API同时播放多个文件
我最近发现使用 Win32 API PlaySound() 函数播放 wav 文件是多么容易. 我目前正在我的游戏中为我的背景音乐实现它.我还打算每次我的分数增加一时都使用它,不幸的是,当我这样做时,它会播放乐谱声音,然后停止背景音乐...... 是否可以同时播放两个 wav 文件? 解决方案 您可以使用 SND_NOSTOP 标志来实现此目的.但是,如果您正在编写游戏,最好使用 DirectX 技术来获得声音.
338 2022-07-19
编程技术问答社区