Los metadatos incluyen información sobre el archivo de vídeo, como la duración, anchura, altura y velocidad de fotogramas. La información de metadatos que se añade al archivo de vídeo depende del software que se utilice para codificar el archivo de vídeo.
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.client = this;
ns.play("video.flv");
var vid:Video = new Video();
vid.attachNetStream(ns);
addChild(vid);
function onMetaData(infoObject:Object):void
{
var key:String;
for (key in infoObject)
{
trace(key + ": " + infoObject[key]);
}
}
El código anterior genera resultados como los siguientes:
width: 320
audiodelay: 0.038
canSeekToEnd: true
height: 213
cuePoints: ,,
audiodatarate: 96
duration: 16.334
videodatarate: 400
framerate: 15
videocodecid: 4
audiocodecid: 2
Si el vídeo no tiene sonido, la información de metadatos relativa al audio (como
audiodatarate
) devuelve
undefined
, ya que no se ha añadido información de audio a los metadatos durante la codificación.
En el código anterior, no se muestra la información de punto de referencia. Para ver los metadatos del punto de referencia, se puede utilizar la siguiente función que muestra de forma sucesiva los elementos en una clase Object:
function traceObject(obj:Object, indent:uint = 0):void
{
var indentString:String = "";
var i:uint;
var prop:String;
var val:*;
for (i = 0; i < indent; i++)
{
indentString += "\t";
}
for (prop in obj)
{
val = obj[prop];
if (typeof(val) == "object")
{
trace(indentString + " " + prop + ": [Object]");
traceObject(val, indent + 1);
}
else
{
trace(indentString + " " + prop + ": " + val);
}
}
}
Mediante el fragmento de código anterior para rastrear el parámetro
infoObject
del método
onMetaData()
, se crea la salida siguiente:
width: 320
audiodatarate: 96
audiocodecid: 2
videocodecid: 4
videodatarate: 400
canSeekToEnd: true
duration: 16.334
audiodelay: 0.038
height: 213
framerate: 15
cuePoints: [Object]
0: [Object]
parameters: [Object]
lights: beginning
name: point1
time: 0.418
type: navigation
1: [Object]
parameters: [Object]
lights: middle
name: point2
time: 7.748
type: navigation
2: [Object]
parameters: [Object]
lights: end
name: point3
time: 16.02
type: navigation
El siguiente ejemplo muestra los metadatos para un vídeo MP4. Se da por hecho que existe un objeto llamado
metaDataOut
, en el que se escriben los metadatos.
package
{
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.display.StageDisplayState;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class onMetaDataExample extends Sprite
{
var video:Video = new Video();
public function onMetaDataExample():void
{
var videoConnection:NetConnection = new NetConnection();
videoConnection.connect(null);
var videoStream:NetStream = new NetStream(videoConnection);
videoStream.client = this;
addChild(video);
video.x = 185;
video.y = 5;
video.attachNetStream(videoStream);
videoStream.play("video.mp4");
videoStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
}
public function onMetaData(infoObject:Object):void
{
for(var propName:String in infoObject)
{
metaDataOut.appendText(propName + "=" + infoObject[propName] + "\n");
}
}
private function netStatusHandler(event:NetStatusEvent):void
{
if(event.info.code == "NetStream.Play.Stop")
stage.displayState = StageDisplayState.NORMAL;
}
}
}
La función
onMetaData()
generó los siguientes resultados para este vídeo:
moovposition=731965
height=352
avclevel=21
videocodecid=avc1
duration=2.36
width=704
videoframerate=25
avcprofile=88
trackinfo=[object Object]
Uso del objeto information
La siguiente tabla muestra los posibles valores para los metadatos de vídeo que se transmiten a la función callback
onMetaData()
en el objeto que reciben:
Parámetro
|
Descripción
|
aacaot
|
Tipo de objeto de audio AAC; se admiten 0, 1 o 2.
|
avclevel
|
Número de nivel AVC IDC como, por ejemplo, 10, 11, 20, 21, etc.
|
avcprofile
|
Número de perfil AVC como, por ejemplo, 55, 77, 100, etc.
|
audiocodecid,
|
Cadena que indica el códec de audio (técnica de codificación/descodificación) utilizado; por ejemplo, “.Mp3” o “mp4a”
|
audiodatarate
|
Número que indica la velocidad a la que se ha codificado el audio, expresada en kilobytes por segundo.
|
audiodelay
|
Número que indica el tiempo del archivo FLV correspondiente al "tiempo 0" del archivo FLV original. Es necesario demorar ligeramente el contenido del vídeo para sincronizarlo correctamente con el audio.
|
canSeekToEnd
|
Un valor booleano que es
true
si el archivo FLV se codifica con un fotograma clave en el último fotograma, lo que permite buscar hasta el final de un clip de película de descarga progresiva. Es
false
si el archivo FLV no se codifica con un fotograma clave en el último fotograma.
|
cuePoints
|
Conjunto de objetos, uno en cada punto de referencia incorporado en el archivo FLV. El valor es undefined si el archivo FLV no contiene ningún punto de referencia. Cada objeto tiene las siguientes propiedades:
-
type
: cadena que especifica el tipo de punto de referencia como "navigation" o "event".
-
name
: cadena que indica el nombre del punto de referencia.
-
time
: número que indica el tiempo del punto de referencia en segundos, con una precisión de tres decimales (milisegundos).
-
parameters
: objeto opcional que tiene pares nombre-valor designados por el usuario durante la creación de los puntos de referencia.
|
duration
|
Número que especifica la duración del archivo de vídeo, en segundos.
|
framerate
|
Número que especifica la velocidad de fotogramas del archivo FLV.
|
height
|
Número que especifica la altura del archivo FLV, en píxeles.
|
seekpoints
|
Conjunto que incluye los fotogramas clave disponibles como marcas horarias en milisegundos. Opcional.
|
etiquetas
|
Conjunto de pares clave-valor que representa la información en el átomo “ilst”, que es el equivalente de las etiquetas ID3 para archivos MP4. iTunes utiliza estas etiquetas. Se puede utilizar para mostrar ilustraciones, si está disponible.
|
trackinfo
|
Objeto que proporciona información sobre todas las pistas del archivo MP4, incluyendo su ID de descripción de ejemplo.
|
videocodecid,
|
Cadena que es la versión de códec que se utilizó para codificar el vídeo; por ejemplo, “avc1” o “VP6F”.
|
videodatarate
|
Número que especifica la velocidad de datos de vídeo del archivo FLV.
|
videoframerate
|
Velocidad de fotogramas del vídeo MP4.
|
width
|
Número que especifica la anchura del archivo FLV, en píxeles.
|
La tabla siguiente muestra los posibles valores del parámetro
videocodecid
:
videocodecid,
|
Nombre de códec
|
2
|
Sorenson H.263
|
3
|
Screen video (solo en SWF versión 7 y posterior)
|
4
|
VP6 (solo en SWF versión 8 y posterior)
|
5
|
Vídeo VP6 con canal alfa (solo en SWF versión 8 y posterior)
|
La tabla siguiente muestra los posibles valores del parámetro
audiocodecid
:
audiocodecid,
|
Nombre de códec
|
0
|
uncompressed
|
1
|
ADPCM
|
2
|
MP3
|
4
|
Nellymoser @ 16 kHz mono
|
5
|
Nellymoser, 8kHz mono
|
6
|
Nellymoser
|
10
|
AAC
|
11
|
Speex
|