2017-06-05 4 views
0
  1. Quelle est la relation entre l'enfant fourni à MediaKeySession.generateRequest() et celui fourni via MediaKeyMessageEvent?EME Key ID différent dans la demande de session par rapport au message (ClearKey)

  2. Si elles sont supposées être identiques - pourquoi sont-elles différentes dans le code ci-dessous? note, cela ne fonctionnera pas ici en raison des restrictions de sécurité

navigator.requestMediaKeySystemAccess("org.w3.clearkey", [{ 
 
    initDataTypes: ['webm'], 
 
    audioCapabilities: [{ 
 
     contentType: 'audio/webm; codecs="opus"' 
 
    }], 
 
    videoCapabilities: [{ 
 
     contentType: 'video/webm; codecs="vp8"' 
 
    }, 
 
    { 
 
     contentType: 'video/webm; codecs="vp9"' 
 
    } 
 
    ], 
 
}]).then((keySystemAccess) => { 
 
    return keySystemAccess.createMediaKeys(); 
 
}).then((mediaKeys) => { 
 
    var session = mediaKeys.createSession("temporary"); 
 
    var keyId = "VHM2iIMGiSg"; 
 
    var initData = '{"kids":["' + keyId + '"]}'; 
 
    console.log(keyId); 
 

 
    session.addEventListener('message', (evt) => { 
 
     var requestJson = new TextDecoder().decode(evt.message); 
 
     var request = JSON.parse(requestJson); 
 
     console.log(request.kids[0]); 
 
    }); 
 

 
    this.session.generateRequest("webm", new TextEncoder().encode(initData)); 
 
});

sortie:

VHM2iIMGiSg

eyJraWRzIjpbIlZITTJpSU1HaVNnIl19

sortie est prévue pour la deuxième ligne soit aussi VHM2iIMGiSg

Répondre

2

eyJraWRzIjpbIlZITTJpSU1HaVNnIl19 est la valeur codée de base64url de initData qui a été passé à generateRequest.

La raison pour laquelle request.kids[0] est la pleine valeur de initData et non la valeur de keyId est parce que generateRequest a été appelé avec le paramètre initDataType réglé sur webm. Si le paramètre initDataType avait été défini sur keyids, la valeur request.kids[0] correspondrait à keyId.

Lorsque le paramètre est réglé sur initDataTypewebm le paramètre initData devrait être un single key ID of one or more bytes. Alors que lorsque le paramètre initDataType est défini sur keyids, le paramètre initData devrait être un JSON object encoded as UTF-8, containing a single member kids which is an array of base64url encoded Key ID(s).