首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WMP得不到声音

从WMP得不到声音
EN

Stack Overflow用户
提问于 2016-01-29 00:22:05
回答 1查看 543关注 0票数 0

我已经在我的类构造函数中尝试过了,以测试windows media player是否能从.exe资源文件夹中的文件中播放声音(特别是mp3)。它正确地将文件写入临时目录,如果从WMP和VLC中的文件夹启动,则文件播放正常。

但我仍然无法在应用程序中播放声音。

代码语言:javascript
复制
 class AudioPlayer
{
    private static string _tempFolder; 
    private static string _filename;
    private string _musicPath;
    public WindowsMediaPlayer _wmp;

    public AudioPlayer()
    {
        _tempFolder = Path.GetTempPath();
        _filename = "Music1.mp3";
        _musicPath = Path.Combine(_tempFolder,_filename);
        CopyResource(_musicPath, Resources.Music1);
        _wmp = new WindowsMediaPlayer();
        _wmp.URL = _musicPath;
        _wmp.controls.play();
    }

    private void CopyResource(string resourceName, byte[] file)
    {
        File.WriteAllBytes(resourceName, file);
    }
}

这会是一个线程问题吗?我不这么认为,因为这是一个创建音频播放器的表单,而不是一个控制台应用程序,所以它不会立即终止。我也没有收到指示回放问题的错误。

EN

回答 1

Stack Overflow用户

发布于 2016-01-29 02:42:44

我从主程序中穿出了操作和音频播放器,它工作得很好。我可能会补充说,.Wav对于文件大小来说是非常低效的,但是WMP加载.mp3文件太慢了。我想这在很大程度上与文件压缩有关,在适当的文件大小下牺牲了速度。最终解决方案是这样的。

代码语言:javascript
复制
class AudioPlayer
{
    private static string _tempFolder; 
    private static string _filename;
    private string _musicPath;
    public WindowsMediaPlayer _wmp;

    public AudioPlayer()
    {
        _tempFolder = Path.GetTempPath();
        _filename = "Music1.mp3";
        _musicPath = Path.Combine(_tempFolder,_filename);
        CopyResource(_musicPath, Resources.Music1);
        _wmp = new WindowsMediaPlayer();
        _wmp.URL = _musicPath;

    }

    private void CopyResource(string resourceName, byte[] file)
    {
        File.WriteAllBytes(resourceName, file);
    }

    public void Play()
    {
        _wmp.controls.play();
    }

    public void Stop()
    {
        _wmp.controls.stop();
    }
}

我从程序Main调用它,就像这样。

代码语言:javascript
复制
_ap = new AudioPlayer();
_audioThread = new Thread(_ap.Play);
_audioThread.Start();

我打电话给你

代码语言:javascript
复制
_ap.Stop();
_audioThread.Join();

在程序执行过程中,保存并退出方法来终止它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35066626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档