Tag ID3

I tag ID3 forniscono informazioni su un file audio o video, ad esempio il titolo del file o il nome dell’artista. Il browser TVSDK rileva i tag ID3 a livello di segmento del flusso di trasporto (TS) nei flussi HLS e invia un evento. L’applicazione può estrarre dati dal tag .

Quando si trovano nuovi metadati ID3 nel flusso HLS sottostante, il browser TVSDK attiva un evento AdobePSDK.TimedMetadataEvent .

L'oggetto TimedMetadata per ID3 ha le seguenti proprietà:

Nome proprietà Dettagli

type

Un tipo di oggetto TimedMetadata .

Per i metadati ID3, il valore è AdobePSDK.TimedMetadataType.ID3 .

time

Tempo del lettore in cui sono stati rilevati i metadati temporizzati.

id

ID dell'oggetto TimedMetadata .

name

Nome dell'oggetto TimedMetadata . Per i metadati ID3, il valore è "ID3".

content

Contenuto dei metadati temporizzati. Per i tag ID3, questo valore rappresenta l'array di byte serializzati.

metadati

Informazioni elaborate da TimedMetadata, un'istanza di AdobePSDK.Metadata in cui sono archiviati i frame ID3.

Nota: Per il tag video Safari , i dati del frame del tag ID3 vengono esposti sotto forma di oggetto tramite un oggetto AdobePSDK.Metadata mentre per altri browser i dati del frame del tag ID3 vengono esposti sotto forma di array di byte tramite l'oggetto AdobePSDK.Metadata .

I vari tag ID3 memorizzati in TimedMetadata possono essere recuperati dall'applicazione nei due modi seguenti:

  • Nel listener di eventi 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 += " ; ";
                }
            }
        }
    });
    
  • Utilizzo della proprietà MediaPlayerItem di 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 += " ; ";
                }
            }
        }
    }
    

In questa pagina