Implementing the ADL Video Profile

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: https://adlnet.github.io/xapi-profiles/xapi-profiles-communication.html

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

Tracking Event

Legacy Name

xAPI Verb

edx.video.loaded

load_video

http://adlnet.gov/expapi/verbs/initialized

edx.video.played

play_video

https://w3id.org/xapi/video/verbs/played

edx.video.stopped

stop_video

http://adlnet.gov/expapi/verbs/terminated

edx.video.paused

pause_video

https://w3id.org/xapi/video/verbs/paused

edx.video.position.changed

seek_video

https://w3id.org/xapi/video/verbs/seeked

N/A (See the link to the PR to the right)

complete_video

https://w3id.org/xapi/dod-isd/verbs/completed

 

 

http://adlnet.gov/expapi/verbs/interacted