Etiquetas ID3

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. El SDK de explorador detecta 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 encuentran metadatos de ID3 nuevos en el flujo HLS subyacente, el SDK de explorador déclencheur un evento AdobePSDK.TimedMetadataEvent.

El objeto TimedMetadata para ID3 tiene las siguientes propiedades:

Nombre de propiedad Detalles

type

Tipo de objeto TimedMetadata .

Para los metadatos ID3, el valor es AdobePSDK.TimedMetadataType.ID3 .

time

Hora del reproductor en la que se detectaron estos metadatos temporizados.

id

ID del objeto TimedMetadata .

name

Nombre del objeto TimedMetadata . Para los metadatos ID3, el valor es "ID3".

contenido

El contenido de metadatos temporizados. Para las etiquetas ID3, este valor representa la matriz de bytes serializada.

metadata

Información procesada de TimedMetadata , que es una instancia de AdobePSDK.Metadata donde se almacenan los fotogramas ID3.

Nota: Para la etiqueta de vídeo de Safari, los datos de marco concretos de la etiqueta ID3 se exponen en forma de objeto a través de un objeto AdobePSDK.Metadata mientras que para otros exploradores, los datos de marco de la etiqueta ID3 se exponen en forma de matriz de bytes a través del objeto AdobePSDK.Metadata .

La aplicación puede recuperar las distintas etiquetas ID3 almacenadas en TimedMetadata de las dos formas siguientes:

  • En el detector de eventos AdobePSDK.PSDKEventType.TIMED_METADATA_AVAILABLE.

    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 de la propiedad MediaPlayerItem timedMetadata.

    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 += " ; "; 
                } 
            } 
        } 
    } 
    

En esta página