Как использовать LAME (lame_enc.dll) на моем сайте C # - PullRequest
5 голосов
/ 08 июня 2011

Я пытаюсь использовать 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 Ответ

1 голос
/ 08 июня 2011

Полагаю, что, не использовав LAME, вы должны установить на соответствующую коробку. После этого вы сможете успешно использовать код проекта кода. Если это не работает, значит, Lame_Enc.dll является нативным компонентом, и вам придется использовать методы PInvoke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...