Mie Sep 05, 2007 7:16 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
|
|
|
|
|
En la parte de código donde hace el cálculo de la duración (Image::ExifTool::MPEG::Composite) se ve que si el dato de la duración no es numérico, no realiza el cálculo, lo cual es lógico, porque implica mirar todo el fichero.
Como mucho, podrías hacer una estimación como la que él hace: tamaño/bitrate, pero ese bitrate deberás elegirlo. Quizás si añades más -v al exiftool, te dará más información, como por ejemplo el bitrate del primer cuadro, con lo que podrás hacer una estimación.
Y en cuanto a si vale para todos los formatos de vídeo, eso estará indicado en la doc. Desde luego, está actualizado a mayo de este año... |
|
|
|

Mie Sep 05, 2007 7:30 am
|
 |
zozo666
Perlero Frecuente

|
Registrado: 26 May 2007
Mensajes: 137
|
|
|
|
|
Osea, el tema acá sería la palabra "Variable" ¿no?, que el ExifTool::MPEG::Composite la toma como una palabra. Realicé un "exiftool -v video.mpeg" y me salió la siguiente información:
| Código: |
ExifToolVersion = 6.90
FileName = video.mpeg
Directory = .
FileSize = 18575360
FileModifyDate = 1188268862
FileType = MPEG
MIMEType = video/mpeg
ImageWidth = 320
ImageHeight = 240
AspectRatio = 1
FrameRate = 2
VideoBitrate = 262143
MPEGAudioVersion = 2
AudioLayer = 2
AudioBitrate = 12
SampleRate = 0
ChannelMode = 3
MPEG_Audio_Bit26 = 0
ModeExtension = 0
MPEG_Audio_Bit27 = 0
CopyrightFlag = 0
OriginalMedia = 1
Emphasis = 0 |
¿Qué es lo que tendría que hacer con VideoBitrate=262143? ¿De qué forma hago la estimación que me marcas (explorer) arriba? ¿La hago en el mismo módulo o en el script donde lo voy a usar?
Muchas gracias |
|

Mie Sep 05, 2007 8:25 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
|
|
|
|
|
Yo no haría ningún cambio en el módulo, que para eso tiene un dueño. Es mejor que hables con él.
La estimación de tiempo que él hace para cuando está indicado un BitRate es:
| Perl: | return (8 * $val[0]) / (($prt[1]|| 0) + ($val[2]|| 0)); |
Es decir: 8 * <número de bytes del tamaño del fichero> / ( suma de los bitrates de audio y vídeo )
En tu ejemplo, saldría...
8 * 18575360 / (128000 + 262143) = 380,89 segundos = 00:06:21 |
|

Mie Sep 05, 2007 8:41 am
|
 |
zozo666
Perlero Frecuente

|
Registrado: 26 May 2007
Mensajes: 137
|
|
|
|
|
Muy bueno... justamente es un minuto más, o sea 00:06:21, pero en eso no hay problema ya que si en todos los casos es así, con sumarle un minuto queda perfecto.
Ahora, yo esto lo podría hacer pidiendo los correspondientes "VideoBitrate" y "AudioBitrate" en el script y haciendo esa cálculo, ¿no? Lo que no entiendo es de dónde salió "AudioBitrate = 128000", porque el que yo pasé marca 12.
Una última cosa... ¿Hay alguna función en Perl que me permita pasar de formatos de tiempo?. Yo quiero pasar 182.51 seg. al formato hora:min:seg (00:00:00)?
Muchísimas gracias. |
|
Mie Sep 05, 2007 9:19 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
|
|
|
|
|
El AudioBitrate lo he tomado de la primera salida.
En cuanto a lo del cálculo de tiempo, no lo hay, pero puedes copiar el que ves en el código del módulo... ¿no te has fijado, eh? |
|
Mie Sep 05, 2007 8:11 pm
|
 |
zozo666
Perlero Frecuente

|
Registrado: 26 May 2007
Mensajes: 137
|
|
|
|
|
Lo había notado, pero esa instrucción me tira en pantalla toda la información... lo que necesitaría yo es algo así como usa la otra instrucción, donde yo con un GetValue extraiga la información de la etiqueta deseada. Muchas gracias, con esto solo ya termino y después haciendo la cuenta ya termino todo.
¿Cómo se podría hacer eso? Intente un montón de formas y no pude. |
|
Sab Sep 08, 2007 4:22 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
|
|
|
|
|
| Pues... con una expresión regular, por ejemplo... |
|
Powered by phpBB © 2001, 2005 phpBB Group
|