【问题标题】:Why cant i play the File externally while my Application is open?为什么我的应用程序打开时无法在外部播放文件?
【发布时间】:2016-09-19 13:50:34
【问题描述】:

我设法将 wav 文件转换为 mp3 文件。 但是当我的应用程序正在运行时,它只会冻结 VLC 媒体播放器(坏文件描述符) 当我关闭我的应用程序时,它会正常播放。

public void ConvertWavToMp3(string filename)
    {
        LameMP3FileWriter mpFileWriter;
        if (File.Exists(Path.Combine(filename.Split('.').FirstOrDefault() + ".mp3"))) File.Delete(Path.Combine(filename.Split('.').FirstOrDefault() + ".mp3"));
        using (WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(new WaveFileReader(filename)))            
        using (mpFileWriter = new LameMP3FileWriter(File.Create(Path.Combine(filename.Split('.').FirstOrDefault() + ".mp3")), waveStream.WaveFormat, LAMEPreset.ABR_320))
        {
            byte[] bytes = new byte[waveStream.Length];
            waveStream.Position = 0;
            waveStream.Read(bytes, 0, (int)waveStream.Length);
            mpFileWriter.Write(bytes, 0, bytes.Length);
            mpFileWriter.Flush();


        }
        if (mpFileWriter != null)
        {
            mpFileWriter.Dispose();
            mpFileWriter.Close();
            mpFileWriter = null;
        }
        else Console.WriteLine("file writer was null");
        lblstatus.Text = "Ready";
        lblstatus.ForeColor = System.Drawing.Color.DarkGreen;
    }

如您所见,我关闭并处理了文件,但这不起作用。 错误仍然存​​在。 文件本身很好,但应用程序不允许运行或无法播放。 奇怪的。 希望你能帮助我, 真诚的, 技能者 PS:我不是以英语为母语的人,所以对于文本中的任何问题,我深表歉意:)

【问题讨论】:

    标签: c# filestream naudio filewriter


    【解决方案1】:

    我不完全确定,但您需要关闭并处理 File.Create(Path.Combine(filename.Split('.').FirstOrDefault() + ".mp3") 创建的 FileStream

    只需在您的代码中添加另一个 using 即可处理 FileStream

    string filePath = Path.Combine(filename.Split('.').FirstOrDefault() + ".mp3";
    
    using(FileStream fs = File.Create(filePath))
    using (mpFileWriter = new LameMP3FileWriter(fs), waveStream.WaveFormat, LAMEPreset.ABR_320))
    {
        byte[] bytes = new byte[waveStream.Length];
        waveStream.Position = 0;
        waveStream.Read(bytes, 0, (int)waveStream.Length);
        mpFileWriter.Write(bytes, 0, bytes.Length);
        mpFileWriter.Flush();
    }
    

    如果这不起作用,我猜LameMP3FileWriter 实现对文件处理程序有问题

    【讨论】:

    • 我应该在哪里关闭和处理它?在 using () { } 之后我已经尝试过了。
    • 我在你的代码示例中添加了另一个 using(),告诉我这是否有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多