Implementing the ADL Video Profile
Video Profile Materials
Link to the profile: https://profiles.adlnet.gov/profile/90b2c849-d744-4d0c-8bd0-403e7859a35b
Everything about profiles: xAPI Profiles
Profile JSON definition: xAPI Video Profile Definition
Gap Analysis
The goal is to determine what changes we would need to make to the existing event-routing-backends implementation of video events to make it full conformant with the video profile.
Problem 1: Unsupported Events
The Open edX event stream currently has events related to video that are not supported by the existing ADL profile, for example the show_transcript event.
Such events seem to be appropriately modeled using the profiles “Interacted” verb. A simple example of the the show_transcript event would be:
{
"username": "e0d",
"event_source": "browser",
"event_type": "show_transcript",
"event": {
"code": "AU66NP1kQm0",
"id": "i4x-MITx-6_00_1_3x-videw-Asymptotic_Notation",
"currentTime": 0
},
"context": {
"course_id": "MITx/6.00.1_3x/2T2014",
"org_id": "MITx",
"path": "/event"
},
"time": "2022-07-27T10:30:03.234323+00:00",
"page": "https://courses.edx.org/courses/MITx/6.00.1_3x/2T2014/courseware/e52720be0db811eda290381428857bd9/videosquence:Lecture_8/"
}
Interacted was designed to support diverse extensions without requiring a change to the core of the video profile.
Used to express that the actor interacted with the player (except play, pause, seek). e.g. mute, unmute, change resolution, change player size, etc.
Here’s an example of a template from the video profile documentation for a statement generate when closed captioning is enabled.
Note that the specification of the generic interacted
verb happens in the extensions
section of the context
. The extensions are specified as a name value pair.
{
"actor": {
"mbox": "mailto:jlh@example.com",
"name": "Video User",
"objectType": "Agent"
},
"verb": {
"id": "http://adlnet.gov/expapi/verbs/interacted",
"display": {
"en-US": "interacted"
}
},
"timestamp": "2018-08-07T15:42:20.066Z",
"object": {
"definition": {
"type": "https://w3id.org/xapi/video/activity-type/video",
"name": {
"en-US": "Ocean Life"
},
"description": {
"en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
}
},
"id": "http://vjs.zencdn.net/v/oceans.mp4",
"objectType": "Activity"
},
"result": {
"extensions": {
"https://w3id.org/xapi/video/extensions/time": 28.799
}
},
"context": {
"contextActivities": {
"category": [
{
"id": "https://w3id.org/xapi/video"
}
]
},
"extensions": {
"https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
"https://w3id.org/xapi/video/extensions/cc-subtitle-lang": "en",
"https://w3id.org/xapi/video/extensions/cc-enabled": true
},
"registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
},
"id": "f71a5b62-53d5-4794-aa75-7e0dc2570eed"
}
Mapping Existing Event Routing Backing Statements to the Video Profile
Mapping documentation for the Open edX events to xAPI events as currently implemented is in the event_routing_backends
repository.
Tracking Event | Legacy Name | xAPI Verb |
---|---|---|
load_video | ||
| ||
stop_video | ||
pause_video | ||
seek_video | ||
N/A (See the link to the PR to the right) | ||
|
| |
|
|
|
|
|
|