Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Representing Videos Available Asynchronously #228

Open
thill-odi opened this issue Mar 20, 2020 · 5 comments
Open

Representing Videos Available Asynchronously #228

thill-odi opened this issue Mar 20, 2020 · 5 comments
Assignees

Comments

@thill-odi
Copy link
Contributor

@thill-odi thill-odi commented Mar 20, 2020

Proposer

@thill-odi (ODI)

Use Case

Many providers are making activity videos available for asynchronous viewing or download (contrast #224, which deals with streaming, or 'live', video). In addition, asynchronously-available video is a well-established distribution format for many providers.

Why is this not covered by existing properties?

The existing data model has heretofore dealt only with physical locations, not those available via online technologies.

Please provide a link to example data

See e.g. https://signup.lesmillsondemand.com/eu/?gclid=EAIaIQobChMIyZjZqqqp6AIVArTtCh2SfAvhEAAYASAAEgIozvD_BwE&gclsrc=aw.ds for this general model.

Proposal

Activity videos available for asynchonous playback or download can conveniently be represented using the schema.org VideoObject model.

While all attributes of VideoObject may be used within the OpenActive specification, particularly relevant are:

Technical Attributes

thumbnail
videoFrameSize
videoQuality
bitrate
contentSize
contentUrl
embedUrl
encodingFormat
height
playerType
width

Legal and other restrictions

conditionsOfAccess
copyrightHolder
copyrightYear
expires
regionsAllowed
license
typicalAgeRange

Accessibility

accessMode
accessModeSufficient
accessibilityAPI
accessibilityControl
accessibilityFeature
accessibilityHazard
accessibilitySummary

Metadata

duration
description
name
uploadDate
abstract
audience
creator
dateCreated
dateModified
datePublished
headline
keywords

Commercial

offers
isAccessibleForFree
requiresSubscription,
provider

Example

{
	"@type": "VideoObject",
	"name": "Yoga with Diane",
	"description": "One hour of intensive hatha yoga, followed by a relaxation meditation.",
	"duration": "T1H15M",
	"thumbnail": "dianeh-profile.jpg",
	"contentURL": "http://concentricyoga.ca/videos/bucket/dianeh-hatha.mpeg",
	"datePublished": "2020-03-19",
	"isAccessibleForFree": "True",
	"provider": {
		"@type": "Organization",
		"name": "Concentric Yoga",
		"...": "..."
	},
	"...": "..."
}


@thill-odi thill-odi changed the title Representing Videos Available Online Representing Videos Available Asynchronously Mar 20, 2020
@thill-odi thill-odi self-assigned this Mar 20, 2020
@nickevansuk

This comment has been minimized.

Copy link
Contributor

@nickevansuk nickevansuk commented Mar 20, 2020

Referencing another relevant issue here: #71 (comment)

Noting the other recently created proposals for virtual events relate to 2) Virtual fitness classes available anywhere via streaming, and this one relates to 3) On demand classes available anywhere.

Hence potentially OnDemandEvent is another route to consider here, and also allows us to keep our existing properties defined in the Modelling specification as it subclasses Event?

@thill-odi

This comment has been minimized.

Copy link
Contributor Author

@thill-odi thill-odi commented Mar 23, 2020

I like the idea of OnDemandEvent for the reason you mentioned.

The limitation of OnDemandEvent is that it doesn't have any playback information associated with it - things like size, resolution, or MIME-type. The user journey would then, I suppose, be to populate the url field with a link to a page that did provide this information.

I think this makes sense for aggregated activity finders: I don't think users would normally expect playback right from the finder itself. Are there other use-cases that need consideration, though?

@tommarley148

This comment has been minimized.

Copy link

@tommarley148 tommarley148 commented Mar 23, 2020

It would be preferable to have playback within the Activity Finder itself from our perspective, we are building this in to the tool we are creating and would assume other use cases would want that as well if possible.

Other fields which would be useful to consider are views, likes, ratings etc which will be constantly changing and important for the end user.

@RoastVeg

This comment has been minimized.

Copy link

@RoastVeg RoastVeg commented Mar 25, 2020

An example of how onDemandEvent might be used in conjunction with some inheritant schema type:

{
	"@type": "OnDemandEvent",
	"eventStatus": "https://schema.org/EventScheduled",
	"workFeatured": {
		"@type": "VideoObject",
		"name": "Yoga with Diane",
		"description": "One hour of intensive hatha yoga, followed by a relaxation meditation.",
		"duration": "T1H15M",
		"thumbnail": "dianeh-profile.jpg",
		"contentURL": "http://concentricyoga.ca/videos/bucket/dianeh-hatha.mpeg",
		"datePublished": "2020-03-19",
		"isAccessibleForFree": "True",
		"provider": {
			"@type": "Organization",
			"name": "Concentric Yoga",
			"...": "..."
		},
		"...": "..."
	}
	"...": "..."
}
@nickevansuk

This comment has been minimized.

Copy link
Contributor

@nickevansuk nickevansuk commented Mar 30, 2020

Updated proposal

The OnDemandEvent is adopted to represent on-demand fitness content, as an Event without a startDate or eventSchedule.

The workFeatured property is used to represent the actual media associated with the OnDemandEvent (where it is available free of charge), as shown in the example below. This media could be an VideoObject, AudioObject, or a more general MediaObject.

beta:participantSuppliedEquipment (#229) and beta:donationPaymentUrl (#234) should also both be available for use on the OnDemandEvent.

Example

{
  "@type": "OnDemandEvent",
  ...
  "eventStatus": "https://schema.org/EventScheduled",
  ...
  "workFeatured": {
    "@type": "VideoObject",
    "url": "https://www.youtube.com/watch?v=3fbCs0GVjgQ",
    "embedUrl": "https://www.youtube.com/embed/3fbCs0GVjgQ",
    "thumbnail": [
      {
        "@type": "ImageObject",
        "url": "http://example.com/static/image/speedball_thumbnail.jpg"
      }
    ],
    "beta:participantSuppliedEquipment": "https://openactive.io/Required",
    "beta:donationPaymentUrl": "https://www.paypal.com/donate/acme_fit"
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants
You can’t perform that action at this time.