├── SUMMARY.md
├── overview.md
├── profile.md
├── references.md
├── GLOSSARY.md
├── README.md
├── templates.md
└── statement_data_model.md
/SUMMARY.md:
--------------------------------------------------------------------------------
1 | # Summary
2 |
3 | * [Introduction](README.md)
4 | * [Summary](SUMMARY.md)
5 | * [Overview](overview.md)
6 | * [xAPI Statement Data Model](statement_data_model.md)
7 | * [References](references.md)
8 | * [Templates](templates.md)
9 | * [Glossary](GLOSSARY.md)
10 |
11 |
--------------------------------------------------------------------------------
/overview.md:
--------------------------------------------------------------------------------
1 | # Overview
2 |
3 | This Video Profile built by xAPI Video Community of Practice describes Experience API Vocabulary to track Video consumption and explains how to use them.
4 |
5 | ## Version
6 |
7 | Current version is: xAPI Video Profile v1.0
8 |
9 | ## History
10 |
11 | | Date | Event |
12 | | :--- | :--- |
13 | | May 9th, 2019 | Version 1.0 |
14 | | Feb 4th, 2019 | Release Candidate 1 \(RC1\) |
15 | | Jan 21st, 2015 | First Meeting |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/profile.md:
--------------------------------------------------------------------------------
1 | #xAPI Video Profile
2 |
3 | ---
4 |
5 | ## Table of Contents
6 | [__Revision History__](#revhistory)
7 | * [__1.0 Overview__](#overview)
8 | * [1.1 Scope](#scope)
9 | * [__2.0 References__](#references)
10 | * [__3.0 Definitions__](#definitions)
11 | * [3.1 Abbreviations and Acronyms](#acronyms)
12 | * [__4.0 xAPI Statement Data Model__](#xapi_data_model)
13 | * [4.1 Statement ID](#statement_id)
14 | * [4.2 Actor](#actor)
15 | * [4.3 Verbs](#verbs)
16 |
17 |
--------------------------------------------------------------------------------
/references.md:
--------------------------------------------------------------------------------
1 | # References
2 |
3 | The following referenced resources are indispensable for the application of this specification.
4 |
5 | * "Experience API", version 1.0.3, ADL
6 | https://github.com/adlnet/xAPI-Spec/blob/xAPI-1.0.3/xAPI.md
7 |
8 | * Internationalized Resource Identifiers (IRIs): IRI Syntax January 2005
9 | https://www.ietf.org/rfc/rfc3987.txt
10 |
11 | * The JSON Data Interchange Format
12 | http://json.org/
13 |
14 | * RFC 5646 Language Tags
15 | https://www.w3.org/International/articles/language-tags/
16 |
--------------------------------------------------------------------------------
/GLOSSARY.md:
--------------------------------------------------------------------------------
1 | # Glossary
2 |
3 | ## ADL
4 |
5 | Advanced Distributed Learning
6 |
7 | ## API
8 |
9 | Application Programming Interface. A set of rules and standards created to allow access into a software application or tool.
10 |
11 | ## IRI
12 |
13 | Internationalized Resource Identifier. A unique identifier which could be an IRL. Used to identify an object such as a verb, activity or activity type. Unlike URIs, IRIs can contain some characters outside of the ASCII character set in order to support international languages.
14 |
15 | IRIs always include a scheme. This is not a requirement of this standard, but part of the definition of IRIs, per RFC 3987. What are sometimes called "relative IRIs" are not IRIs.
16 |
17 | ## IRL
18 |
19 | Internationalized Resource Locator. In the context of this document, an IRL is an IRI that when translated into a URI (per the IRI to URI rules), is a URL.
20 |
21 | ## JSON
22 |
23 | JavaScript Object Notation
24 |
25 | ## LMS
26 |
27 | Learning Management System. "A software package used to administer one or more courses to one or more learners. An LMS is typically a web-based system that allows learners to authenticate themselves, register for courses, complete courses and take assessments" (Learning Systems Architecture Lab definition). An LMS in this document is used as an example of how a user is identified as "trusted" within a system and able to access its Learning Experiences.
28 |
29 | ## LRP
30 |
31 | Learning Record Provider. An xAPI Client that sends data to Learning Record Store\(s\). Often, the Learning Record Provider will create Learning Records while monitoring a learner as a part of a Learning Experience.
32 |
33 | ## LRS
34 |
35 | Learning Record Store. A server \(i.e. system capable of receiving and processing web requests\) that is responsible for receiving, storing, and providing access to Learning Records.
36 |
37 | ## URI
38 |
39 | Uniform Resource Identifier
40 |
41 | ## URL
42 |
43 | Uniform Resource Locator
44 |
45 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # xAPI Video Community of Practice
2 |
3 | This is an official ADL community to build a profile of the xAPI to identify and standardize video interactions that can be tracked. The profile is known as **xAPI Video Profile**.
4 |
5 | ## xAPI Video CoP Meetings
6 |
7 | Meetings have been suspended since the release of xAPI Video Profile v1.0
8 |
9 | For any questions, or to request for a meeting, please contact the Chair of the Group:
10 |
11 | **Pankaj Agrawal**
12 | contact@pankajagrawal.com
13 |
14 | or raise a [GitHub ticket](https://github.com/liveaspankaj/xapi-video-cop/issues).
15 |
16 | Please visit the Wiki for details and Meeting Minutes:
17 | https://github.com/liveaspankaj/xapi-video-cop/wiki
18 |
19 | ## xAPI Video CoP Google Group
20 |
21 | * URL: https://groups.google.com/forum/#!members/xapi-video-cop
22 |
23 |
24 | ## xAPI Video CoP Contributors
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | | Name |
34 | Company |
35 |
36 |
37 | | Pankaj Agrawal |
38 | Next Software Solutions |
39 |
40 |
41 | | Humera Shazia |
42 | Next Software Solutions |
43 |
44 |
45 | | Jonathan Mark Kevan |
46 | University of Hawaii at Manoa |
47 |
48 |
49 | | Jason Haag |
50 | ADL & Veracity |
51 |
52 |
53 | | Anthony Altieri |
54 | RedCross |
55 |
56 |
57 | | Patrick Selby |
58 | LexisNexis |
59 |
60 |
61 | | Mark Grant |
62 | |
63 |
64 |
65 | | Charles Touron |
66 | US ARMY |
67 |
68 |
69 | | Craig Wiggins |
70 | ADL |
71 |
72 |
73 | | Andy Johnson |
74 | ADL |
75 |
76 |
77 | | Bill McDonald |
78 | cmi5 working group leader |
79 |
80 |
81 | | Henry Ryng |
82 | inXsol |
83 |
84 |
85 | | Adam Cooper |
86 | Cetis, University of Bolton, UK |
87 |
88 |
89 | | Andrew Downes |
90 | Rustici |
91 |
92 |
93 | | Christopher Thompson |
94 | |
95 |
96 |
97 | | Daniel Latourelle |
98 | |
99 |
100 |
101 | | Florian Tolk |
102 | ADL |
103 |
104 |
105 | | Ingo Dahn |
106 | University of Koblenz-Landau |
107 |
108 |
109 | | J Pablo Caballero |
110 | Acutilis s.l |
111 |
112 |
113 | | Jeff Segall |
114 | |
115 |
116 |
117 | | Jessie Chuang |
118 | Classroom Aid Inc. |
119 |
120 |
121 | | John Costa |
122 | IEEE ADB/RePubIT |
123 |
124 |
125 | | Marko Grolo |
126 | |
127 |
128 |
129 | | Michael Stordeur |
130 | JDI Software |
131 |
132 |
133 | | Trey Hayden |
134 | ADL |
135 |
136 |
137 | | Vincent |
138 | |
139 |
140 |
141 |
142 |
143 |
144 | ## xAPI Video Profile (current version)
145 |
146 | **Current Version:** xAPI Video Profile v1.0
147 |
148 | [Online Version](https://liveaspankaj.gitbooks.io/xapi-video-profile/content/SUMMARY.html)
149 |
150 | **Downloads:** [PDF](https://www.gitbook.com/download/pdf/book/liveaspankaj/xapi-video-profile) | [Mobi](https://www.gitbook.com/download/mobi/book/liveaspankaj/xapi-video-profile) | [ePub](https://www.gitbook.com/download/epub/book/liveaspankaj/xapi-video-profile)
151 |
152 | ## License
153 | Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
154 |
155 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License."
156 |
157 |
158 |
159 |
--------------------------------------------------------------------------------
/templates.md:
--------------------------------------------------------------------------------
1 | # Statement Template Examples
2 |
3 | The following example statements are provided for your convenience and conform to the video profile requirements.
4 |
5 | ## Initialized
6 |
7 | ```
8 | {
9 | "actor": {
10 | "mbox": "mailto:jlh@example.com",
11 | "name": "Video User",
12 | "objectType": "Agent"
13 | },
14 | "verb": {
15 | "id": "http://adlnet.gov/expapi/verbs/initialized",
16 | "display": {
17 | "en-US": "initialized"
18 | }
19 | },
20 | "timestamp": "2018-08-07T15:27:52.365Z",
21 | "object": {
22 | "definition": {
23 | "type": "https://w3id.org/xapi/video/activity-type/video",
24 | "name": {
25 | "en-US": "Ocean Life"
26 | },
27 | "description": {
28 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
29 | }
30 | },
31 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
32 | "objectType": "Activity"
33 | },
34 | "context": {
35 | "contextActivities": {
36 | "category": [
37 | {
38 | "id": "https://w3id.org/xapi/video"
39 | }
40 | ]
41 | },
42 | "extensions": {
43 | "https://w3id.org/xapi/video/extensions/volume": 1,
44 | "https://w3id.org/xapi/video/extensions/video-playback-size": "640x264",
45 | "https://w3id.org/xapi/video/extensions/user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36",
46 | "https://w3id.org/xapi/video/extensions/speed": "1x",
47 | "https://w3id.org/xapi/video/extensions/cc-subtitle-lang": "",
48 | "https://w3id.org/xapi/video/extensions/completion-threshold": "1.0",
49 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
50 | "https://w3id.org/xapi/video/extensions/length": 46.613333,
51 | "https://w3id.org/xapi/video/extensions/quality": "960x400",
52 | "https://w3id.org/xapi/video/extensions/screen-size": "2560x1440",
53 | "https://w3id.org/xapi/video/extensions/frame-rate": "23.98",
54 | "https://w3id.org/xapi/video/extensions/cc-enabled": false,
55 | "https://w3id.org/xapi/video/extensions/full-screen": false
56 | },
57 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
58 | },
59 | "id": "86c5b148-4462-4da9-a13f-b570c27fa049"
60 | }
61 | ```
62 |
63 | ## Played
64 |
65 | ```
66 | {
67 | "actor": {
68 | "mbox": "mailto:jlh@example.com",
69 | "name": "Video User",
70 | "objectType": "Agent"
71 | },
72 | "verb": {
73 | "id": "https://w3id.org/xapi/video/verbs/played",
74 | "display": {
75 | "en-US": "played"
76 | }
77 | },
78 | "timestamp": "2018-08-07T15:27:52.376Z",
79 | "object": {
80 | "definition": {
81 | "type": "https://w3id.org/xapi/video/activity-type/video",
82 | "name": {
83 | "en-US": "Ocean Life"
84 | },
85 | "description": {
86 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
87 | }
88 | },
89 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
90 | "objectType": "Activity"
91 | },
92 | "result": {
93 | "extensions": {
94 | "https://w3id.org/xapi/video/extensions/time": 0
95 | }
96 | },
97 | "context": {
98 | "contextActivities": {
99 | "category": [
100 | {
101 | "id": "https://w3id.org/xapi/video"
102 | }
103 | ]
104 | },
105 | "extensions": {
106 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
107 | "https://w3id.org/xapi/video/extensions/length": 46.613333
108 | },
109 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
110 | },
111 | "id": "ac522d8a-ed56-4a5e-bc86-14067aec4101"
112 | }
113 | ```
114 |
115 | ## Paused
116 |
117 | ```
118 | {
119 | "actor": {
120 | "mbox": "mailto:jlh@example.com",
121 | "name": "Video User",
122 | "objectType": "Agent"
123 | },
124 | "verb": {
125 | "id": "https://w3id.org/xapi/video/verbs/paused",
126 | "display": {
127 | "en-US": "paused"
128 | }
129 | },
130 | "timestamp": "2018-08-07T15:27:55.273Z",
131 | "object": {
132 | "definition": {
133 | "type": "https://w3id.org/xapi/video/activity-type/video",
134 | "name": {
135 | "en-US": "Ocean Life"
136 | },
137 | "description": {
138 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
139 | }
140 | },
141 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
142 | "objectType": "Activity"
143 | },
144 | "result": {
145 | "extensions": {
146 | "https://w3id.org/xapi/video/extensions/played-segments": "0[.]2.997",
147 | "https://w3id.org/xapi/video/extensions/progress": 0.06,
148 | "https://w3id.org/xapi/video/extensions/time": 2.997
149 | }
150 | },
151 | "context": {
152 | "contextActivities": {
153 | "category": [
154 | {
155 | "id": "https://w3id.org/xapi/video"
156 | }
157 | ]
158 | },
159 | "extensions": {
160 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
161 | "https://w3id.org/xapi/video/extensions/length": 46.613333
162 | },
163 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
164 | },
165 | "id": "587c8e19-3a5e-4be2-ba09-9c6b68c4fb20"
166 | }
167 | ```
168 |
169 | ## Seeked \(Change Video Playback from 4.473 Seconds to 1.9 Seconds \)
170 |
171 | ```
172 | {
173 | "actor": {
174 | "mbox": "mailto:jlh@example.com",
175 | "name": "Video User",
176 | "objectType": "Agent"
177 | },
178 | "verb": {
179 | "id": "https://w3id.org/xapi/video/verbs/seeked",
180 | "display": {
181 | "en-US": "seeked"
182 | }
183 | },
184 | "timestamp": "2018-08-07T15:37:53.491Z",
185 | "object": {
186 | "definition": {
187 | "type": "https://w3id.org/xapi/video/activity-type/video",
188 | "name": {
189 | "en-US": "Ocean Life"
190 | },
191 | "description": {
192 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
193 | }
194 | },
195 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
196 | "objectType": "Activity"
197 | },
198 | "result": {
199 | "extensions": {
200 | "https://w3id.org/xapi/video/extensions/time-to": 1.9,
201 | "https://w3id.org/xapi/video/extensions/time-from": 4.473
202 | }
203 | },
204 | "context": {
205 | "contextActivities": {
206 | "category": [
207 | {
208 | "id": "https://w3id.org/xapi/video"
209 | }
210 | ]
211 | },
212 | "extensions": {
213 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049"
214 | },
215 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
216 | },
217 | "id": "4183175b-a6b0-4e59-8614-fd9c0d2593dd"
218 | }
219 | ```
220 |
221 | ## Interacted Event \(Change to Full Screen\)
222 |
223 | ```
224 | {
225 | "actor": {
226 | "mbox": "mailto:jlh@example.com",
227 | "name": "Video User",
228 | "objectType": "Agent"
229 | },
230 | "verb": {
231 | "id": "http://adlnet.gov/expapi/verbs/interacted",
232 | "display": {
233 | "en-US": "interacted"
234 | }
235 | },
236 | "timestamp": "2018-08-07T15:41:59.549Z",
237 | "object": {
238 | "definition": {
239 | "type": "https://w3id.org/xapi/video/activity-type/video",
240 | "name": {
241 | "en-US": "Ocean Life"
242 | },
243 | "description": {
244 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
245 | }
246 | },
247 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
248 | "objectType": "Activity"
249 | },
250 | "result": {
251 | "extensions": {
252 | "https://w3id.org/xapi/video/extensions/time": 10.096
253 | }
254 | },
255 | "context": {
256 | "contextActivities": {
257 | "category": [
258 | {
259 | "id": "https://w3id.org/xapi/video"
260 | }
261 | ]
262 | },
263 | "extensions": {
264 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
265 | "https://w3id.org/xapi/video/extensions/video-playback-size": "1122x1177",
266 | "https://w3id.org/xapi/video/extensions/screen-size": "2560x1440",
267 | "https://w3id.org/xapi/video/extensions/full-screen": true
268 | },
269 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
270 | },
271 | "id": "abe55d73-ffb3-4093-ab1a-424592c119ee"
272 | }
273 | ```
274 |
275 | ## Interacted Event \(Change Back to Original Screen Size\)
276 |
277 | ```
278 | {
279 | "actor": {
280 | "mbox": "mailto:jlh@example.com",
281 | "name": "Video User",
282 | "objectType": "Agent"
283 | },
284 | "verb": {
285 | "id": "http://adlnet.gov/expapi/verbs/interacted",
286 | "display": {
287 | "en-US": "interacted"
288 | }
289 | },
290 | "timestamp": "2018-08-07T15:42:03.400Z",
291 | "object": {
292 | "definition": {
293 | "type": "https://w3id.org/xapi/video/activity-type/video",
294 | "name": {
295 | "en-US": "Ocean Life"
296 | },
297 | "description": {
298 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
299 | }
300 | },
301 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
302 | "objectType": "Activity"
303 | },
304 | "result": {
305 | "extensions": {
306 | "https://w3id.org/xapi/video/extensions/time": 13.947
307 | }
308 | },
309 | "context": {
310 | "contextActivities": {
311 | "category": [
312 | {
313 | "id": "https://w3id.org/xapi/video"
314 | }
315 | ]
316 | },
317 | "extensions": {
318 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
319 | "https://w3id.org/xapi/video/extensions/video-playback-size": "640x264",
320 | "https://w3id.org/xapi/video/extensions/screen-size": "2560x1440",
321 | "https://w3id.org/xapi/video/extensions/full-screen": false
322 | },
323 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
324 | },
325 | "id": "c3371384-4598-43f2-b1b3-86be5df66ed5"
326 | }
327 | ```
328 |
329 | ## Interacted Event \(Change Volume to Muted\)
330 |
331 | ```
332 | {
333 | "actor": {
334 | "mbox": "mailto:jlh@example.com",
335 | "name": "Video User",
336 | "objectType": "Agent"
337 | },
338 | "verb": {
339 | "id": "http://adlnet.gov/expapi/verbs/interacted",
340 | "display": {
341 | "en-US": "interacted"
342 | }
343 | },
344 | "timestamp": "2018-08-07T15:42:12.016Z",
345 | "object": {
346 | "definition": {
347 | "type": "https://w3id.org/xapi/video/activity-type/video",
348 | "name": {
349 | "en-US": "Ocean Life"
350 | },
351 | "description": {
352 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
353 | }
354 | },
355 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
356 | "objectType": "Activity"
357 | },
358 | "result": {
359 | "extensions": {
360 | "https://w3id.org/xapi/video/extensions/time": 20.536
361 | }
362 | },
363 | "context": {
364 | "contextActivities": {
365 | "category": [
366 | {
367 | "id": "https://w3id.org/xapi/video"
368 | }
369 | ]
370 | },
371 | "extensions": {
372 | "https://w3id.org/xapi/video/extensions/volume": 0,
373 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049"
374 | },
375 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
376 | },
377 | "id": "eb6ca563-1e61-4776-a5b0-2a23be8e43b0"
378 | }
379 | ```
380 |
381 | ## Interacted Event \(Change Volume to Unmuted\)
382 |
383 | ```
384 | {
385 | "actor": {
386 | "mbox": "mailto:jlh@example.com",
387 | "name": "Video User",
388 | "objectType": "Agent"
389 | },
390 | "verb": {
391 | "id": "http://adlnet.gov/expapi/verbs/interacted",
392 | "display": {
393 | "en-US": "interacted"
394 | }
395 | },
396 | "timestamp": "2018-08-07T15:42:15.443Z",
397 | "object": {
398 | "definition": {
399 | "type": "https://w3id.org/xapi/video/activity-type/video",
400 | "name": {
401 | "en-US": "Ocean Life"
402 | },
403 | "description": {
404 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
405 | }
406 | },
407 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
408 | "objectType": "Activity"
409 | },
410 | "result": {
411 | "extensions": {
412 | "https://w3id.org/xapi/video/extensions/time": 24.036
413 | }
414 | },
415 | "context": {
416 | "contextActivities": {
417 | "category": [
418 | {
419 | "id": "https://w3id.org/xapi/video"
420 | }
421 | ]
422 | },
423 | "extensions": {
424 | "https://w3id.org/xapi/video/extensions/volume": 1,
425 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049"
426 | },
427 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
428 | },
429 | "id": "f48f70b2-505e-46ae-a562-19fcae19f2ae"
430 | }
431 | ```
432 |
433 | ## Interacted \(Enabled Closed Captioning\)
434 |
435 | ```
436 | {
437 | "actor": {
438 | "mbox": "mailto:jlh@example.com",
439 | "name": "Video User",
440 | "objectType": "Agent"
441 | },
442 | "verb": {
443 | "id": "http://adlnet.gov/expapi/verbs/interacted",
444 | "display": {
445 | "en-US": "interacted"
446 | }
447 | },
448 | "timestamp": "2018-08-07T15:42:20.066Z",
449 | "object": {
450 | "definition": {
451 | "type": "https://w3id.org/xapi/video/activity-type/video",
452 | "name": {
453 | "en-US": "Ocean Life"
454 | },
455 | "description": {
456 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
457 | }
458 | },
459 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
460 | "objectType": "Activity"
461 | },
462 | "result": {
463 | "extensions": {
464 | "https://w3id.org/xapi/video/extensions/time": 28.799
465 | }
466 | },
467 | "context": {
468 | "contextActivities": {
469 | "category": [
470 | {
471 | "id": "https://w3id.org/xapi/video"
472 | }
473 | ]
474 | },
475 | "extensions": {
476 | "https://w3id.org/xapi/video/extensions/session-id": "86c5b148-4462-4da9-a13f-b570c27fa049",
477 | "https://w3id.org/xapi/video/extensions/cc-subtitle-lang": "en",
478 | "https://w3id.org/xapi/video/extensions/cc-enabled": true
479 | },
480 | "registration": "96094a33-cc66-4d9a-8810-a0850ae2a4e1"
481 | },
482 | "id": "f71a5b62-53d5-4794-aa75-7e0dc2570eed"
483 | }
484 | ```
485 |
486 | ## Completed
487 |
488 | ```
489 | {
490 | "actor": {
491 | "mbox": "mailto:jlh@example.com",
492 | "name": "Video User",
493 | "objectType": "Agent"
494 | },
495 | "verb": {
496 | "id": "http://adlnet.gov/expapi/verbs/completed",
497 | "display": {
498 | "en-US": "completed"
499 | }
500 | },
501 | "timestamp": "2018-08-07T16:10:24.158Z",
502 | "object": {
503 | "definition": {
504 | "type": "https://w3id.org/xapi/video/activity-type/video",
505 | "name": {
506 | "en-US": "Ocean Life"
507 | },
508 | "description": {
509 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
510 | }
511 | },
512 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
513 | "objectType": "Activity"
514 | },
515 | "result": {
516 | "completion": true,
517 | "extensions": {
518 | "https://w3id.org/xapi/video/extensions/played-segments": "0[.]46.613",
519 | "https://w3id.org/xapi/video/extensions/progress": 1,
520 | "https://w3id.org/xapi/video/extensions/time": 46.613
521 | }
522 | },
523 | "context": {
524 | "contextActivities": {
525 | "category": [
526 | {
527 | "id": "https://w3id.org/xapi/video"
528 | }
529 | ]
530 | },
531 | "extensions": {
532 | "https://w3id.org/xapi/video/extensions/session-id": "7a1f8a80-8b62-4cf5-9165-a4976280f6c4",
533 | "https://w3id.org/xapi/video/extensions/completion-threshold": "1.0",
534 | "https://w3id.org/xapi/video/extensions/length": 46.613333
535 | },
536 | "registration": "70ec479c-a37d-4407-89ad-9727313e71dc"
537 | },
538 | "id": "019b33ec-4426-40b7-b296-54f05cb9291e"
539 | }
540 | ```
541 |
542 | ## Terminated
543 |
544 | ```
545 | {
546 | "actor": {
547 | "mbox": "mailto:jlh@example.com",
548 | "name": "Video User",
549 | "objectType": "Agent"
550 | },
551 | "verb": {
552 | "id": "http://adlnet.gov/expapi/verbs/terminated",
553 | "display": {
554 | "en-US": "terminated"
555 | }
556 | },
557 | "timestamp": "2018-08-07T16:10:28.452Z",
558 | "object": {
559 | "definition": {
560 | "type": "https://w3id.org/xapi/video/activity-type/video",
561 | "name": {
562 | "en-US": "Ocean Life"
563 | },
564 | "description": {
565 | "en-US": "A short video clip of ocean lifeforms, used by videojs.com as part of their demo."
566 | }
567 | },
568 | "id": "http://vjs.zencdn.net/v/oceans.mp4",
569 | "objectType": "Activity"
570 | },
571 | "result": {
572 | "extensions": {
573 | "https://w3id.org/xapi/video/extensions/played-segments": "0[.]46.613",
574 | "https://w3id.org/xapi/video/extensions/progress": 1,
575 | "https://w3id.org/xapi/video/extensions/time": 46.613
576 | }
577 | },
578 | "context": {
579 | "contextActivities": {
580 | "category": [
581 | {
582 | "id": "https://w3id.org/xapi/video"
583 | }
584 | ]
585 | },
586 | "extensions": {
587 | "https://w3id.org/xapi/video/extensions/session-id": "7a1f8a80-8b62-4cf5-9165-a4976280f6c4",
588 | "https://w3id.org/xapi/video/extensions/completion-threshold": "1.0",
589 | "https://w3id.org/xapi/video/extensions/length": 46.613333
590 | },
591 | "registration": "70ec479c-a37d-4407-89ad-9727313e71dc"
592 | },
593 | "id": "b3cd221b-cd2c-40cd-9291-e3fdcd1f4129"
594 | }
595 | ```
596 |
597 |
598 |
599 |
--------------------------------------------------------------------------------
/statement_data_model.md:
--------------------------------------------------------------------------------
1 | Current Version: xAPI Video Profile v1.0
2 |
3 |
4 | #2. xAPI Statement Data Model
5 |
6 |
7 | ##2.1 Statement ID
8 |
9 | The LRP MUST assign a statement id property in UUID format (as defined in the xAPI specification) for all statements it issues.
10 |
11 |
12 | ##2.2 Actor
13 |
14 | The Actor property must be defined as per the xAPI Specification.
15 |
16 | When the video is launched in an LMS, Actor must be provided by the LMS.
17 |
18 | ##2.3 Verbs
19 |
20 | The following xAPI verbs are defined in this specification.
21 |
22 | LRP MUST use the below verbs that are indicated as mandatory in other sections of this specification.
23 |
24 |
25 | ###2.3.1 Initialized
26 |
27 | | Verb | Initialized |
28 | | ID | http://adlnet.gov/expapi/verbs/initialized |
29 | | Description | An "Initialized" statement is used by the LRP to indicate that the video has been fully initialized or launched. |
30 | | LRP Obligations | The LRP MUST use "Initialized" in the first statement in the video session. The LRP MUST NOT issue multiple statements with "Initialized" for the same video session. |
31 | | Usage | An "Initialized" statement is used by the LRP to indicate that the video has been fully initialized or launched. |
32 |
33 |
34 |
35 |
36 | ###2.3.2 Played
37 |
38 | | Verb | Played |
39 | | ID | https://w3id.org/xapi/video/verbs/played |
40 | | Description | Indicates that the actor started experiencing the recorded media object. |
41 | | LRP Obligations | The LRP MUST use "Played" when the actor starts experiencing the media. |
42 | | Usage | Used when the actor generally played a video or clicked the play button. |
43 |
44 |
45 |
46 | ###2.3.3 Paused
47 |
48 | | Verb | Paused |
49 | | ID | https://w3id.org/xapi/video/verbs/paused |
50 | | Description | Indicates that the actor temporary or permanently stopped experiencing the recorded media object. |
51 | | LRP Obligations | The LRP MUST use "Paused" when the media is stopped. A paused statement MUST be sent before a terminated statement if not already sent. |
52 | | Usage | Indicates that the actor temporary or permanently stopped experiencing the recorded media object. |
53 |
54 |
55 |
56 | ###2.3.4 Seeked
57 |
58 | | Verb | Seeked |
59 | | ID | https://w3id.org/xapi/video/verbs/seeked |
60 | | Description | Indicates the actor changed the progress towards a specific point. |
61 | | LRP Obligations | The LRP MUST use "Seeked" when the Actor moves the progress bar forward or backward to a specific time in video. |
62 | | Usage | Used in combination with time-from and time-to extensions when the Actor moves the progress bar forward or backward to a specific time in the video. |
63 |
64 |
65 |
66 | ###2.3.5 Interacted
67 |
68 | | Verb | Interacted |
69 | | ID | http://adlnet.gov/expapi/verbs/interacted |
70 | | Description | Used to express that the actor interacted with the player (except play, pause, seek). e.g. mute, unmute, change resolution, change player size, etc. |
71 | | LRP Obligations | Optional |
72 | | Usage | Used to express that the actor interacted with the player (except play, pause, seek). e.g. mute, unmute, change resolution, change player size, etc. |
73 |
74 |
75 |
76 |
77 | ###2.3.6 Completed
78 |
79 | | Verb | Completed |
80 | | ID | http://adlnet.gov/expapi/verbs/completed |
81 | | Description | Used to express that the actor completed a video by watching all parts of the video at least once. |
82 | | LRP Obligations | The LRP MUST use "Completed" when the Actor has completed a video by watching all parts of the video at least once.
83 | The "completion" property of the result MUST be set to true for this statement.
84 | The "duration" property of the result MUST be included in this statement and MUST represent total time spent during consuming the video under current registration. e.g. PT218S
85 |
86 | |
87 | | Usage | Used to express that the actor completed a video by watching all parts of the video at least once. The progress and heatmap result extension can be used to calculate the duration and completion of video. |
88 |
89 |
90 |
91 | ###2.3.7 Terminated
92 |
93 | | Verb | Terminated |
94 | | ID | http://adlnet.gov/expapi/verbs/terminated |
95 | | Description | Used to express that the actor ended a video. |
96 | | LRP Obligations | Optional.
97 |
98 | - The LRP MAY use "Terminated" when the Actor has terminated the video.
99 | - A "Paused" statement MUST be sent before "Terminated" statement if not already sent.
100 | - Any statements after this in the current video session MUST NOT be sent, and will be ignored if sent.
101 |
102 |
103 |
104 | |
105 | | Usage | Used to express that the actor ended a video. |
106 |
107 |
108 | ##2.4 Object
109 |
110 | An Object with objectType "Activity" MUST be present, as specified in the xAPI Spec.
111 |
112 | The Object represents the video or media being consumed by the Actor.
113 |
114 | ###2.4.1 Definition
115 |
116 | Object definition MAY contain name, description and other details of the media, as per the xAPI Spec.
117 |
118 | Object definition MUST be present and MUST contain activity "type" as: https://w3id.org/xapi/video/activity-type/video
119 |
120 |
121 |
122 | ##2.5 Result
123 |
124 | Result is an optional property that represents a measured outcome related to the Statement in which it is included.
125 |
126 | It may be present in a statement depending on the verb used.
127 |
128 | ###2.5.1 Score
129 |
130 | A score is not required to be reported. If a score is reported, it must be as per the xAPI Spec.
131 |
132 |
133 | ###2.5.2 Completion
134 |
135 | The "completion" property of the result MUST be set to true for the 'completed' statement.
136 |
137 | Other Video Profile statements MUST NOT include the "completion" property.
138 |
139 | ###2.5.3 Duration
140 |
141 | The "duration" property is an ISO 8601 formatted time value.
142 |
143 | Duration MUST be included in "completed" statement and MUST represent total time spent consuming the video under current registration. e.g. PT218S
144 |
145 | ###2.5.4 Result Extensions
146 |
147 | There are several additional results related values defined in Video Profile that can be added to the statement under result extensions.
148 |
149 | ###2.5.4.1 Time
150 |
151 |
152 | | Extension | time
153 | |
154 | | ID | https://w3id.org/xapi/video/extensions/time |
155 | | Description | Used to express the time into the video. |
156 | | LRP Obligations |
157 |
158 | - The LRP MUST assign time value to statements with "played", "paused", "terminated", "interacted" and "completed" verbs.
159 | - Float Value with maximum 3 decimals.
160 |
161 |
162 | |
163 | | Usage | Example: "23.560" represents video position at 23 seconds and 560 milliseconds. |
164 |
165 |
166 | ###2.5.4.2 Time From
167 |
168 |
169 | | Extension | time-from
170 | |
171 | | ID | https://w3id.org/xapi/video/extensions/time-from |
172 | | Description | Used to identify the point in time the actor changed from in a media object during a seek operation. |
173 | | LRP Obligations |
174 |
175 | - The LRP MUST assign time-from value to statements with "seeked" verbs only.
176 | - Float Value with maximum 3 decimals.
177 |
178 |
179 | |
180 | | Usage | Example: "23.560" represents video position at 23 seconds and 560 milliseconds. |
181 |
182 |
183 | ###2.5.4.3 Time To
184 |
185 |
186 | | Extension | time-to
187 | |
188 | | ID | https://w3id.org/xapi/video/extensions/time-to |
189 | | Description | Used to identify the point in time the actor changed to in a media object during a seek operation. |
190 | | LRP Obligations |
191 |
192 | - The LRP MUST assign time-to value to statements with "seeked" verbs only.
193 | - Float Value with maximum 3 decimals.
194 |
195 |
196 | |
197 | | Usage | Example: "23.560" represents video position at 23 seconds and 560 milliseconds. |
198 |
199 |
200 |
201 | ###2.5.4.4 Progress
202 |
203 |
204 | | Extension | progress
205 | |
206 | | ID | https://w3id.org/xapi/video/extensions/progress |
207 | | Description | Used to expresses the percentage of media consumed by the actor. |
208 | | LRP Obligations |
209 |
210 | - The LRP MUST assign progress value to statements with "paused", "terminated" and "completed" verbs.
211 | - The LRP MAY assign progress value to other statements.
212 | - Float value between 0 and 1, with a maximum of 3 decimals.
213 |
214 |
215 | |
216 | | Usage | The progress value includes all attempts made during the current registration. The heatmap extension can be used to calculate the progress. |
217 |
218 |
219 | ###2.5.4.5 Played Segments
220 |
221 |
222 |
223 | | Extension | played-segments
224 | |
225 | | ID | https://w3id.org/xapi/video/extensions/played-segments
226 | |
227 | | Description | Played segments
228 | data shows parts of the video the actor watched during current registration in chronological order. |
229 | | LRP Obligations |
230 |
231 | - The LRP MUST assign played-segments value to statements with "paused", "terminated" and "completed" verbs.
232 | - The LRP MAY assign played-segments value to other statements.
233 | - Value is a string. Each part of the video watched is separated with [,]. The 'Time From' and 'Time To' values are separated with [.].
234 | - The time values must match the values recorded as time, time-to and time-from in played, paused, seeked statements.
235 |
236 |
237 | |
238 | | Usage | The played-segments value includes all attempts made during the current registration. It is used for computing the progress and completion. It can also be used to generate heat map of the users consumption of the video.
239 | Example: 0.000[.]12.000[,]14.000[.]21.000[,]18.000[.]30.000 |
240 |
241 |
242 |
243 |
244 |
245 | ##2.6 Context
246 |
247 | All Video Profile statements MUST contain a context that includes all objects/values as defined in this section.
248 |
249 | ###2.6.1 Registration
250 |
251 | The value for the registration property used in the context object MAY be the value provided by the LMS via the launch URL. If registration is not provided via the launch mechanism, the LRP MAY set a fixed registration value.
252 |
253 | The registration value is important because the "progress", the "played-segments" value and "completion" is based on aggregate of all attempts with same registration value attempted by the Actor for the specific media.
254 |
255 | ###2.6.2 Language
256 |
257 | Code representing the language in which the experience being recorded in this Statement (mainly) occurred in, if applicable and known.
258 |
259 | Language is used to provide the spoken language for the audio.
260 |
261 | The value must be RFC 5646, e.g en, en-US, etc
262 |
263 | ###2.6.2 Context Extensions
264 |
265 | ####2.6.2.1 Session ID
266 |
267 |
268 | | Extension | session-id
269 | |
270 | | ID | https://w3id.org/xapi/video/extensions/session-id |
271 | | Description | Used to tell which session the statement is part of. A session starts with the initiated statement and ends with terminated statement. |
272 | | LRP Obligations |
273 |
274 | - The LRP SHOULD assign a session id to all the statements sent during a session.
275 | - Value of session id MUST be the UUID statement id of the initiated statement, i.e. the initialized statement.
276 |
277 |
278 | |
279 | | Usage | |
280 |
281 |
282 |
283 | ###2.6.2.2 CC/Subtitle Enabled
284 |
285 |
286 | | Extension | cc-subtitle-enabled
287 | |
288 | | ID | https://w3id.org/xapi/video/extensions/cc-subtitle-enabled |
289 | | Description | Used to expresses whether subtitle or closed captioning is enabled. |
290 | | LRP Obligations |
291 |
292 | - Value MUST be boolean i.e. true or false.
293 |
294 |
295 | |
296 | | Usage | |
297 |
298 |
299 |
300 | ###2.6.2.3 CC/Subtitle Language
301 |
302 | | Extension | cc-subtitle-lang
303 | |
304 | | ID | https://w3id.org/xapi/video/extensions/cc-subtitle-lang |
305 | | Description | Used to express the language of subtitle or closed captioning. |
306 | | LRP Obligations |
307 |
308 | - Used only when cc-subtitle-enabled is true.
309 |
310 |
311 | |
312 | | Usage | The lexical and value spaces of xsd:language are the set of language codes defined by RFC 5646. Examples: "en" for English or "en-US" for American English
313 | |
314 |
315 |
316 | ###2.6.2.4 Frame Rate
317 |
318 |
319 | | Extension | frame-rate
320 | |
321 | | ID | https://w3id.org/xapi/video/extensions/frame-rate |
322 | | Description | Used to express the frame rate or frames per second of a video (or average rate of frames per second in the case of variable frame-rate). |
323 | | LRP Obligations |
324 | |
325 | | Usage | Represented as a decimal, such as 29.970. |
326 |
327 |
328 | ###2.6.2.5 Full Screen
329 |
330 |
331 | | Extension | full-screen
332 | |
333 | | ID | https://w3id.org/xapi/video/extensions/full-screen |
334 | | Description | Used to expresses that the video is played in full screen mode. |
335 | | LRP Obligations |
336 |
337 | - Value MUST be boolean i.e. true or false.
338 |
339 |
340 | |
341 | | Usage | |
342 |
343 |
344 |
345 | ###2.6.2.6 Quality
346 |
347 |
348 | | Extension | quality
349 | |
350 | | ID | https://w3id.org/xapi/video/extensions/quality |
351 | | Description | Used to express the video resolution or quality. |
352 | | LRP Obligations |
353 |
354 | - Value is a string. e.g. 360, 480, 720, 1080, 2160, sd, hd, 4k, 8k etc.
355 |
356 | |
357 | | Usage | |
358 |
359 |
360 | ###2.6.2.7 Screen Size
361 |
362 |
363 | | Extension | screen-size
364 | |
365 | | ID | https://w3id.org/xapi/video/extensions/screen-size |
366 | | Description | Used to express the device playback screen size or the maximum available screen size for Video playback. |
367 | | LRP Obligations |
368 |
369 | - Value MUST be in WxH format in pixels. e.g. 1080x960, 640x480, 800x600
370 |
371 | |
372 | | Usage | |
373 |
374 |
375 | ###2.6.2.8 Video Playback Size
376 |
377 |
378 | | Extension | video-playback-size
379 | |
380 | | ID | https://w3id.org/xapi/video/extensions/video-playback-size |
381 | | Description | Used to identify the size in Width x Height of the video as viewed by the user. |
382 | | LRP Obligations |
383 |
384 | - Value MUST be in WxH format in pixels. e.g. 1080x960, 640x480, 800x600
385 |
386 | |
387 | | Usage | |
388 |
389 |
390 | ###2.6.2.9 Speed
391 |
392 |
393 | | Extension | speed
394 | |
395 | | ID | https://w3id.org/xapi/video/extensions/speed |
396 | | Description | Used to express the play-back speed. |
397 | | LRP Obligations |
398 |
399 | - Value MUST be represented with decimal or integer values along with an 'x' meaning multiplying factor to the normal speed. e.g. -2x, -1x, -0.5x, 0.5x, 1x, 2x.
400 |
401 | |
402 | | Usage |
403 |
404 | - Negative value means rewind. e.g. -1x, -2x
405 | - Positive value with value greater than 1x means fast forward. e.g. 1.5x, 2x, 4x
406 | - Positive value with value less than 1x means slow motion play back. e.g. 0.5x, 0.25x, 0.125x
407 |
408 | |
409 |
410 |
411 |
412 | ###2.6.2.10 Track
413 |
414 |
415 | | Extension | track
416 | |
417 | | ID | https://w3id.org/xapi/video/extensions/track |
418 | | Description | Used to identify the name of the audio track in a media object. |
419 | | LRP Obligations |
420 |
421 | - Value MUST be a string.
422 |
423 | |
424 | | Usage | |
425 |
426 |
427 | ###2.6.2.11 User Agent
428 |
429 |
430 | | Extension | user-agent
431 | |
432 | | ID | https://w3id.org/xapi/video/extensions/user-agent |
433 | | Description | Used to identify the User Agent string of the browser, if the video is launched in browser. |
434 | | LRP Obligations |
435 |
436 | - Value MUST be a string.
437 |
438 | |
439 | | Usage | |
440 |
441 |
442 | ###2.6.2.12 Volume
443 |
444 |
445 | | Extension | volume
446 | |
447 | | ID | https://w3id.org/xapi/video/extensions/volume |
448 | | Description | Used to identify the loudness of sound specified for a media object. |
449 | | LRP Obligations |
450 |
451 | - Value MUST be a float value between 0 and 1.
452 |
453 | |
454 | | Usage | Minimum 0 = Mute. Maximum 1 = 100% Volume |
455 |
456 |
457 | ###2.6.2.13 Length
458 |
459 |
460 | | Extension | length
461 | |
462 | | ID | https://w3id.org/xapi/video/extensions/length |
463 | | Description | The actual length of the media in seconds. |
464 | | LRP Obligations |
465 |
466 | - Value MUST be a float value with maximum 3 decimals.
467 | - It MUST be included in Video Profile statements with these verbs: initialized, completed, terminated and paused.
468 |
469 | |
470 | | Usage | |
471 |
472 |
473 | ###2.6.2.14 Completion Threshold
474 |
475 |
476 | | Extension | completion-threshold
477 | |
478 | | ID | https://w3id.org/xapi/video/extensions/completion-threshold |
479 | | Description | Completion Threshold specifies the percentage of media that should be consumed to trigger a completion. |
480 | | LRP Obligations |
481 |
482 | - Value MUST be between 0 and 1.
483 | - Value MUST be a float value with maximum 3 decimals.
484 | - If Completion Threshold is not included, it is assumed to be 1, i.e. 100%.
485 | - If Completion Threshold is not 1, it MUST be included in Video Profile statements with these verbs: initialized, completed, terminated and paused.
486 |
487 |
488 | |
489 | | Usage | |
490 |
491 |
492 |
493 | ###2.6.2 Context Activities
494 |
495 | ####2.6.2.1 Category
496 |
497 |
498 | | ID | https://w3id.org/xapi/video |
499 | | Description | xAPI Video Profile statement |
500 | | LRP Obligations | Must.
501 | |
502 | | Usage | Identifies a statement as conforming to the xAPI Video Profile |
503 |
504 |
505 | ###2.7 Summary of Extensions Usage
506 |
507 | | Verbs | Required | Optional |
508 |
509 |
510 |
511 | | Initialized |
512 |
513 | Context Extensions
514 |
515 | - Length
516 | - Completion Threshold (if value < 1)
517 |
518 | |
519 |
520 |
521 | Context Extensions
522 |
523 |
524 | - Session ID
525 | - CC/Subtitle Enabled
526 | - CC/Subtitle Language
527 | - Frame Rate
528 | - Full Screen
529 | - Quality
530 | - Screen Size
531 | - Video Playback Size
532 | - Speed
533 | - Track
534 | - User Agent
535 | - Volume
536 | - Completion Threshold (if value = 1)
537 |
538 | |
539 |
540 |
541 |
542 |
543 |
544 |
545 | | Played |
546 |
547 |
548 | Result Extensions
549 |
552 | |
553 |
554 |
555 |
556 | Context Extensions
557 |
560 |
561 |
562 | |
563 |
564 |
565 |
566 |
567 |
568 |
569 | | Paused |
570 |
571 | Context Extensions
572 |
573 | - Length
574 | - Completion Threshold (if value < 1)
575 |
576 |
577 | Result Extensions
578 |
579 | - Time
580 | - Progress
581 | - Played Segments
582 |
583 | |
584 |
585 |
586 | Context Extensions
587 |
588 | - Session ID
589 | - Completion Threshold (if value = 1)
590 |
591 |
592 |
593 | |
594 |
595 |
596 |
597 |
598 |
599 |
600 | | Seeked |
601 |
602 |
603 | Result Extensions
604 |
605 | - Time From
606 | - Time To
607 |
608 | |
609 |
610 |
611 | Context Extensions
612 |
613 | - Length
614 | - Session ID
615 |
616 |
617 |
618 | Result Extensions
619 |
620 | - Progress
621 | - Played Segments
622 |
623 | |
624 |
625 |
626 |
627 |
628 |
629 |
630 | | Interacted |
631 |
632 |
633 | Context Extensions
634 |
635 | - Context Extensions for which the value has changed during interaction MUST be included
636 |
637 |
638 | Result Extensions
639 |
642 |
643 | |
644 |
645 |
646 |
647 | Context Extensions
648 |
649 |
650 | - Session ID
651 | - CC/Subtitle Enabled
652 | - CC/Subtitle Language
653 | - Frame Rate
654 | - Full Screen
655 | - Quality
656 | - Video Playback Size
657 | - Speed
658 | - Track
659 | - Volume
660 |
661 | |
662 |
663 |
664 |
665 |
666 |
667 | | Completed |
668 |
669 | Context Extensions
670 |
671 | - Length
672 | - Completion Threshold (if value < 1)
673 |
674 |
675 |
676 |
677 | Result Extensions
678 |
679 | - Time
680 | - Progress
681 | - Played Segments
682 |
683 | Others
684 |
685 | - result.completion = true
686 | - result.duration = (total time spent consuming the video under current registration)
687 |
688 |
689 | |
690 |
691 |
692 | Context Extensions
693 |
694 | - Session ID
695 | - Completion Threshold (if value = 1)
696 |
697 |
698 |
699 | |
700 |
701 |
702 |
703 |
704 |
705 | | Terminated |
706 |
707 | Context Extensions
708 |
709 | - Length
710 | - Completion Threshold (if value < 1)
711 |
712 |
713 |
714 | Result Extensions
715 |
716 | - Time
717 | - Progress
718 | - Played Segments
719 |
720 |
721 |
722 | |
723 |
724 |
725 | Context Extensions
726 |
727 | - Session ID
728 | - Completion Threshold (if value = 1)
729 |
730 |
731 |
732 | |
733 |
734 |
735 |
736 |
737 |
738 | *Session ID is optional. However, it SHOULD be added in all statements, unless there is a reason not to.
739 |
740 |
--------------------------------------------------------------------------------