Coder Social home page Coder Social logo

elan-ev / opencast-studio Goto Github PK

View Code? Open in Web Editor NEW
50.0 13.0 45.0 120.48 MB

Web-based recording studio for Opencast

Home Page: https://studio.opencast.org

License: MIT License

HTML 2.37% TypeScript 97.39% JavaScript 0.24%
video recording-studio recording capture-video capture-screen hacktoberfest

opencast-studio's Introduction

Opencast Studio

Build & test MIT license

A web-based recording studio for Opencast.

Opencast Studio uses the recording capabilities built into modern browsers to record audio and video streams. The recording happens completely in the user's browser: no server is involved in that part. Network access is only needed to initially load the application and to (optionally) upload the videos to an Opencast instance.

Supported Browsers

Firefox Chrome Edge Safari
Windows 11 3 -
Windows 10 3 -
Linux 3 4 4 -
macOS 3 4 4 🔶5
iOS - 1 - 1 - 1 🔶2
Android 🔶2 🔶2 🔶2 -

1 Non-Safari browser on iOS use the Safari browser engine, so behave essentially the same as Safari.

2 Screen share on mobile devices not supported; only webcam recording.

3 Display audio capture only possible through the use of "monitor sources" as microphone.

4 Display audio capture only possible if sharing a tab, not the entire screen or individual application windows.

5 Display audio capture not supported.

Usage

There are mainly three ways how to use Opencast Studio.

Integrated in Opencast

Starting with Opencast 8.2, Opencast Studio is integrated into and shipped with Opencast itself. If you have an Opencast system already, this is the easiest solution for you. See the Opencast documentation about the module 'studio' for more information.

Standalone Version at studio.opencast.org

Opencast Studio is always deployed from master branch.

You are free to use the publicly deployed version. However, there are two caveats.

For one, studio.opencast.org is updated fairly regularly with the newest version and is not tested as thoroughly as the Studio version integrated into Opencast releases. That means that it might occasionally not work or introduce backwards incompatible changes (mostly related to settings) at any time.

Additionally, in order to upload to your Opencast server from studio.opencast.org, that server needs to be configured appropriately. In particular, CORS requests from Studio need to be allowed and return the status code 200. For nginx, you need to add this to your configuration:

add_header Access-Control-Allow-Origin https://studio.opencast.org always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers 'Origin,Content-Type,Accept,Authorization' always;

# Always respond with 200 to OPTIONS requests as browsers do not accept
# non-200 responses to CORS preflight requests.
if ($request_method = OPTIONS) {
    # On newer nginx versions, you can optionally send an
    # Access-Control-Max-Age header to reduce the number of requests a browser
    # will send.
    #add_header 'Access-Control-Max-Age' 1728000;
    return 200;
}

Self-hosted standalone version

As Studio is a client-only application, you can simply build it and then serve the resulting static files.

Configuration

See CONFIGURATION.md.

Opencast APIs used by Studio

Opencast Studio uses the following APIs:

  • /ingest/*
  • /info/me.json

You have to make sure that these APIs are accessible to the user using Studio. In Opencast ≥8.2, providing a user with ROLE_STUDIO should grant a user all necessary rights. In older versions, you might need to create such a role in the security configuration (e.g. mh_default_org.xml) of Opencast.

Build Instructions

To build Studio yourself, execute these commands:

% git clone [email protected]:elan-ev/opencast-studio.git
% cd opencast-studio
% npm install
% npm run build:release   # or npm run build:dev for development

This will generate static content you can serve via any web server in build/. That's it.

If you prefer to run a local development server directly, you can use this instead:

% npm start

Additional Build Options

By default, Studio expects to be deployed under the root path of a domain (e.g. https://studio.example.com/) and using a sub-path would not work (e.g. https://example.com/studio). This can be changed by using a number of build options. You can apply these options by exporting them as environment variable before starting the build process like this:

export OPTION=VALUE
npm run build:release
Option Example Description
PUBLIC_PATH /studio Path from which Studio will be served
SETTINGS_PATH /mysettings.toml Path from which to load the configuration (see CONFIGURATION.md for more information)
INCLUDE_LEGAL_NOTICES 1 Set to 1 to include legal notices and information about ELAN e.V., any other value or having this variable not set will not include them. Unless you are working for ELAN e.V. there is probably no reason for you to use this variable.

opencast-studio's People

Contributors

arnei avatar badatos avatar callmeanto avatar ciegler avatar dependabot-preview[bot] avatar dependabot[bot] avatar dinuwan97 avatar ferishili avatar hungapp avatar juliankniephoff avatar lkiesow avatar lukaskalbertodt avatar luniki avatar machen2 avatar majosch avatar miesgre avatar narickmann avatar owi92 avatar ppettit avatar sebastjanm avatar sivagurucse avatar ypatios avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencast-studio's Issues

Is "merge streams" needed at all (currently)

As we are currently want to use the tool with Opencast only, I am not seeing why we would need "merge streams".

If we consider to promote also live streams we might have a use for this feature but currently I would just hide/remove it.

Using links for linking external websites

Instead of using JavaScript click events to open pages, we should use links to allow users to control if a website is opened in a new tab or not. E.g. middle-clicking on the issue tracker icon right now does nothing while as a user, I would expect the issue tracker to be opened in a new background tab.

Clean-up project

There is a lot of dead code in the project and a lot of unused libraries are loaded. This should be cleaned out as much as possible before further development begins.

Set metadata (series, login) via URL parameter

Thinking about a possible LTI integration, it would be nice to have URL parameters to control some of the metadata:

  • series=… to automatically set a fixed series and hide/deactivate the series input field
  • login=false to assume that the user is already logged-in (e.g. via LDAP)

Video Aspect Ratio for previews

The previews seem to have an 4:3 aspect ratio. The videos usually would be 16:9, so we should adjust the preview aspect ratio accordingly.

Automate Deployment

Automatically build this tool and deploy it to the gh-pages branch once issue #56 has been resolved.

Management of recording files

currently I see after the dialog to upload to Opencast or to download the videos. If I select upload I loose the option to download later.

Why not make this available permanently?

I am not sure how the recordings are managed internally. Does a recording overwrite the last recording? When is a recoding deleted: when I close the page, or the browser, when I start a new recording or never?

Instead of the save media button I would show a download of the videos in the main screen if they are available. If a history of old recordings is available I would show them all. And as we offer the videos as separate downloads the confusing multi-file download can be avoided.

Delete "Add Device" button, as it is not working

I am not sure what "Add Device" really does (Pairing an Android device as screen source?). Maybe we should create a ticket for this functionality. But as it is currently broken, we have to remove it.

Single Button Recordings

Right now, we have three buttons for recordings. Record and pause even do more or less the same thing (stop pauses and un-pauses while record starts and un-pauses). My suggestion would be to make this much easier, drop the pause functionality and have a single button to start and finish the recording.

Set (webcam) resolution

Is there a way to change the webcam resolution? currently this seems to be 480p while the screen recording resolution seems to be my real screen resolution.

I would like to adjust both manually if needed. My webcam could be useful also with higher resolutions, and contrary if I have a notebook with 4K resolution recording this in 720p might be more reliable and faster.

Document how to support Studio in your Opencast

Required web server settings for Opencast:

# Basic open CORS for studio.opencast.org
add_header Access-Control-Allow-Origin https://studio.opencast.org;
add_header Access-Control-Allow-Methods 'GET, POST';
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers 'Origin,Content-Type,Accept,Authorization';

See test server configuration

Countdown before recording starts

Several recording tools show an (optional) countdown back from 3 or 5 before they start recording. This helps to avoid a cut at the very beginning, as the correct App for the screen recording can already be selected, etc.

Check if opencast server settings are correct

After I have added the server settings I would like to have a button to test the connection.

A server status indicator in the main view would also be good. So that when I return to the page I notice that everything is fine.

Recording duration too detailed

The recording time is shown even in milliseconds. Seconds would be enough. This could also be nicer formatted and with a hint.

Specify Series

Selecting a series will be specifically relevant in the context of LTI & co. In this case, we want to automatically provide the series, e.g. via a ?series= URL parameter.


Original comment:

In the upload dialog I would like to have an option to see the series' the server and select them if appropriate.

It would also be great to be able to provide a series with an URL GET parameter (from an external tool).

Upload does not work anymore

The upload to Opencast does not work at all any longer.
Could this have something to do with the introduction of webpack?

Failed to load resource: the server responded with a status of 404 ()
app.js:1 Server unreachable:  ReferenceError: utils is not defined
    at p.cred_xhr (app.js:1)
    at p.getMeInfo (app.js:1)
    at p.validateState (app.js:1)
    at p.loginAndUploadFromAnchor (app.js:1)
    at C.uploadMediaOc (app.js:1)

Desktop Sharing can not be reactivated

If I stop the desktop sharing with the button from the browser I have to reload the page to start it again. I cannot stop and restart it (to select a different source i.e.)

Workflows (from server)should be selectable

currently the workflow is set with it's ID in the configuration dialog of the server.

I would prefer a dropdown with available workflows in the upload dialog.
I would recommend a "studio" tag for workflows in Opencast. If the studio-tag is existing at all, we show only these workflows, if not all "upload" workflows are shown.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.