Skip to content

How to specify whether a video can be downloaded? #11

@LukasKalbertodt

Description

@LukasKalbertodt

This is a common request from clients: people want to decide per video or per series, whether videos are downloadable by users. Of course, being able to download also depends on whether the video was processed in a way that allows downloads (as opposed to just HLS). But regardless, for institutions which have downloadable videos, it's an important feature (see this Tobira issue).

First, I thought of a downloadable: bool flag per video. This is what the main branch currently contains actually. But later, clients mentioned they also want to specify it per series (and apply it to all its events). And they also wanted to restrict it to some groups. So we are looking to allow or disallow a user action, where events can inherit this property from series? Sure sounds like ACL to me!

So my new suggestion is to introduce a new action download to the ACL. This gives us lots of flexibility almost out of the box. Frontends don't immediately have to support it, but once they do, they should offer a download link if the user has download access, and prevent downloads by reasonable measures if they do not. How exactly the download link works is a different question, i.e. how to a list of downloadable files from an event.

Open question: does download imply read? Or is read AND download required for the user to download? Does write imply download? I tend to say that download is completely independent of read and write (i.e. nothing implies anything) and to download a video read and download is required.

Note: if we want "per app" download control (e.g. download in LMS ok, but forbidden in Tobira), that can always be added later by each of those frontends; it does not affect the data model. The only question is: store it in Opencast at all? Personally, I'd say "absolutely yes".

EDIT: apparently we did talk about this exact idea already on 2025-08-14:

  • Have download action in ACL? Instead of downloadable flag
    • You can already do that
    • People don’t mind
    • Lets document it then
    • Matthias prefers when apps can do their own thing, and they still can

Previous discussions:

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussA discussion issue: we need to decide how to handle a specific thing in the new data model.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions