Skip to content

Commit

Permalink
feat(FEC-11761): expose stream timed metadata - phase 2 (#174)
Browse files Browse the repository at this point in the history
use the new structure of `TimedMetadata`

Solves FEC-11761
Depends on kaltura/playkit-js#623
  • Loading branch information
yairans committed Jan 12, 2022
1 parent 8a2050e commit 716e8c4
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 18 deletions.
2 changes: 1 addition & 1 deletion karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ module.exports = function (config) {
singleRun: true,
colors: true,
frameworks: ['mocha'],
files: ['test/setup/karma.js'],
files: ['node_modules/regenerator-runtime/runtime.js', 'test/setup/karma.js'],
preprocessors: {
'src/**/*.js': ['webpack', 'sourcemap'],
'test/setup/karma.js': ['webpack', 'sourcemap']
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
"@babel/preset-env": "^7.10.4",
"@babel/preset-flow": "^7.10.4",
"@babel/register": "^7.10.5",
"@playkit-js/playkit-js": "0.71.0-canary.a8a3e9f",
"@playkit-js/playkit-js": "canary",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0",
"babel-plugin-istanbul": "^6.0.0",
Expand Down Expand Up @@ -104,7 +104,7 @@
"webpack-dev-server": "^3.11.0"
},
"peerDependencies": {
"@playkit-js/playkit-js": "0.68.0-canary.3b1d78e",
"@playkit-js/playkit-js": "canary",
"shaka-player": "3.0.13"
},
"publishConfig": {
Expand Down
10 changes: 5 additions & 5 deletions src/dash-adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
RequestType,
TextTrack,
Track,
CuePoint,
TimedMetadata,
createTextTrackCue,
Utils,
VideoTrack,
Expand Down Expand Up @@ -1301,12 +1301,12 @@ export default class DashAdapter extends BaseMediaSourceAdapter {
if (!metadataTrack) {
metadataTrack = this._videoElement.addTextTrack(TextTrack.KIND.METADATA, type);
}
const {startTime, endTime, id} = detail;
const {startTime, endTime, id, ...metadata} = detail;

const cue = new CuePoint(startTime, endTime, id, CuePoint.TYPE.EMSG, detail);
const textTrackCue = createTextTrackCue({...cue, metadata: JSON.stringify(detail)});
const timedMetadata = new TimedMetadata(startTime, endTime, id, TimedMetadata.TYPE.EMSG, metadata);
const textTrackCue = createTextTrackCue(timedMetadata);
metadataTrack.addCue(textTrackCue);
this._trigger(EventType.TIMED_METADATA_ADDED, {cues: [cue]});
this._trigger(EventType.TIMED_METADATA_ADDED, {cues: [timedMetadata]});
}

/**
Expand Down
56 changes: 55 additions & 1 deletion test/src/dash-adapter.spec.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import DashAdapter from '../../src';
import * as TestUtils from './utils/test-utils';
import {loadPlayer, VideoTrack, AudioTrack, TextTrack, Utils, RequestType, EventType, Error} from '@playkit-js/playkit-js';
import {loadPlayer, VideoTrack, AudioTrack, TextTrack, Utils, RequestType, EventType, Error, createTimedMetadata} from '@playkit-js/playkit-js';
import {Widevine} from '../../src/drm/widevine';
import {PlayReady} from '../../src/drm/playready';
import {wwDrmData, prDrmData} from './drm/fake-drm-data';
Expand Down Expand Up @@ -1822,3 +1822,57 @@ describe('DashAdapter: in-stream thumbnails', () => {
.catch(done);
});
});

describe('DashAdapter: on emsg', () => {
let video, dashInstance, config;

beforeEach(() => {
video = document.createElement('video');
config = {playback: {options: {html5: {dash: {}}}}};
});

afterEach(() => {
dashInstance.destroy();
dashInstance = null;
});

after(() => {
TestUtils.removeVideoElementsFromTestPage();
});

it('should dispatch TIMED_METADATA_ADDED event on emsg and push to metadata track', done => {
dashInstance = DashAdapter.createAdapter(video, vodSource, config);
const startTime = 10;
const endTime = 20;
const id = 'id';
const info1 = 'info1';
const info2 = 'info12';
const type = 'emsg';
const timedMetadata = {
startTime,
endTime,
id,
type,
metadata: {info1, info2}
};
dashInstance.addEventListener(EventType.TIMED_METADATA_ADDED, event => {
try {
event.payload.cues[0].should.deep.equal(timedMetadata);
createTimedMetadata(video.textTracks[0].cues[0]).should.deep.equal(timedMetadata);
done();
} catch (e) {
done(e);
}
});
dashInstance._onEmsg({
detail: {
startTime,
endTime,
id,
info1,
info2
},
type
});
});
});
23 changes: 14 additions & 9 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -853,13 +853,13 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==

"@playkit-js/playkit-js@0.71.0-canary.a8a3e9f":
version "0.71.0-canary.a8a3e9f"
resolved "https://registry.yarnpkg.com/@playkit-js/playkit-js/-/playkit-js-0.71.0-canary.a8a3e9f.tgz#067d7b53ed39fcb6fd20d25f530759e61fafd56f"
integrity sha512-wyaS7+hsfclNgnVLEPsdKe2yldpsIFc8cjZQz5QFFxgOp7zMawYlaf+rx3XGaEHrI/BrJy+XoxMNrtLJ7SO8zQ==
"@playkit-js/playkit-js@canary":
version "0.77.0-canary.7812357"
resolved "https://registry.yarnpkg.com/@playkit-js/playkit-js/-/playkit-js-0.77.0-canary.7812357.tgz#1e9c9edaba2f17faa86c3ab7d9057be0857e6e07"
integrity sha512-19xK5Ro2aBFIsKFg78PNK0PXVhWWqRBsAieGGm2jRmcOSvkp6l34DfyWxpTK5ZRWG1aHu2C7i0CNslLCBHtZ0Q==
dependencies:
js-logger "^1.6.0"
ua-parser-js "^0.7.21"
ua-parser-js "1.0.2"

"@sindresorhus/is@^0.7.0":
version "0.7.0"
Expand Down Expand Up @@ -4889,9 +4889,9 @@ iterate-value@^1.0.0:
iterate-iterator "^1.0.1"

js-logger@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.6.0.tgz#7abae5cfaf208c965f3ef20754533bb9e79c7aef"
integrity sha512-K4kt2AdD0jUYINbe00BPPpsL65u/rdYOgfaBBVWm/mid+ANk7qxDnoXgKI5ilm49Sjmach2Dzlc+5VxKdRA3tw==
version "1.6.1"
resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.6.1.tgz#8f09671b515e4a6f31dced8fdb8923432e2c60af"
integrity sha512-yTgMCPXVjhmg28CuUH8CKjU+cIKL/G+zTu4Fn4lQxs8mRFH/03QTNvEFngcxfg/gRDiQAOoyCKmMTOm9ayOzXA==

"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
Expand Down Expand Up @@ -8224,11 +8224,16 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=

ua-parser-js@0.7.21, ua-parser-js@^0.7.21:
ua-parser-js@0.7.21:
version "0.7.21"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777"
integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==

ua-parser-js@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775"
integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==

uglify-js@^3.1.4, uglify-js@^3.6.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7"
Expand Down

0 comments on commit 716e8c4

Please sign in to comment.