Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como obtener metadatos de un archivo de video

Hola a tod@s

Pues necesito saber como puedo obtener los metadatos de un archivo multimedia (de video o de audio), algunos de estos son los que aparecen en la pestaña "Detalles" de la ventana Propiedades cuando se hace clic derecho en un archivo multimedia.

En concreto los datos que me interesan son:
Video:
- Duración
- Ancho y Alto del fotograma (tamaño o resolucion)
- Velocidad de bits total (bitrate)
- Codificador de video

Audio:
- Velocidad de bits (bitrate)
- Canales
- Velocidad de muestreo
- Duracion (cuando es un archivo de audio)
- Codificador de audio

En el caso de un archivo de video, son todos los datos, de audio y de video.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 01-03-2020 a las 03:54:53.
Responder Con Cita
  #2  
Antiguo 03-03-2020
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
A lo mejor este enlace te da una pista: Habla sobre importar la librería de tipos del Windows Media Player y usar las funciones que exporta

Un saludo
Responder Con Cita
  #3  
Antiguo 03-03-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por ElKurgan Ver Mensaje
A lo mejor este enlace te da una pista: Habla sobre importar la librería de tipos del Windows Media Player y usar las funciones que exporta

Un saludo

Estuve probando con algo parecido a eso, pero para obtener los datos hay que abrir el video en el reproductor (y cerrarlo después)
Esto en un archivo no se nota tanto (si es corto), pero en una lista de 5, 10 o mas archivos de video demoraría un poco mas dependiendo de la longitud de los videos.



Lo que necesito es encontrar donde se guardan esos datos para leerlos sin necesidad de abrirlo en un reproductor, para que sea mas rapido
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #4  
Antiguo 03-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
https://chapmanworld.com/2018/03/14/...ows-in-delphi/

Cita:
Usando la biblioteca de tipos creada al importar el control del reproductor ActiveX, es posible interrogar cualquier video cargado en un reproductor de video. Esto no significa que el reproductor de video deba ser visible tampoco, puede crearse en tiempo de ejecución, interrogarse y desecharse sin tener que colocarlo en un formulario.
Responder Con Cita
  #5  
Antiguo 03-03-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje

Cierto, dice que no tiene que estar visible, pero aun así lo abre en segundo plano toma los datos y después lo cierra, todo esto automáticamente.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #6  
Antiguo 04-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que la otra opción que te queda es informarte sobre cómo es el "metadato"/cabecera de cada uno de los tipos de videos que te interesa y hacerlo tú mismo.
Responder Con Cita
  #7  
Antiguo 04-03-2020
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
En el comentario al enlace que te ha puesto ElKurgan se habla de la herramienta MediaInfo precisamente para obtener este tipo de información, y en este enlace en particular se habla de hacerlo con delphi
https://sourceforge.net/p/mediainfo/...read/a7260d2d/

No se si con esto puedas avanzar algo...
Responder Con Cita
  #8  
Antiguo 05-03-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Es que la otra opción que te queda es informarte sobre cómo es el "metadato"/cabecera de cada uno de los tipos de videos que te interesa y hacerlo tú mismo.
En este caso tendría que leer los bytes del archivo, algo que nunca he hecho

Según tengo entendido, tendría que usar TFileStream para leer los bytes del archivo (si me equivoco, rectificame).
Buscando en Google encontré las cabeceras de algunos archivos de video (en este caso un .AVI), pero no se como leer esos valores.

De que forma se haría?


Cita:
En el comentario al enlace que te ha puesto ElKurgan se habla de la herramienta MediaInfo precisamente para obtener este tipo de información, y en este enlace en particular se habla de hacerlo con delphi
https://sourceforge.net/p/mediainfo/...read/a7260d2d/

No se si con esto puedas avanzar algo...
Encontre dos posibles opciones: Tag Library pero no me dan la opción para todos los formatos multimedia, y MedianInfo, que voy a experimentar con el para ver si se ajusta a mis necesidades.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 05-03-2020 a las 21:27:50.
Responder Con Cita
  #9  
Antiguo 09-03-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Resuelto

Pues finalmente resolvi el problema con la libreria MediaInfo
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #10  
Antiguo 06-04-2020
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Cita:
Empezado por JoAnCa Ver Mensaje
Pues finalmente resolvi el problema con la libreria MediaInfo
Hola, ¿nos puedes decir como lo hicisteis o mejor, un código de ejemplo? Muchas gracias
Responder Con Cita
  #11  
Antiguo 05-05-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por MAXIUM Ver Mensaje
Hola, ¿nos puedes decir como lo hicisteis o mejor, un código de ejemplo? Muchas gracias
Disculpen, debí comentar como lo hice para que le pueda servir a otros

Pues yo cargo los archivos en un stringlist y de ahi los leo y le obtengo los metadatos con este codigo:

Código Delphi [-]
          if (MediaInfoDLL_Load('MediaInfo.dll') = false) then
            begin
              MsgError('Error al cargar MediaInfo.dll', 'Error');
              Exit;
            end;
          for i:=0 to ListaTagAcum.Count - 1 do
            begin
              Cad:=ListaTagAcum.Strings[i];
              Ruta:=ExtractFilePath(Cad);
              Archivo:=ExtractFileName(Cad);

              Handle:=MediaInfo_New();
              MediaInfo_Open(Handle,PWideChar(Ruta + Archivo)); //--- Abrir el archivo multimedia
              sgListaMetaDatos.Cells[0, i+1]:=Archivo;
              sgListaMetaDatos.Cells[1, i+1]:=MediaInfo_Get(Handle, Stream_General, 0, 'FileSize/String', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[2, i+1]:=MediaInfo_Get(Handle, Stream_General, 0, 'Duration/String2', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[3, i+1]:=MediaInfo_Get(Handle, Stream_General, 0, 'Format', Info_Text, Info_Name);
              Resol:=MediaInfo_Get(Handle, Stream_Video, 0, 'Width', Info_Text, Info_Name) + 'x' + MediaInfo_Get(Handle, Stream_Video, 0, 'Height', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[4, i+1]:=Resol;
              sgListaMetaDatos.Cells[5, i+1]:=MediaInfo_Get(Handle, Stream_General, 0, 'BitRate/String', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[6, i+1]:=MediaInfo_Get(Handle, Stream_Video, 0, 'Format', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[7, i+1]:=MediaInfo_Get(Handle, Stream_Audio, 0, 'BitRate/String', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[8, i+1]:=MediaInfo_Get(Handle, Stream_Audio, 0, 'SamplingRate', Info_Text, Info_Name);
              sgListaMetaDatos.Cells[9, i+1]:=MediaInfo_Get(Handle, Stream_Audio, 0, 'Format', Info_Text, Info_Name);

              pbProgress.Progress:=i;
              pbProgress.Repaint;
              Application.ProcessMessages;
            end;
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
propiedades , metadatos o detalles de un archivo de imagen tif thelibmx Varios 2 04-01-2016 18:50:16
leer metadatos en un archivo ebeltete API de Windows 6 16-06-2014 17:07:53
Obtener fotograma de video. Video Finish rabata2001 Varios 0 07-05-2014 12:02:30
Como obtener datos del hardware (RAM, MB, Video) JoAnCa API de Windows 4 22-10-2007 22:30:44
como abrir un archivo de video dentro de un componente de delphi rls Varios 2 17-11-2005 05:33:45


La franja horaria es GMT +2. Ahora son las 12:38:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi