Centro de Información

Formato de la Duración de Archivos de Audio y Video

El tiempo para jugar de los archivos de audio y los archivos de video se puede mostrar y emitir en programas como el FilelistCreator y en el futuro también en el AudioPlayer de manera flexible. Esto le permite adaptar la columna con la duración de sus listas de archivos y sus listas de reproducción individualmente y según sea necesario.

El formato, respectivamente, la representación de días, horas, minutos, segundos y milisegundos se puede especificar a través de una máscara de formato como "m:ss" (minutos:segundos). En este tutorial, observamos todas las posibilidades de esta máscara, como la salida de ceros principales, la definición de componentes de tiempo opcionales, el trato de elementos de tiempo faltantes, así como el uso de las letras significativas como tal y le muestran algunos ejemplos de aplicaciones al final del tutorial. Sin embargo, nos gustaría comenzar con la lista de todos los marcadores de posición disponibles fundamentalmente.

Marcadores de Posición Generales

En general, el FilelistCreator y el AudioPayer ofrecen cinco marcadores de posición diferentes en forma de letras que representar en la máscara de formato los días, las horas, los minutos, los segundos y los milisegundos y que se pueden usar en cualquier orden:

Marcador de PosiciónSignificación
dDías
hHoras
mMinutos
sSegundos
vMilisegundos

Estos marcadores de posición se pueden combinar en la máscara de formato con cualquier otro caracter. Entonces, por ejemplo, con un colon como en "h:mm" para la visualización de horas y minutos. En este proceso, no solo se limita a caracteres ASCII básicos, sino que también puede usar y aprovechar la selección inagotable de caracteres Unicode arbitrarios. Si desea usar una de esas letras significativas como tales, sin ser reemplazado por el componente de tiempo correspondiente, debe escapar de esta letra. Puede averiguar cómo funciona esto en la sección sobre escapar.

Ceros a la Izquierda

Para poder escribir períodos de tiempo como 1 hora y 10 minutos, así como 1 hora y 1 minuto, justificados entre sí en una lista, el uso de ceros principales es un buen enfoque. La duración de una hora y un minuto idealmente no debería representarse como "1:1" sino como "1:01", de modo que el colon está en el mismo lugar que con valores de minuto de dos dígitos como "1:10".

Puede lograr ceros principales repitiendo el marcador de posición respectivo en el número de ceros líderes deseados, incluido el valor correspondiente. Puede implementar el ejemplo del último párrafo con la máscara de formato "h:mm" - la parte de la hora está escrita sin ceros principales, la parte de los minutos se lleva a al menos dos lugares con ceros principales. Si escriba "h:m" en su lugar, el resultado sería "1:1" en lugar de "1:01". Por supuesto, también puede llenar más de dos lugares con ceros principales, como también muestran los ejemplos de la siguiente tabla:

Máscara1 Minuto10 Minutos100 Minutos1000 Minutos
m1101001000
mm01101001000
mmm0010101001000
mmmm0001001001001000
h:m0:10:101:4016:40
h:mm0:010:101:4016:40
h:mmm0:0010:0101:04016:040
hh:mm00:0100:1001:4016:40
hhh:mm000:01000:10001:40016:40
h:mm:ss0:01:000:10:101:40:0016:40:00

En las primeras cuatro series de ejemplos de la tabla, puede ver cómo las máscaras "m", "mm", "mmm" y "mmmm" afectan varias declaraciones de minutos de diferente longitud. En cada uno de los ejemplos, se emite el número completo de minutos, pero dependiendo de la cantidad de m, el número de ceros principales cambia y varía si los ceros principales se usan en absoluto.

Esto no solo funciona para marcadores de posición individuales, sino también para combinaciones de marcadores de posición, como muestran en las siguientes líneas de la tabla, en la que varían el número de ceros principales del componente de hora y el componente de minuto. Finalmente, la máscara "h:mm:ss" muestra un ejemplo muy típico de la visualización de horas, minutos y segundos usando piezas con ceros principales.

Los ejemplos que se muestran en la tabla también demuestran lo que sucede cuando el número que se presentará tiene más posiciones que el número de marcadores de posición repetidos. En este caso, el tiempo no se corta, sino que siempre se muestra completamente en su totalidad, incluso si excede la supuesta limitación de los lugares.

Especificaciones de Tiempo Opcionales

No siempre queremos generar todos los elementos de una máscara de formato. Permítanos, como ejemplo, tomar el caso de que nos gustaría mostrar los tiempos de más de una hora en el formato "h:mm:ss", pero para tiempos menores de una hora, la parte con la hora no debe mostrarse. Entonces, nos gustaría ver tiempos como 1:00:00, 30:00 y 0:15 en nuestra lista. Si usáramos la máscara "h:mm:ss" para esto, los resultados para estos tiempos serían 1:00:00, 0:30:00 y 0:00:15 - recibiríamos muchos ceros principales no deseados. Sin embargo, si omitiéramos las horas y usaríamos la máscara "m:ss" en cambio, el resultado nuevamente no correspondería a nuestra idea deseada: esta vez, 30:00 y 0:15 sería como se desee, pero un tiempo de una hora se mostraría como 60:00 porque ya no usamos el marcador de posición "h" y, por lo tanto, las horas se contarían a los minutos.

Para realizar esta distinción y definir componentes opcionales en la máscara de formato, podemos usar letras minúsculas y letras mayúsculas en la máscara de formato. Ambas letras, h y H se pueden usar para mostrar las horas. Sin embargo, siempre con h, pero solo cuando el número de horas es mayor que cero con H.

Para implementar el ejemplo mencionado al principio, podríamos, por ejemplo, usar la máscara de formato "H:Mm:ss". Con las letras mayúsculas, definimos que tanto la información sobre la cantidad de horas como el primer cero principal del fragmento minuto son opcionales y solo deben ser generados si es necesario. Sin embargo, el segundo lugar del fragmento minuto no debe ser opcional y siempre se muestra, incluso si es 0 - finalmente, nos gustaría obtener 0:15 por un período de tiempo de 15 segundos. Si trabajamos con la máscara "H:mm:ss" en su lugar, ambos lugares de los minutes no serían opcionales y recibiríamos 00:15 como salida para los 15 segundos. Si trabajamos con la máscara "H:MM:ss", solo obtendríamos "15" para los 15 segundos, ya que ambos lugares de los minutos se definen como opcionales con las letras mayúsculas y, por lo tanto, solo son relevantes para tiempos de más de 59 segundos. El resultado para todas estas máscaras es idéntico para los tiempos más de al menos una hora.

En la siguiente tabla hemos nuevamente contrastado los ejemplos mencionados en el texto para usted claramente arreglado:

Máscara1 Hora30 Minutos15 Segundos
h:mm:ss1:00:000:30:000:00:15
m:ss60:0030:000:15
mm:ss60:0030:0000:15
H:mm:ss1:00:0030:0000:15
H:Mm:ss1:00:0030:000:15
H:MM:ss1:00:0030:0015

Se pueden encontrar más ejemplos de uso para componentes de tiempo opcionales para diferentes duraciones al final de este tutorial en la sección "Ejemplos".

Uso de las Letras Significativas como tales

Incluso si en nuestros ejemplos anteriores siempre hemos usado el colon como delimitador entre las partes de tiempo individuales, cualquier otro carácter y letra también se puede usar en la máscara de formato y, por lo tanto, se puede combinar con los marcadores de posición para los componentes de tiempo. Pero, ¿cómo se puede utilizar una letra que también sirve como marcador de posición como tal sin ser reemplazada por la información de tiempo que representa? ¿Cómo le decimos al FilelistCreator o al AudioPlayer que se debe mantener una letra determinada?

Echemos un vistazo al siguiente ejemplo. No solo queremos formatear nuestra duración como "h:mm:ss" o similares, sino que use el siguiente texto como máscara de formato:

h horas - m minutos - s segundos

Sin embargo, para una duración de 7384 segundos (2:03:04) como ejemplo, obtendríamos el siguiente resultado desagradable con esta máscara de formato:

2 2ora4 - 3 3inuto4 - s 4egund0o4

No solo nuestros marcadores de posición separados h, m y s fueron reemplazados por sus equivalentes de tiempo, sino también todas las ocurrencias de las letras respectivas en las palabras "horas", "minutos" y "segundos", que realmente queríamos mantener como tal.

La solución a este problema es la escapada. Si no queremos reemplazar una letra con su información de tiempo, podemos poner un apóstrofe frente a esta letra. Cada caracter detrás de un apóstrofe permanece intacto y no se reemplaza. Entonces, en lugar de nuestro primer enfoque, escribimos lo siguiente como una máscara de formato:

h 'hora's - m 'minuto's - s 'segun'do's

Y así recibir nuestro resultado deseado:

2 horas - 3 minutos - 4 segundos

Los caracteres que no tienen un significado como marcador de posición para un componente de tiempo no tienen que ser escapados y simplemente pueden escribirse como tal en la máscara de formato. Esa es la misma manera que ya hemos usado el colon en los otros ejemplos.

Especificaciones de Tiempo Faltantes

Quizás ya se haya preguntado qué sucede cuando unas piezas de tiempo teóricamente requeridas no ocurren en una máscara de formato. Como ejemplo, consideremos una duración de una hora, diez minutos y diez segundos y la máscara "m:ss". Aunque nuestra duración va más allá de los minutos, no ofrecemos al FilelistCreator o al AudioPlayer un marcador de posición para las horas, como sería, por ejemplo, con el uso de la máscara "h:mm:ss". ¿Qué pasa en este caso? ¿Están cortadas las horas?

No. El resultado será 70:10 (70 minutos y 10 segundos). Dado que el componente minuto es la unidad más grande posible en esta máscara, unidades más grandes, como horas y días, se agregan a este componente. Entonces obtenemos 1 hora (60 minutos) + 10 minutos = 70 minutos.

También puede usar esta característica para mostrar la duración de los archivos de audio y los archivos de video en una sola unidad. Por ejemplo, si usamos la máscara "s", la duración solo se mostrará en segundos. Para el ejemplo anterior, sería "4210", es decir, 1 hora (3600 segundos) + 10 minutos (600 segundos) + 10 segundos. Con la máscara "v", recibimos la duración en milisegundos, el resultado sería 4210000 (4210 segundos * 1000).

Menos relevante en la práctica sería una máscara como "h:s", en la que depositamos horas y segundos, pero no minutos. Sin embargo, en aras de la integridad, queremos tener una breve mirada también en este caso. Para nuestro ejemplo, el resultado sería "1:610". La hora se muestra con la "h", mientras que los 10 minutos faltantes (600 segundos) se agregan a la proporción de segundos para no olvidarlos. Por lo tanto, un descanso restante siempre se agrega al componente de tiempo más grande posible.

Hasta ahora hemos visto lo que sucede cuando omitimos los componentes de tiempo hacia arriba y en el medio. Pero, ¿qué pasa en la otra dirección? ¿Qué sucede si dejamos de lado los fragmentos de tiempo más pequeños, como los segundos? En este caso, la posible información más pequeña simplemente se deja fuera y se corta. Si usamos la máscara "m" para nuestro ejemplo de una hora, diez minutos y diez segundos, el resultado sería "70" (1 hora = 60 minutos + 10 minutos) y los 10 segundos se cortarían. Si usamos la máscara "h", no solo los segundos sino también los minutos se cortan y recibimos el resultado "1" (1 hora). Si se usa la máscara "d", el resultado incluso sería "0": dado que no tenemos una duración de al menos 24 horas necesarias para un día con nuestra duración de una hora, diez minutos y diez segundos, la participación diaria está "0" y dado que no ofrecemos unidades más pequeñas en nuestra máscara de formato que la parte del día, todas las unidades más pequeñas, como horas, minutos y segundos, se cortan por completo y permanece "0". Tampoco se redondea en tal caso, por lo que tampoco 23 horas serían 0 días.

Esta práctica ya se ha utilizado en todos nuestros ejemplos anteriores sin notarla: ya que no hemos utilizado el marcador de posición "v" representando los milisegundos de una duración junto con los segundos, minutos o horas en ningún ejemplo, la proporción de los milisegundos siempre fue inadvertido cortado.

Máscara1 hora, 10 minutos y 10 segundos
h:mm:ss1:10:10
m:ss70:10
h:s1:610
d0
h1
m70
s4210
v4210000

En esta tabla hemos resumido una vez más los ejemplos mencionados en el texto como yuxtaposición contrastante.

Ejemplos

Finalmente, nos gustaría ver algunos ejemplos que resuman el contenido de las secciones individuales de este tutorial y dan una impresión de cómo se representan diferentes tiempos en diferentes formatos. En las columnas de la tabla encontrará diferentes duraciones de tiempo en segundos y milisegundos, así como la representación respectiva con diferentes máscaras de formato en las filas de la tabla.

Máscara1s10s100s1,000s10,000s100,000s111,111ms
hh:mm:ss00:00:0100:00:1000:01:4000:16:4002:46:4027:46:4000:01:51
h:mm:ss0:00:010:00:100:01:400:16:402:46:4027:46:400:01:51
H:mm:ss00:0100:1001:4016:402:46:4027:46:4001:51
H:Mm:ss0:010:101:4016:402:46:4027:46:401:51
H:MM:ss01101:4016:402:46:4027:46:401:51
H:MM:Ss1101:4016:402:46:4027:46:401:51
h:mm0:000:000:010:162:4627:460:01
m:ss0:010:101:4016:402:46:4027:46:401:51
mm:ss00:0100:1001:4016:402:46:4027:46:4001:51
d:hh:mm:ss0:00:00:010:00:00:100:00:01:400:00:16:400:02:46:401:03:46:400:00:01:51
D:HH:Mm:ss0:010:101:4016:402:46:401:03:46:401:51
s:vvv1:00010:000100:0001000:00010000:000100000:000111:111
m:ss:vvv0:01:0000:10:0001:40:00016:40:0002:46:4027:46:40:0001:51:111
mm:ss:vvv00:01:00000:10:00001:40:00016:40:0002:46:4027:46:40:00001:51:111
'm'm:ssmm:01mm:10mm:100mm:1000mm:10000mm:100000mm:111
h:s0:10:100:1000:10002:280027:28000:111
d:v0:10000:100000:1000000:10000000:100000001:136000000:111111
d:m:v0:0:10000:0:100000:1:400000:16:400000:166:400001:226:400000:1:51111
d0000010
h00002270
m0011616616661
s110100100010000100000111
v100010000100000100000010000000100000000111111

Ante todo, puede ver en la tabla diferentes máscaras de formato para horas, minutos y segundos con diferentes números de ceros principales, así como componentes de tiempo fijos y opcionales. Esto es seguido por máscaras similares sin horas, así como demostraciones de mostrar días y milisegundos.

En la fila con la máscara "'m'm:ss" sigue una demostración de la escapada de los marcadores de posición. Las letras m y m no deben ser reemplazadas por el componente minuto, sino que permanecen como tales. El resultado muestra cómo la proporción de minutos se incluye en la parte que muestra los segundos como el único componente de tiempo de esta máscara y cada resultado comienza con "mm:".

Las siguientes tres filas con las máscaras de formato "h:s", "d:v" y "d:m:v" demuestran lo que sucede cuando los marcadores de posición se quedan fuera entre una unidad más pequeña y más grande. En el caso de esta falta de piezas de tiempo, la parte de tiempo preocupante se agrega a la siguiente unidad más pequeña posible. Al usar la máscara "h:s" los minutos se asignan a los segundos, cuando se usa la máscara "d:v" las horas, minutos y segundos se agregan a los milisegundos y al usar la máscara "d:m:v" las horas se agregarán a los minutos y los segundos se agregarán a los milisegundos.

Finalmente, la tabla muestra todos los marcadores de posición disponibles solo y sin una combinación con otros marcadores de posición o caracteres. Para todas estas máscaras de formato, la tabla muestra el resultado para 1 segundo, 10 segundos, 100 segundos, 1,000 segundos, 10,000 segundos, 100,000 segundos y 111,111 milisegundos.