Enjoy our latest update where we have fixed some bugs and improved our framework to provide you more stable playbacking experience.
Playcraft wraps the logic of requesting video and verifying authorization, it also provides a control panel with basic control of playback, such like play, pause, seek ...etc.
This library is for developing a CAF-SDK-based chromecast receiver application.
Copy entire content of sample/
to project folder, run these commands to install packages, start development server and open sample app in a new browser tab.
yarn
yarn dev
To run the app in a receiver device(Chromecast), register a new receiver app id with URL to the local network IP, and cast from a sender with that id.
virtual-cast is recommended for receiver app development.
Please read CAF Receiver Overview first.
Queuing
Changing to next / previous episodes and autoplay next are managed by CAF.
When start playing a video, the receiver will set queue items by CAF QueueManager
, and CAF will play next / previous episode from the queue.
Note: QueueManager
instance can be get by cast.framework.CastReceiverContext.getInstance().getPlayerManager().getQueueManager()
.
Sender request receiver to play a media by sending a load request, containing manifest URL (and DRM license server URL for protected stream).
Web sender example
cast.framework.CastContext.getInstance().loadMedia(
new chrome.cast.media.LoadRequest(
Object.assign(
new chrome.cast.media.MediaInfo('https://video-cdn.com/stream.mpd'),
{
customData: {
drm: {
licenseUrl: 'https://license.server/portal'
}
}
metadata: new chrome.cast.media.GenericMediaMetadata()
}
)
)
)
After casting media to the receiver, current playing media information will be reported to the sender continuously, so that the sender can update UI for episode / linear program change.
MediaInformation: {
ContentID,
customData: {
itemType,
mediaSource,
title,
subtitle,
images,
startTime,
endTime
}
}
While this library provides common used features, some features are not required in all use cases, these features are implemented as plguins.
Design
- Good default features and behaviors should be provided without options / config, so that common uses cases are easy to implement.
- Advanced and special features should be implemented as plugins, isloated from playback core and other features, to make the library easy to scale up in terms of adding features.
- Share more code from web playback module
-
startApp
is for core player with basic functionalities
Start basic player with customized UI & DRM suppport.
import {startApp} from 'playcraft-google-cast/core'
startApp({
ui: {
toast: document.querySelector('#toast'),
debugPanel: document.querySelector('#debug'),
},
plugins: [],
})