为什么我的应用程序打开时无法从外部播放文件?
Why cant i play the File externally while my Application is open?
我成功地将 wav 文件转换为 mp3 文件。
但是虽然我的应用程序是 运行ning,但它只会冻结 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;
}
如您所见,我关闭并处理了该文件,但这不起作用。
错误仍然存在。
File本身没问题,但App不允许运行否则无法播放。
奇怪的。
希望你能帮助我,
诚挚的,
光明会
PS: 我不是英语母语人士,所以对于文中的任何问题我深表歉意:)
我不完全确定,但您需要关闭并处理 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
实现在文件处理程序上有问题
我成功地将 wav 文件转换为 mp3 文件。 但是虽然我的应用程序是 运行ning,但它只会冻结 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;
}
如您所见,我关闭并处理了该文件,但这不起作用。 错误仍然存在。 File本身没问题,但App不允许运行否则无法播放。 奇怪的。 希望你能帮助我, 诚挚的, 光明会 PS: 我不是英语母语人士,所以对于文中的任何问题我深表歉意:)
我不完全确定,但您需要关闭并处理 File.Create(Path.Combine(filename.Split('.').FirstOrDefault() + ".mp3")
只需在您的代码中添加另一个 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
实现在文件处理程序上有问题