Git Product home page Git Product logo

nebula's Introduction

NEBULA

GitHub release (latest by date) Maintenance Last commit Python version

Nebula is an open source broadcast automation and media asset management system for television, radio and VOD platforms. Since 2012 Nebula has proven stable and reliable software in 24/7 broadcast environment and it is now used by TV and production companies worldwide.

This repository contains the source code of Nebula server - the core of the system. Nebula server consists of a Python backend and a React frontend. The repository also contains a Dockerfile for building a Docker image of the server.

Apart from this server repository, Nebula consists of the following other repositories:

  • nebula-tutorial - Example docker-compose.yml, default settings, plugins and other files for getting started with Nebula.
  • nebula-worker - Nebula worker is a Python application that runs on a worker machine and handles the actual media processing.
  • firefly - Firefly is a desktop client needed for linear broadcast planning, scheduling and playout.

Key features

Media Asset Management

Simple and fast media catalog based on EBU Core includes a description of asset genre, editorial format, atmosphere, rights, relations, and technical metadata, while its very fast search engine makes navigation among media files very easy.

The low-resolution preview allows for editorial review, trimming, and the creation of sub-clips.

Metadata editor

Video and audio cross-conversion and normalization

A preliminary media analysis and normalization guarantee its standards compliance. This process includes metadata extraction, aspect ratio fixing, crop and rotation detection, smart frame rate and size normalization and EBU R128 loudness correction.

Automatic cross-conversion servers transcode files for playout, web, low-res proxies, customer previews, etc. For h.264 and HEVC, Nebula can take advantage of NVIDIA nvenc and leverage the speed of transcoding using GPUs.

It is possible to start conversions automatically (rule-based) or trigger them from the user interface.

Linear scheduling

Firefly client provides a simple and user-friendly way to schedule linear broadcasting. Macro- and micro-scheduling patterns are finished intuitively using drag&drop, including live events.

Nebula has also the ability to schedule for playback assets, which aren't finished yet. As soon as a media file is created the media file and rundown item are paired automatically.

The optional Dramatica module makes program planning even easier; depending on the particular broadcast scheme, Dramatica selects and automatically completes convenient shows, self-promotions, trailers, and fillings.

It is the way to create a playlist for a music station where an algorithm automatically creates a playlist based on a predefined scheme. Each clip in the rundown is picked by its editorial format, genre, tempo, atmosphere, etc.

Detail of a scheduler panel in the Firefly application

Playout control

For linear broadcasting, Nebula can control CasparCG, VLC or Conti. Broadcasting can run autonomously with and option of starting blocks at a specified time.

Users - master control room operators - can interfere with the rundown using Firefly client, executing graphics or change run order until the last moment.

Playout control module offers a plug-in interface for secondary events execution such as CG, router or studio control, recorders control and so on. Right at the operator's fingertips.

Detail of a rundown panel with playout control interface

Publishing

Nebula can be linked to a company website via the API. Media files are automatically uploaded to the web or social networks after the planned program is broadcasted.

Statistics and reporting

Nebula allows generating various statistics and reports for collective rights management societies like OSA, DACS, etc. in an xls file.

Management and monitoring

A simple web based interface allows various management tasks (services and jobs monitoring, user management...) as well as simplified MAM access for editorial work without Firefly installed.

Nebula provides extensive system metrics in Prometheus format. Grafana dashboard can be used for their visualization and alerting in case of problems.

Reliability

Nebula is under active development and is in production since 2012 with no intenitons of abandoning the project, and we have a roadmap for several years. We listen to our customers, and we change our priorities in order to meet requests from the production.

We do not attempt to include numerous features that no one will ever use. Instead, we have spent many years working alongside Nebula operators, learning from each other. We believe that Nebula covers all common tasks in a broadcast environment.

Legal

Nebula is developed and maintained by imm studios, z.s.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Need help?

nebula's People

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  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  avatar  avatar

Watchers

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

nebula's Issues

Samba Issues

I've tried setting up a Samba server on the local machine and a remote machine which I can connect to independently but Nebula has failed to connect.

I set my storages to local and then I had success. But following what happened in #1 I don't see my assets automatically loaded when I dump files in the local storage. So not sure if local files are supported yet.

+100% CPU usage after scrubbing a proxy preview

Hi! I've seen this issue in two deployments in Docker, both following the tutorial: on Ubuntu 22.04.3 LTS, and on Windows 10 (WSL 2). Initially, CPU usage of the backend container looks reasonable (between 0 and 10%) when I'm just browsing the assets and gently playing/pausing the previews, but as soon as I start scrubbing, the CPU usage of that container jumps to over 100% and stays at this level even after I close the Firefly client or the browser tab. Memory usage also increases, and it seems to correspond with the size of the proxy file. So far only restarting the backend container helps bring the CPU usage down. It's the same with an SMB share and a docker volume. My gut says it may have something to do with cancelled requests that occur when scrubbing.

Recording.2024-01-03.000905.mp4

image
image
image

Installation error: No module named 'promexp'

Hello everyone,

I am still in the middle of the installation and get the following error with the command: ./manage.py run hub:

`root@ms000:/opt/nebula# ./manage.py run hub
2021-04-10 21:44:47 INFO hub Reloading webtools
2021-04-10 21:44:47 INFO hub Reloading API methods
2021-04-10 21:44:47 ERROR hub Exception!

Traceback (most recent call last):
  File "./manage.py", line 46, in <module>
    modules[module](*args)
  File "/opt/nebula/cli/run.py", line 7, in run
    import hub
  File "/opt/nebula/hub/__init__.py", line 19, in <module>
    from .view_metrics import ViewMetrics
  File "/opt/nebula/hub/view_metrics.py", line 5, in <module>
    from promexp.metrics import Metrics
ModuleNotFoundError: No module named 'promexp'

Can me everyone help me?

Best regards,
LightRO
`

Question regarding the video proxy

I have one more question.

Everything seems to be working fine now, but the video I uploaded is not available at https://url/proxy/0000/1.mp4. Under Jobs the video is still on Waiting but nothing happens. In the Firefly on the left side is also the name of the video, but in red there.

I do not get an error message except that CasparCG could not be reached yet, but as far as I know I did not need him at this step right?

Many greetings,
LightRO

I have a few more questions

Hello together,

I have now installed it so far.

But now I still have a few questions.

1.) I was able to successfully test the connection to samba on the server, but nebula does not seem to be able to log on to samba.

2.) Is it possible to send on an rtsp stream and how?

3.) The plugin folder called .nx/scripts/... does not exist, where can I find it?

4.) How do I upload a video?

I know these are actually stupid questions but I can't figure them out from the instructions.

Thanks a lot for the help.
LightRO

Bug in nx.filetypes

There seem to be a little bug in nx.filetypes, at line 73 the .items() should be cls.data.items() and not content_type.items(), because content_type has no method items()

Optimize the Dockerfile

copy package.json and run yarn install before copying the rest of the frontend - that way, node_modules will be cached

Handle displaying corrupted files

Assets with corrupted media are now simply shown as offline. With the latest update of meta service, they are marked as corrupted instead. That needs to be reflected in the UI and default views configuration.

Proposed solution

  • default production views should include ObjectState.CORRUPTED
  • browser should show corrupted media highlighted using dashed red (to differentiate from offline ones)

ERROR 500

Hello, only info for You. There is a problem with HUB.

[23/Nov/2018:14:48:30] HTTP 
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/cherrypy/_cprequest.py", line 628, in respond
    self._do_respond(path_info)
  File "/usr/local/lib/python3.6/dist-packages/cherrypy/_cprequest.py", line 687, in _do_respond
    response.body = self.handler()
  File "/usr/local/lib/python3.6/dist-packages/cherrypy/lib/encoding.py", line 219, in __call__
    self.body = self.oldhandler(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/cherrypy/_cpdispatch.py", line 54, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "/opt/nebula/vendor/cherryadmin/cherryadmin/handler.py", line 153, in default
    view.build(*args, **kwargs)
  File "/opt/nebula/hub/view_dashboard.py", line 16, in build
    custom_dash = self["user"]["dashboard"]
KeyError: 'dashboard'
[23/Nov/2018:14:48:30] HTTP 
Request Headers:
  Remote-Addr: 127.0.0.1
  HOST: localhost
  X-REAL-IP: 127.0.0.1
  CONNECTION: close
  USER-AGENT: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
  ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  ACCEPT-LANGUAGE: en-US,en;q=0.5
  ACCEPT-ENCODING: gzip, deflate
  REFERER: http://localhost/
  COOKIE: session_id=e1900e153cf9c059bcbd762cdcb92564470c3ea1
  UPGRADE-INSECURE-REQUESTS: 1
127.0.0.1 - - [23/Nov/2018:14:48:30] "GET / HTTP/1.0" 500 4117 "http://localhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

Can't work out how to install Nebula on Ubuntu 20.04

Sorry about #17 (accidentally submitted before actually typing anything)

Hi, I'm trying to work out how to install Nebula on Ubuntu 20.04 - I've attempted to follow the instructions in the nebula-setup repo, and have successfully installed prerequisites using prerequisites.sh as well as NGINX and FFMPEG. I've tried to setup the NGINX site configuration but that hasn't seemed to work (shouldn't this be somewhere in /etc/nginx/sites-enabled?) and from this point I'm at a loss as to what to do next. Having separate instructions in the main Nebula readme is also confusing.

Just looking for clarification - I'm keen to use this software as it seems suitable for a project I am currently working on and would save me having to write my own software. Thanks.

Import videos

First at all, many thanks for the really nice project!
I have managed to install alongside nebula-setup and Firefly. I have doubts about how to ingest/import the video files. I did suceed setting up a watch service and the Assets are created but none of them are accessible on Firefly.
What am I missing ?

Many thanks again

Hub dashboard 500 Error

When logging into Nebula web the first thing I see is this error.

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cprequest.py", line 628, in respond
    self._do_respond(path_info)
  File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cprequest.py", line 687, in _do_respond
    response.body = self.handler()
  File "/usr/local/lib/python3.5/dist-packages/cherrypy/lib/encoding.py", line 219, in __call__
    self.body = self.oldhandler(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/cherrypy/_cpdispatch.py", line 54, in __call__
    return self.callable(*self.args, **self.kwargs)
  File "/home/michael/Projects/nebula/nebula/vendor/cherryadmin/cherryadmin/handler.py", line 164, in default
    view.build(*args, **kwargs)
  File "/home/michael/Projects/nebula/nebula/hub/view_dashboard.py", line 52, in build
    "cpu" : status["cpu"],
TypeError: 'NoneType' object is not subscriptable

Perhaps this is a part of something I haven't configured correctly, although I'm using the basic config from the nebula-setup. And I followed the --rex-update suggestion from #2

Again thank you.

Module nxtools not exist

I just tried installing everything again myself and after installing all the basics I come to nxadduser. Unfortunately this command does not work because nxtools does not exist. See error message.

Traceback (most recent call last): File "/usr/bin/nxadduser", line 3, in <module> from cli import * File "/opt/nebula/cli/__init__.py", line 3, in <module> import cli.run as run File "/opt/nebula/cli/run.py", line 4, in <module> from nxtools import xml, critical_error, log_traceback, logging ModuleNotFoundError: No module named 'nxtools'

Is there any way to fix this?

Many greetings,
LightRO

Unable to direct upload files

Hi! If I understand correctly, if I don't configure upload_storage and upload_dir, a file uploaded through the UI should end up "directly" under a file name derived from the asset id, e.g. media.dir/movies/000008.mxf for a movie asset with id 8. However, I'm hitting this assertion:

assert asset.local_path, f"{asset} does not have path set"
...and the upload fails:
image
The local_path getter seems to be checking the file existence, which can't be met for a file that hasn't been uploaded yet.
if not os.path.exists(full_path):
return None

Should the assertion perhaps check asset.path instead of asset.local_path, or am I totally misunderstanding something?

ImportError: No module named 'ccginfo'

When I try to start the play service I get the following:

2019-05-28 09:43:29 WARNING     Nebula          Plugin root dir does not exist
2019-05-28 09:43:29 ERROR       play            Exception!

    Traceback (most recent call last):
      File "./manage.py", line 46, in <module>
        modules[module](*args)
      File "/home/michael/Projects/nebula/nebula/cli/run.py", line 44, in run
        _module = __import__("services." + agent, globals(), locals(), ["Service"])
      File "/home/michael/Projects/nebula/nebula/services/play/__init__.py", line 9, in <module>
        from .caspar_controller import *
      File "/home/michael/Projects/nebula/nebula/services/play/caspar_controller.py", line 16, in <module>
        from ccginfo import *
    ImportError: No module named 'ccginfo'

I'm not sure where I am missing the ccginfo. Did I miss a step in the setup?

Thank you.

Allow sending additional data with error states

Currently body of error responses only contain textual information. Exceptions triggering error responses (NebulaException) should also accept kwargs to pass additional information (such as conflicting id, validation error location...) to the client.

Additionally, custom handler for AssertionError should be created to trigger returning error 500 status.

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.