C# 播放 MPEG 音频文件

标签 c# ffmpeg media-player webm m4a

我正在寻找一种在 C# 中播放 mpeg 音频文件的方法。对于 mp3,情况很简单:

    System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer();
    player.Open(new System.Uri(File));
    player.Play();

我正在寻找一种以类似简单的方式播放 m4a 或 webm 音频文件的方法。现在我很绝望,我正在尝试寻找解决方法:

        String path = Path.GetFullPath("./x.m4a");
        Process process = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.FileName = "ffplay.exe";
        startInfo.Arguments = "-vn -showmode 0 " + path;
        process.StartInfo = startInfo;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.StartInfo.CreateNoWindow = true;
        process.Start();

目前我可以播放 x.m4a 文件,但退出文件时它不会停止。而且我担心我对轨道流没有太多控制权。是否有任何不同的方法(例如使用 NuGet 包)来播放 mpeg 文件?

最佳答案

好吧,我找到办法了。显然 NAudio 库可以完成这项工作,但您需要安装 MPEG4 层的编解码器。之后就很简单了:

NAudio.Wave.WaveOut wave = new NAudio.Wave.WaveOut();
wave.Init(fileName);
wave.Play();

编辑:具有讽刺意味的是,一个月后我找到了自己对同一问题的答案。对于旧版本的 NAudio(例如 .NET 4.0),您需要一些解决方法:

        var wave = new WaveOut();
        var x = new AudioFileReader(filename);
        wave.Init(x);
        wave.Play();

        while(true)System.Threading.Thread.Sleep(100);

添加最后一个循环只是因为系统需要等待玩家完成。请随意编辑它。

关于C# 播放 MPEG 音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46750162/

相关文章:

c# - 如何通过绑定(bind)到复选框来过滤表格项?

c# - 适用于 Asp.net 和 C# 的亚马逊产品广告 API

c# - 数据库模型到面向对象设计?

python - 如何在恒定时间内从 H264 流中提取 JPEG 图像

c - 无法将 libavformat/ffmpeg 与 x264 和 RTP 同步

c# - 如何刷新ViewModel来更新View

video - 在 ffmpeg filter_complex 期间丢失视频质量

java - 为什么我的 Android MP3 播放器代码不起作用?

Android Mediaplayer 无法加载

android - 无法在Android中使用MediaPlayer播放MediaStore.Audio歌曲