2011-06-07 21 views
5

Estoy tratando de usar lame_enc.dll en mi sitio web C# .NET y estoy atascado.Cómo usar LAME (lame_enc.dll) en mi sitio web de C#

estoy trabajando con: .NET Framework 3.5/Visual Web Developer 2008 Express Edition/(Algo más que necesita saber?)

La primera cosa que hice fue conseguir el código de C# MP3 Compressor sobre el Código Proyecto. Una cosa que noté es que este proyecto/publicación es de enero de 2004 (por lo tanto, es viejo)

Puse las carpetas "yeti.mmedia" y "yeti.mp3" en mi "Código App_Code" y borré el "Bin "y directorios" obj "dentro de cada uno. Luego traté de construir el proyecto. Cuando llegué errores terminé excluir del proyecto los siguientes archivos:

  • 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

Estos me parecen para ser los archivos de código relacionados con la interfaz de usuario de Windows (que no necesito porque estoy haciendo esto en la web).

También puse el archivo "lame_enc.dll" en el directorio Bin.

he creado una página de prueba basado en el ejemplo de la página vinculado anteriormente:

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(); 
     } 
    } 
} 

Así, entonces me carga esta página y el error que consigo es:

No se puede cargar DLL 'Lame_enc.dll': no ​​se pudo encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)

(no puedo añadir el archivo DLL como una referencia en mi proyecto porque dice "... Esto no es un componente COM.") También he tratado de conseguir la última y el dll más grande (lame3.98.4) y tuvo los mismos problemas. Por lo tanto, supongo que hay algo diferente sobre el uso de este código en un sitio web en lugar de otro tipo de proyecto. Lo que es, no lo sé.

Respuesta

1

Supongo que no habiendo usado LAME, es necesario instalarlo en el cuadro en cuestión. Después de eso, debería poder usar el código de proyecto de código con éxito. Si eso no funciona, parece que Lame_Enc.dll es un componente nativo y tendrá que invocar los métodos.

+0

Creo que el proyecto que está usando es un contenedor administrado alrededor de la biblioteca nativa Lame_Enc. –

+0

Posiblemente, pero la historia sigue siendo la misma. Si LAME era COM, entonces no está registrado. Esto parece no ser el problema. Si es nativo, no está en la ubicación correcta o no está configurado correctamente.De cualquier manera, una instalación adecuada es la forma más fácil de garantizar que sea correcta. Si eso todavía no funciona, entonces algo ha cambiado entre las versiones y los punteros reales en los archivos .NET deben ser observados. –

+0

¿Es posible solicitar que otro usuario intervenga en un tema? No veo la forma de enviar mensajes a otra persona (soy bastante nuevo en SO). Hay [otra pregunta en SO] (http://stackoverflow.com/questions/1377019/unable-to-add-a-dll-reference-to-vs-2008) que creo que podría relacionarse. Me pregunto si [Basiclife] (http://stackoverflow.com/users/156755/basiclife) podría ayudar con esto. – Hewins

Cuestiones relacionadas