Как использовать LAME (lame_enc.dll) на моем сайте C#
Я пытаюсь использовать lame_enc.dll на моем сайте C# .NET, и я застрял.
Я работаю с: .NET Framework 3.5 / Visual Web Developer 2008 Express Edition / (Что-нибудь еще, что вам нужно знать?)
Первым делом я получил код от C# MP3 Compressor в The Code Project. Одна вещь, которую я отметил, состоит в том, что этот проект / пост с января 2004 года (так что он старый)
Я поместил папки "yeti.mmedia" и "yeti.mp3" в свой каталог "App_Code" и удалил каталоги "Bin" и "obj" в каждой из них. Затем я попытался построить проект. Когда я получил ошибки, я исключил из проекта следующие файлы:
- yeti.mmedia / AssemblyInfo.cs
- yeti.mmedia / EditWaveWriter.cs
- yeti.mmedia / EditWaveWriter.resx
- yeti.mmedia / InFormatEdit.cs
- yeti.mmedia / InFormatEdit.resx
- yeti.mmedia / NumericTextBox.cs
- yeti.mmedia / NumericTextBox.resx
- yeti.mmedia / Win32Functions.cs
- yeti.mp3 / AssemblyInfo.cs
- yeti.mp3 / EditMp3Writer.cs
- yeti.mp3 / EditMp3Writer.resx
Мне кажется, это файлы кода, связанные с пользовательским интерфейсом Windows (который мне не нужен, я делаю это в Интернете).
Я также положил файл "lame_enc.dll" в каталог Bin.
Я создал тестовую страницу на основе примера на странице, указанной выше:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using WaveLib;
using Yeti.MMedia;
using Yeti.MMedia.Mp3;
public partial class Documents : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WaveStream InStr = new WaveStream(Server.MapPath(@"Temp/SomeFile.wav"));
try {
Mp3Writer writer = new Mp3Writer(new FileStream(Server.MapPath(@"Temp/SomeFile.mp3"), FileMode.Create), InStr.Format);
try {
byte[] buff = new byte[writer.OptimalBufferSize];
int read = 0;
while ((read = InStr.Read(buff, 0, buff.Length)) > 0) {
writer.Write(buff, 0, read);
}
}
finally {
writer.Close();
}
}
finally {
InStr.Close();
}
}
}
Итак, я загружаю эту страницу и получаю ошибку:
Невозможно загрузить DLL 'Lame_enc.dll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)
(Я не могу добавить DLL в качестве ссылки в моем проекте, потому что он говорит "... Это не COM-компонент.") Я также пытался получить последнюю и самую лучшую (lame3.98.4) dll и имел те же проблемы, Итак, я предполагаю, что использование этого кода на веб-сайте отличается от проекта другого типа. Что это я не знаю, хотя.
1 ответ
Я полагаю, что, не использовав LAME, вы должны установить соответствующую коробку. После этого вы сможете успешно использовать код проекта кода. Если это не работает, значит, Lame_Enc.dll является нативным компонентом, и вам придется использовать методы PInvoke.