Ces métadonnées comprennent des informations sur le fichier vidéo (durée, largeur et hauteur d’image, cadence). Les informations de métadonnées ajoutées à votre fichier vidéo dépendent du logiciel que vous utilisez pour coder le fichier vidéo.
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]);
}
}
Le code précédent génère un résultat similaire à celui-ci :
width: 320
audiodelay: 0.038
canSeekToEnd: true
height: 213
cuePoints: ,,
audiodatarate: 96
duration: 16.334
videodatarate: 400
framerate: 15
videocodecid: 4
audiocodecid: 2
Si la vidéo ne contient pas de son, les informations de métadonnées associées à l’audio (telles que
audiodatarate
) renvoient
undefined
, car aucune information audio n’est ajoutée aux métadonnées pendant l’encodage.
Dans le code ci-dessus, les informations de point de repère n’étaient pas affichées. Pour afficher les informations de point de repère, utilisez la fonction suivante, qui affiche de façon récursive les éléments d’un objet :
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);
}
}
}
L’utilisation du code ci-dessus pour suivre le paramètre
infoObject
de la méthode
onMetaData()
produit le résultat suivant :
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
L’exemple suivant affiche les métadonnées d’une vidéo MP4. Cet exemple suppose qu’il existe un objet TextArea appelé
metaDataOut
sur lequel il écrit les métadonnées.
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 fonction
onMetaData()
a produit le résultat suivant pour cette vidéo :
moovposition=731965
height=352
avclevel=21
videocodecid=avc1
duration=2.36
width=704
videoframerate=25
avcprofile=88
trackinfo=[object Object]
Utilisation de l’objet Information
Le tableau ci-dessous indique les valeurs possibles pour des métadonnées de vidéo qui sont transmises à la fonction de rappel
onMetaData()
dans l’objet qu’elles reçoivent :
Paramètre
|
Description
|
aacaot
|
Type d’objet audio AAC ; 0, 1 ou 2 pris en charge.
|
avclevel
|
Numéros de niveau AVC IDC, tels que 10, 11, 20, 21, et ainsi de suite.
|
avcprofile
|
Numéros de profil AVC, tel que 55, 77, 100, et ainsi de suite.
|
audiocodecid
|
Chaîne qui indique le codec audio (technique de codage/décodage) utilisé ; par exemple, « .Mp3 » ou « mp4a ».
|
audiodatarate
|
Nombre qui indique le taux d’encodage du son, en ko/s.
|
audiodelay
|
Nombre qui indique la valeur temporelle 0 du fichier FLV d’origine. Le contenu vidéo doit être légèrement retardé pour synchroniser correctement l’audio.
|
canSeekToEnd
|
Valeur booléenne définie sur
true
si le fichier FLV est codé avec une image-clé sur la dernière image, qui permet de rechercher jusqu’à la fin d’un fichier vidéo téléchargé progressivement. Elle est définie sur
false
si le fichier FLV n’est pas codé avec une image-clé sur la dernière image.
|
cuePoints
|
Tableau d’objets (un par point de repère intégré dans le fichier FLV). Cette valeur n’est pas définie si le fichier FLV ne contient pas de points de repère. Chaque objet possède les propriétés ci-dessous.
-
type
: chaîne qui spécifie le type de point de repère : « navigation » ou « event ».
-
name
: chaîne représentant le nom du point de repère.
-
time
: nombre correspondant à l’heure du point de repère (en secondes) avec une précision de trois chiffres (millisecondes).
-
parameters
: objet facultatif possédant des paires nom-valeur désignées par l’utilisateur au moment de la création des points de repère.
|
duration
|
Nombre indiquant la durée du fichier vidéo, en secondes.
|
framerate
|
Nombre indiquant la fréquence d’images du fichier FLV.
|
height
|
Nombre indiquant la hauteur du fichier FLV, en pixels.
|
seekpoints
|
Tableau qui répertorie les images-clés disponibles en tant que cachets d’horodatage, en millisecondes. Facultatif.
|
balises
|
Tableau de paires clé-valeur qui représente les informations dans l’atome « ilst » (l’équivalent des balises ID3 des fichiers MP4). iTunes utilise ces balises. Elles peuvent être utilisées pour afficher des illustrations, le cas échéant.
|
trackinfo
|
Objet qui fournit des informations sur toutes les pistes d’un fichier MP4, y compris sur l’ID de description de l’échantillonnage.
|
videocodecid
|
Chaîne indiquant la version codec utilisée pour coder la vidéo. Par exemple : « avc1 » ou « VP6F ».
|
videodatarate
|
Nombre indiquant la vitesse de transmission vidéo du fichier FLV.
|
videoframerate
|
Cadence de la vidéo MP4.
|
width
|
Nombre indiquant la largeur du fichier FLV, en pixels.
|
Le tableau suivant répertorie les valeurs possibles du paramètre
videocodecid
:
videocodecid
|
Nom du codec
|
2
|
Sorenson H.263
|
3
|
Screen video (SWF versions 7 et les versions ultérieures uniquement)
|
4
|
VP6 (SWF versions 8 et les versions ultérieures uniquement)
|
5
|
VP6 avec canal alpha (SWF versions 8 et les versions ultérieures uniquement)
|
Le tableau suivant répertorie les valeurs possibles du paramètre
audiocodecid
:
audiocodecid
|
Nom du codec
|
0
|
non compressé
|
1
|
ADPCM
|
2
|
Mp3
|
4
|
Nellymoser @ 16 kHz mono
|
5
|
Nellymoser, 8kHz mono
|
6
|
Nellymoser
|
10
|
AAC
|
11
|
Speex
|