wma para opus online descargar cómo convertir convertidor como archivo 3gpp delphi audio mp3

delphi - para - online audio converter



Duración de un archivo de audio MP3/wav (9)

En Windows hay una manera razonablemente efectiva de determinar la longitud de un archivo MP3.

Este es un gran truco, pero parece funcionar.

Ryan.

//add MPlayer to the uses clause; // //add the MP3PlayLength function to an existing form and //place a button on the form, linking the button click method to see how it works. uses MPlayer; function TForm1.MP3PlayLength(aMP3FileName:string):string; var wMP : TMediaPlayer; wLen : Cardinal; begin Try wMP := TMediaPlayer.Create(self); try wMP.Visible := false; wMP.parent := self; wMP.FileName := aMP3FileName; wMP.TimeFormat := tfMilliseconds; wMP.DeviceType := dtAutoSelect; wMP.Open; try wLen := trunc(wMP.Length / 1000); result := inttostr(wLen div 60)+'':''+inttostr(wLen mod 60); finally wMP.Close; end; finally wMP.free; end; except result := ''(err)''; end; end; procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then showmessage(MP3PlayLength(OpenDialog1.FileName)); end;

¿Cómo se obtiene la duración (en minutos y segundos) de un archivo de audio MP3 / WAV en Delphi?


Ha pasado mucho tiempo desde que jugué con Dephi.

Tratar,

FileSize(var aFile)


No estoy seguro de que esto funcione, pero encontré esta publicación en el foro . Compararía resultados con algo así como winamp para asegurarme de que funciona.


Vaya a www.un4seen.com y descargue la biblioteca de bajo obtendrá mucha información de la sección del foro. ;)



O pruebe el texto de enlace de MediaInfo.dll.

Incluye una clase de envoltura Delphi. Por ejemplo:

MediaInfo_Get(Handle, Stream_General, 0, ''Duration'', Info_Text, Info_Name)

Otra solución DSPack link text

size := FilterGraph.Duration;


Te recomiendo que uses BASS

http://www.un4seen.com/bass.html

BASS es una biblioteca de audio ... para proporcionar a los desarrolladores poderosas funciones de transmisión (MP3 ... OGG ..). Todo en una pequeña DLL, de menos de 100 KB de tamaño.

es muy fácil de usar

uses BASS; var playingChannel: HSTREAM; playingLength: Double; mp3filename: String; begin BASS_Init(-1,44100,0,Application.Handle,nil); playingChannel:=BASS_StreamCreateFile(FALSE,pchar(mp3filename),0,0,0); playingLength:=BASS_ChannelBytes2Seconds(playingChannel, BASS_ChannelGetLength(playingChannel,BASS_POS_BYTE)); end;



Puede calcular la duración dividiendo el tamaño del archivo por la velocidad de bits. Puede obtener la velocidad de bits de uno de los encabezados de cuadros. Por supuesto, esto no funcionará para MP3 de velocidad variable, donde puede tener una velocidad diferente para cada fotograma.

Usando el diseño del encabezado (son solo cuatro bytes):

  1. Abre el MP3 en una transmisión

  2. Busque el comienzo del primer encabezado del marco leyendo hasta encontrar el encabezado de sincronización, que tiene 11 bits consecutivos establecidos en 1. Esto solía ser 12, pero se modificó para permitir la versión 2.5 de MPEG.

  3. Determine la ID de la versión MPEG. A los efectos de encontrar la velocidad de bits, V2.5 es lo mismo que V2

  4. Determine la descripción de la capa

  5. Lee el índice de tasa de bits

  6. Utilizando la versión MPEG, la descripción de capa y el índice de tasa de bits, determine la tasa de bits real de la tabla de índice de tasa de bits en la referencia de encabezado vinculado.

  7. Divida el tamaño del archivo en kilobits ((8 * tamaño en bytes) / 1000) por la velocidad de bits para obtener la duración en segundos

No pude encontrar una muestra de Delphi, pero aquí hay una implementación de C # que utiliza esta técnica para fines de referencia. Vea el método getLengthInSeconds.