Metagegevens bevatten informatie over het videobestand, zoals duur, breedte, hoogte en framesnelheid. Welke informatie over metagegevens wordt toegevoegd aan het videobestand, is afhankelijk van de software die u gebruikt om het videobestand te coderen.
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]);
}
}
De bovenstaande code genereert de volgende uitvoer:
width: 320
audiodelay: 0.038
canSeekToEnd: true
height: 213
cuePoints: ,,
audiodatarate: 96
duration: 16.334
videodatarate: 400
framerate: 15
videocodecid: 4
audiocodecid: 2
Wanneer u video zonder audio hebt, wordt de informatie over metagegevens betreffende audio (zoals
audiodatarate
) geretourneerd als
undefined
omdat geen audio-informatie aan de metagegevens is toegevoegd tijdens het coderen.
In de bovenstaande code wordt de actiepuntinformatie niet weergegeven. U kunt de volgende functie gebruiken die de items in een object recursief weergeeft om de metagegevens van de actiepunten weer te geven:
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);
}
}
}
Wanneer u het vorige codefragment gebruikt om de parameter
infoObject
in de methode
onMetaData()
weer te geven, wordt de volgende uitvoer gegenereerd:
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
Het volgende voorbeeld geeft de metagegevens voor een MP4-video weer. Hierbij wordt ervan uitgegaan dat er een TextArea-object is met de naam
metaDataOut
, waarnaar de metagegevens worden geschreven.
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;
}
}
}
De functie
onMetaData()
heeft de volgende uitvoer geproduceerd voor deze video:
moovposition=731965
height=352
avclevel=21
videocodecid=avc1
duration=2.36
width=704
videoframerate=25
avcprofile=88
trackinfo=[object Object]
Het informatieobject gebruiken
In de volgende tabel worden de mogelijke waarden getoond voor videometagegevens die worden doorgegeven aan de callbackfunctie
onMetaData()
in het object dat ze ontvangen:
Parameter
|
Beschrijving
|
aacaot
|
Objecttype AAC-audio; 0, 1 en 2 worden ondersteund.
|
avclevel
|
AVC IDC-niveaunummer zoals 10, 11, 20, 21 enzovoort.
|
avcprofile
|
AVC-profielnummer zoals 55, 77, 100 enzovoort.
|
audiocodecid
|
Een tekenreeks die de gebruikte audio-codec aangeeft (techniek voor coderen/decoderen), bijvoorbeeld .mp3 of mp4a.
|
audiodatarate
|
Een getal dat de snelheid aangeeft waarmee audio wordt gecodeerd, in kilobytes per seconde.
|
audiodelay
|
Een getal dat aangeeft op welk tijdstip in het FLV-bestand ‘tijd 0’ van het oorspronkelijke FLV-bestand valt. De video-inhoud moet met een kleine hoeveelheid worden vertraagd voor correcte synchronisatie van de audio.
|
canSeekToEnd
|
Een Booleaanse waarde die
true
is als het FLV-bestand met een hoofdframe op het laatste frame is gecodeerd, waardoor u naar het einde van een filmfragment met progressieve download kunt zoeken. Wanneer het FLV-bestand niet met een hoofdframe op het laatste frame is gecodeerd, is de waarde
false
.
|
cuePoints
|
Een array van objecten, één voor elk actiepunt dat in het FLV-bestand is ingesloten. Als het FLV-bestand geen actiepunten bevat, is de waarde ongedefinieerd. Elk object heeft de volgende eigenschappen:
-
type
: een tekenreeks die het type actiepunt aangeeft, zoals ‘navigatie’ of ‘gebeurtenis’.
-
name
: een tekenreeks die de naam van het actiepunt aangeeft.
-
time
: een getal dat de tijd van het actiepunt aangeeft, opgegeven in seconden en met een precisie van drie decimalen (milliseconden).
-
parameters
: een optioneel object dat naam/waarde-paren bevat die door de gebruiker worden opgegeven bij het maken van actiepunten.
|
duration
|
Een getal dat de duur van het videobestand opgeeft, in seconden.
|
framerate
|
Een getal dat de framesnelheid van het FLV-bestand aangeeft.
|
height
|
Een getal dat de hoogte van het FLV-bestand aangeeft, in pixels.
|
seekpoints
|
Een array van de beschikbare hoofdframes als tijdstempels in milliseconden. Optioneel.
|
tags
|
Een array van sleutelwaardeparen die de informatie in het atoom “ilst” vertegenwoordigt. Dit is het equivalent van ID3-tags voor MP4-bestanden. iTunes maakt gebruikt van deze tags. Kan worden gebruikt voor de weergave van illustraties, als deze beschikbaar zijn.
|
trackinfo
|
Een object dat informatie levert over alle tracks in het MP4-bestand, inclusief de voorbeeldbeschrijvings-id.
|
videocodecid
|
Een tekenreeks die de codec-versie aangeeft die is gebruikt om de video te coderen. - bijvoorbeeld “avc1” of “VP6F”
|
videodatarate
|
Een getal dat de videogegevenssnelheid van het FLV-bestand aangeeft.
|
videoframerate
|
De framesnelheid van de MP4-video.
|
width
|
Een getal dat de breedte van het FLV-bestand aangeeft, in pixels.
|
In de volgende tabel worden de mogelijke waarden voor de parameter
videocodecid
weergegeven:
videocodecid
|
Codec-naam
|
2
|
Sorenson H.263
|
3
|
Schermvideo (alleen SWF versie 7 en hoger)
|
4
|
VP6 (alleen SWF versie 8 en hoger)
|
5
|
VP6-video met alfakanaal (alleen SWF versie 8 en hoger)
|
In de volgende tabel worden de mogelijke waarden voor de parameter
audiocodecid
weergegeven:
audiocodecid
|
Codec-naam
|
0
|
geen compressie
|
1
|
ADPCM
|
2
|
MP3
|
4
|
Nellymoser @ 16 kHz mono
|
5
|
Nellymoser, 8 kHz mono
|
6
|
Nellymoser
|
10
|
AAC
|
11
|
Speex
|