标签: soundplayer

从内存中播放wav/mp3

我从文件播放mp3/wav来创建推送效果.但是,在基于Atom CPU的平板电脑上,触摸按钮时会有延迟.

我会尝试从内存而不是文件系统播放wav/mp3.任何人都可以提供代码片段或线索吗?

System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = System.Windows.Forms.Application.StartupPath + "\\beep-7.wav";
player.Play();
Run Code Online (Sandbox Code Playgroud)

.net c# memory winforms soundplayer

10
推荐指数
1
解决办法
1万
查看次数

SoundPlayer导致内存泄漏?

我正在用C#编写一个基本的写作应用程序,我希望程序能够在输入时输出打字机声音.我已经将我的RichTextBox上的KeyPress事件挂钩到一个函数,该函数使用SoundPlayer每次按下一个键时播放一个简短的wav文件,但是我注意到一段时间后我的计算机慢慢爬行并检查我的进程,audiodlg .exe正在使用5 GIGABYTES的RAM.

我正在使用的代码如下:

我将SoundPlayer初始化为程序启动时的全局变量

SoundPlayer sp = new SoundPlayer("typewriter.wav")
Run Code Online (Sandbox Code Playgroud)

然后在KeyPress事件上我只是打电话

sp.Play();
Run Code Online (Sandbox Code Playgroud)

有谁知道导致大量内存使用的原因是什么?该文件不到一秒钟,所以它不应该堵塞太多东西.

c# audio memory-leaks soundplayer

8
推荐指数
1
解决办法
2998
查看次数

播放在项目中具有相对路径的 wav 文件

我在相对路径和 wav 文件的复制方面遇到了一些问题。我有这个简单的代码,它完美地工作:

SoundPlayer player = new SoundPlayer();
player.SoundLocation = @"C:\Users\Admin\Documents\Visual Studio 2012\Projects\TestProject\TestProject\Data\Sounds\car.wav";
player.Play();
Run Code Online (Sandbox Code Playgroud)

我想以某种方式使用相对路径播放该文件,但我没有成功:

SoundPlayer player = new SoundPlayer();
player.SoundLocation = @"Data\Sounds\car.wav";
player.Play();
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# wav relative-path soundplayer visual-studio-2012

5
推荐指数
1
解决办法
1万
查看次数

powershell 'system.windows.media.mediaplayer' Register-ObjectEvent

我正在尝试使用“system.windows.media.mediaplayer”媒体播放器来播放声音文件列表,但是我无法让媒体播放器知道何时播放下一个声音文件。

我正在尝试使用“MediaEnded”事件句柄来确定声音文件何时结束,然后移至下一个声音文件。但我无法正确触发事件句柄,有人可以告诉我哪里出错了吗?这是我正在使用的代码:

Add-Type -AssemblyName presentationCore 
$mediaplayer=New-Object system.windows.media.mediaplayer
Register-ObjectEvent -InputObject $mediaplayer -SourceIdentifier media -EventName BufferingStarted -Action {write-host "media stopped"}
$mediaPlayer.Open('C:\Windows\Media\chimes.wav')
$mediaplayer.Play()
sleep 3
$mediaPlayer.Open('C:\Windows\Media\chimes.wav')
$mediaplayer.Play()
Run Code Online (Sandbox Code Playgroud)

我现在只是播放任何声音文件来尝试触发事件句柄。

请帮我 !

powershell handle soundplayer

5
推荐指数
1
解决办法
5828
查看次数

在控制台上播放声音 - C#

我正在 C# 上编写一个控制台应用程序,我想在连续显示文本时播放声音。这就是我所做的:

static SoundPlayer typewriter = new SoundPlayer("typewriter");
static public void print(string str, int delay)
    {
        Thread skipThread = new Thread(skipText);
        typewriter.PlayLooping();
        textgap = delay;
        foreach (char c in str)
        {
            Console.Write(c);
            if (textgap != 0)
                Thread.Sleep(textgap);

        }
        typewriter.Stop();

    }
Run Code Online (Sandbox Code Playgroud)

typewriter.wav导入到我的项目旁边的.cs文件中,我选择了copy always. 当我运行此代码时,开始播放声音时会弹出一个错误,说Please be sure a sound file exists at the specified location. 这里有什么问题?

编辑:根据凯文 J 的回答将我的代码更改为以下内容。

static SoundPlayer typewritter;

    public static void Load()
    {
        Assembly assembly;
        assembly = Assembly.GetExecutingAssembly();
        typewritter = new …
Run Code Online (Sandbox Code Playgroud)

c# audio console console-application soundplayer

5
推荐指数
1
解决办法
2万
查看次数

使用SoundPlayer播放声音

我正在尝试播放特定的声音.但是,我似乎无法访问我在解决方案资源管理器中添加的文件.(我有一个名为"Sounds /"的文件夹,里面有几个.wav-soundeffects)

当我将文件路径硬编码到我的硬盘上的随机固定位置时,它可以正常工作.此外,当我将我的资源放在我的"bin/debug /"文件夹中时,它工作正常(这是我最接近AppDomain.CurrentDomain.BaseDirectory函数的工作相对路径).

在使用我在解决方案资源管理器中添加的文件时,如何使SoundPlayer工作?

c# audio relative-path solution-explorer soundplayer

5
推荐指数
1
解决办法
1756
查看次数

如何知道SoundPlayer播放声音的时间

我使用以下代码在内存中动态创建频率音调并异步播放音调:

public static void PlayTone(UInt16 frequency, int msDuration, UInt16 volume = 16383)
{
    using (var mStrm = new MemoryStream())
    {
        using (var writer = new BinaryWriter(mStrm))
        {
            const double tau = 2*Math.PI;
            const int formatChunkSize = 16;
            const int headerSize = 8;
            const short formatType = 1;
            const short tracks = 1;
            const int samplesPerSecond = 44100;
            const short bitsPerSample = 16;
            const short frameSize = (short) (tracks*((bitsPerSample + 7)/8));
            const int bytesPerSecond = samplesPerSecond*frameSize;
            const int waveSize = 4; …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous soundplayer

4
推荐指数
1
解决办法
6563
查看次数

C# windows 窗体应用程序音量滑块

我有一个使用声音播放器播放 .wav 文件的应用程序,我查找了它,但找不到更改其播放音量的方法。我正在寻找的是通过独立更改文件的音量程序或有一个滑块来更改 Windows 音量混合器中窗口本身的音量。谢谢!

public void loadSound()
{
    sp.Load();
    sp.Play();
}

private void timer1_Tick(object sender, EventArgs e)
{    
    if (BarTimer.Value < BarTimer.Maximum)
    {
        BarTimer.Value = BarTimer.Value + 1;
    }

    if(BarTimer.Value==BarTimer.Maximum)
    {
        loadSound();
        timer1.Stop();
        BarTimer.Value = BarTimer.Minimum;
    }
 }
Run Code Online (Sandbox Code Playgroud)

c# windows wav winforms soundplayer

3
推荐指数
1
解决办法
4530
查看次数

遍历列表C#

我正在玩一些C#,我正在编写钢琴应用程序.

每当用户点击钢琴音符时,我将声音的位置(.wav)存储到列表中...以下是button1_MouseDown方法中的一些代码.

if (e.Button == MouseButtons.Left)
   {
       SoundPlayer sp = new SoundPlayer();
       string musName = Convert.ToString(mk.pitch);
       string loc = @"D:\OneDrive\Year 2 Semester 1\OOP\Notes-Sound files\Notes-Sound files\mapped\" + musName + ".wav";
       sp.SoundLocation = loc;
       sp.Play();
       music.Add(loc);
    }
Run Code Online (Sandbox Code Playgroud)

现在,我希望遍历循环以一次性播放所有单击的键.我这样做如下(当用户点击播放按钮时)

int k = 0;
for (k = 1; k < music.Count; k++)
{
   SoundPlayer sp = new SoundPlayer();
   sp.SoundLocation = music[k];
   sp.Play();
 }
Run Code Online (Sandbox Code Playgroud)

问题是,每当点击播放按钮时,只播放按下的最后一个音符.但是,当我调试时,不知何故,所有音符都被播放.有任何想法吗?

c# for-loop list piano soundplayer

2
推荐指数
1
解决办法
246
查看次数

不支持 URI 前缀

我正在尝试使用以下方法加载和播放波形文件:

SoundPlayer simpleSound = new SoundPlayer(@"pack://application:,,,/MyAssembly;component/Sounds/10meters.wav");
            simpleSound.Play();
Run Code Online (Sandbox Code Playgroud)

没有成功。我得到一个System.NotSupportedException:(见下文。

System.NotSupportedException: The URI prefix is not recognized.
   at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
   at System.Net.WebRequest.Create(Uri requestUri)
   at System.Media.SoundPlayer.LoadSync()
   at System.Media.SoundPlayer.LoadAndPlay(Int32 flags)
   at System.Media.SoundPlayer.Play()
Run Code Online (Sandbox Code Playgroud)

我查看了谷歌并试图找到解决方案,但没有任何效果。使用直接路径播放文件工作正常

SoundPlayer simpleSound = new SoundPlayer(@"D:\Projects\MyAssembly\Sounds\10meters.wav");
simpleSound.Play();
Run Code Online (Sandbox Code Playgroud)

我还检查了 MyAssembly 内容,资源在那里。难道SoundPlayer不支持包装或有什么我不这样做是否正确?

c# wpf soundplayer

1
推荐指数
1
解决办法
6233
查看次数