Metadata innehåller information om videofilen, t.ex. varaktighet, bredd, höjd och bildrutehastighet. Vilken metadatainformation som läggs till i videofilen beror på vilket program du använder för att koda videofilen.
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]);
}
}
Den föregående koden genererar följande utdata:
width: 320
audiodelay: 0.038
canSeekToEnd: true
height: 213
cuePoints: ,,
audiodatarate: 96
duration: 16.334
videodatarate: 400
framerate: 15
videocodecid: 4
audiocodecid: 2
Om videon saknar ljud returneras den ljudrelaterade metadatainformationen (som
audiodatarate
)
undefined
eftersom ingen ljudinformation har lagts till i metadata under kodningen.
I föregående kod visas inte referenspunktsinformationen. Om du vill visa metadata för referenspunkten kan du använda följande funktion som visar objekten rekursivt i ett objekt:
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);
}
}
}
Om du använder föregående kodutdrag för att spåra
infoObject
-parametern i
onMetaData()
-metoden skapas följande utdata:
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
I följande exempel visas metadata för en MP4-video. Det förutsätter att det finns ett TextArea-objekt med namnet
metaDataOut
som metadata ska skrivas till.
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;
}
}
}
Funktionen
onMetaData()
returnerar följande utdata för videon:
moovposition=731965
height=352
avclevel=21
videocodecid=avc1
duration=2.36
width=704
videoframerate=25
avcprofile=88
trackinfo=[object Object]
Använda informationsobjektet
I tabellen nedan visas möjliga värden för videometadata som skickas till callback-funktionen
onMetaData()
i det objekt som de tas emot i:
Parameter
|
Beskrivning
|
aacaot
|
AAC-ljudobjekttyp; 0, 1 eller 2 stöds.
|
avclevel
|
AVC IDC-nivånummer som 10, 11, 20, 21 och så vidare.
|
avcprofile
|
AVC-profilnummer som 55, 77, 100 och så vidare.
|
audiocodecid
|
En sträng som visar vilken ljudkodek som används (kodnings- och avkodningsteknik), till exempel .Mp3 eller mp4a.
|
audiodatarate
|
Ett tal som anger hastigheten som ljudet kodas med i kilobyte per sekund.
|
audiodelay
|
Ett tal som anger vilken tid i FLV-filen som är ”time 0” i den ursprungliga FLV-filen. Videoinnehållet måste fördröjas något för att synkronisera ljudet rätt.
|
canSeekToEnd
|
Ett booleskt värde som är
true
om FLV-filen är kodad med en nyckelbildruta på den sista bildrutan som möjliggör sökning ända till slutet av en progressivt nedladdad videofilm. Värdet är
false
om FLV-filen inte kodas med en nyckelbildruta på den sista bildrutan.
|
cuePoints
|
En array med objekt, en för varje referenspunkt som är inbäddad i FLV-filen. Värdet är odefinierat om FLV-filen inte innehåller några referenspunkter. Varje objekt innehåller följande egenskaper:
-
type
: En sträng som anger typen av referenspunkt som antingen ”navigering” eller ”händelse”.
-
name
: En sträng som är namnet på referenspunkten.
-
time
: Ett tal som anger tiden i referenspunkten i sekunder med en noggrannhet på tre decimaler (millisekunder).
-
parameters
: Ett valfritt objekt med namnvärdepar som bestäms av användaren när referenspunkterna skapas.
|
duration
|
Ett tal som anger varaktigheten för videofilen i sekunder.
|
framerate
|
Ett tal som anger bildrutehastigheten i FLV-filen.
|
height
|
Ett tal som anger FLV-filens höjd i pixlar.
|
seekpoints
|
En array som visar tillgängliga nyckelrutor som tidsstämplar i millisekunder. Valfritt.
|
tags
|
En array med nyckelvärdespar som representerar informationen i atomen ”ilst”, som är motsvarigheten till ID3-taggar för MP4-filer. iTunes använder dessa taggar. Kan användas för att visa grafik om sådan finns.
|
trackinfo
|
Objekt som omfattar information på alla spår i MP4-filen, även samplingens beskrivnings-ID.
|
videocodecid
|
En sträng som visar vilken kodekversion som videon kodas i. – till exempel för ”avc1” eller ”VP6F”
|
videodatarate
|
Ett tal som anger videodatahastigheten i FLV-filen.
|
videoframerate
|
MP4-videons bildhastighet.
|
width
|
Ett tal som anger FLV-filens bredd i pixlar.
|
I följande tabell visas giltiga värden för
videocodecid
-parametern:
videocodecid
|
Kodeknamn
|
2
|
Sorenson H.263
|
3
|
Screen-video (endast SWF version 7 och senare)
|
4
|
VP6 (endast SWF version 8 och senare)
|
5
|
VP6-video med alfakanal (endast SWF version 8 och senare)
|
I följande tabell visas giltiga värden för
audiocodecid
-parametern:
audiocodecid
|
Kodeknamn
|
0
|
ej komprimerad
|
1
|
ADPCM
|
2
|
Mp3
|
4
|
Nellymoser @ 16 kHz mono
|
5
|
Nellymoser 8 kHz mono
|
6
|
Nellymoser
|
10
|
AAC
|
11
|
Speex
|