Las etiquetas ID3 proporcionan información sobre un archivo de audio o vídeo, como el título del archivo o el nombre del artista. TVSDK del explorador detecta las etiquetas ID3 en el nivel de segmento de flujo de transporte (TS) en flujos HLS y envía un evento. La aplicación puede extraer datos de la etiqueta.
Cuando se encuentra un nuevo metadato ID3 en el flujo HLS subyacente, el explorador TVSDK déclencheur un AdobePSDK.TimedMetadataEvent
evento.
El TimedMetadata
para ID3 tiene las siguientes propiedades:
Nombre de propiedad | Detalles |
---|---|
type |
Un tipo de TimedMetadata objeto. Para los metadatos de ID3, el valor es AdobePSDK.TimedMetadataType.ID3 . |
hora |
Hora del reproductor en el que se detectaron estos metadatos cronometrados. |
id |
ID del TimedMetadata objeto. |
name |
Nombre de TimedMetadata objeto. Para los metadatos de ID3, el valor es "ID3". |
content |
El contenido de metadatos cronometrados. Para las etiquetas ID3, este valor representa la matriz de bytes serializados. |
metadatos |
TimedMetadata información procesada, que es una instancia de AdobePSDK.Metadata donde se almacenan las tramas ID3.
Nota: Para Safari video , los datos de marco concretos de la etiqueta ID3 se exponen en forma de objeto a través de una etiqueta AdobePSDK.Metadata mientras que para otros exploradores, los datos de trama de la etiqueta ID3 se exponen en forma de matriz de bytes a través de AdobePSDK.Metadata objeto. |
Las distintas etiquetas ID3 almacenadas en TimedMetadata
La aplicación puede recuperarla de las dos maneras siguientes:
En AdobePSDK.PSDKEventType.TIMED_METADATA_AVAILABLE, detector de eventos.
var isSafari = function () {
var nAgt = navigator.userAgent;
var appName = navigator.appName;
if ((nAgt.indexOf('MSIE') === -1) && //is not MS IE
(appName !== 'Netscape' || nAgt.indexOf('Trident/') === -1) && //is not MS IE11
(appName !== 'Netscape' || nAgt.indexOf('Edge') === -1) && // is not edge
(nAgt.indexOf('Chrome') === -1) && // is not chrome
(nAgt.indexOf('Safari') !== -1) //is Safari
){
return true;
}
return false;
};
var hex2a = function (hex, offset, max) {
var str = '';
if (!hex)
return str;
for (var i = offset; i < hex.length && i < offset + max; i++)
str += String.fromCharCode(hex[i]);
return str;
};
var mediaPlayer = new AdobePSDK.MediaPlayer();
mediaPlayer.addEventListener( AdobePSDK.PSDKEventType.TIMED_METADATA_AVAILABLE ,function(event){
var td = event.timedMetadata;
if(td.type == AdobePSDK.TimedMetadataType.ID3){
var md = td.metadata;
var keySet = md.keySet;
var onSafari = isSafari();
if(keySet && keySet.length){
var msg = '';
for(var j = 0; j < keySet.length; j++){
var idTag = keySet[j];
msg += idTag;
if(idTag.indexOf("T") == 0){
/* text frame*/
if(onSafari){
/* text frame data is exposed in object format
* where corresponding text data is exposed through
* data key of text frame data object
* */
var frameDataObject = md.getObject(idTag);
msg += " : " + frameDataObject.data;
} else {
var buff = md.getByteArray(idTag);
msg += " : " + hex2a(buff, 0, buff.length - 1);
}
}
msg += " ; ";
}
}
}
});
Uso del MediaPlayerItem
de timedMetadata
propiedad.
var isSafari = function () {
var nAgt = navigator.userAgent;
var appName = navigator.appName;
if ((nAgt.indexOf('MSIE') === -1) && //is not MS IE
(appName !== 'Netscape' || nAgt.indexOf('Trident/') === -1) && //is not MS IE11
(appName !== 'Netscape' || nAgt.indexOf('Edge') === -1) && // is not edge
(nAgt.indexOf('Chrome') === -1) && // is not chrome
(nAgt.indexOf('Safari') !== -1) //is Safari
){
return true;
}
return false;
};
var hex2a = function (hex, offset, max) {
var str = '';
if (!hex)
return str;
for (var i = offset; i < hex.length && i < offset + max; i++)
str += String.fromCharCode(hex[i]);
return str;
};
var timedMetadataList = player.currentItem.timedMetadata;
for(var i = 0; i < timedMetadataList.length; i++){
var td = timedMetadataList[i];
if(td.type == AdobePSDK.TimedMetadataType.ID3){
var md = td.metadata;
var keySet = md.keySet;
var onSafari = isSafari();
if(keySet && keySet.length){
var msg = '';
for(var j = 0; j < keySet.length; j++){
var idTag = keySet[j];
msg += idTag;
if(idTag.indexOf("T") == 0){
/* text frame*/
if(onSafari){
/* text frame data is exposed in object format
* where corresponding text data is exposed through
* data key of text frame data object
* */
var frameDataObject = md.getObject(idTag);
msg += " : " + frameDataObject.data;
} else {
var buff = md.getByteArray(idTag);
msg += " : " + hex2a(buff, 0, buff.length - 1);
}
}
msg += " ; ";
}
}
}
}