This is the Package Manager application of the Sofie TV News Studio Automation System.
In generic terms (which are the best terms) the Package Manager performs Operations on Packages at various locations.
In simpler terms (which makes more sense), the Package Manager can Copy Files across various file systems (such as local folders, network shares, ftp etc), or perform other operations such as Transcoding or Creating Thumbnails.
The Package Manager also reports the status of all Operations and monitors the results. For example, if a file is to be copied onto a location, the Package Manager will report whether the file is in place or not.
In addition, the Package Manager supports versioning of Packages (eg it'll copy a new file if it has changed), chaining of operations (eg copy a file, then transcode it, then create a thumbnail).
The input to Package Manager is a list of Expected Packages which defines the target state of the Packages (ie which Packages (files) should be present on which locations). Internally, the Package Manager uses a restful API, which allows for distributed operations with Workers running on multiple different platforms with different capabilities, sharing the load.
- Copy File
- Copy Proxy file from Quantel (using Quantel transformer)
- Verify a File exists (ie no operation, just a check)
- Copy JSON-data into Sofie data store
- Make a preview of a media file (using ffmpeg)
- Make a thumbnail of a media file (using ffmpeg)
- Scan a media file (using ffprobe)
- "Deep scan" a media file (detect black frames, freeze frames, scenes) (using ffmpeg)
- Scan media file to detect type of iframes (using ffmpeg)
- Copy Quantel Clip (between Quantel servers only)
- Create preview file from Quantel Clip (using Quantel transformer)
- Create thumbnail from Quantel Clip (using Quantel transformer)
- Render HTML to video file
- Local files
- Network shares
- Atem media pool
- Sofie data store (PackageInfo)
- Generic HTTP (read only)
- HTTP Proxy Server (read & upload)
- FTP
- Quantel server
See the Installing Package Manager page of the Sofie System Documentation to learn how to get started with Package Manager in a demo environment with CasparCG.
This is a monorepo, all packages resides in shared/packages and apps/.
The packages in shared/packages are helper libraries, used by the packages in apps/.
The packages in apps/ can be run as individual applications.
The packages in tests/ contain unit/integration tests.
Name | Location | Description |
---|---|---|
Workforce | apps/workforce/app | Mediates connections between the Workers and the Package Managers. (Later: Will handle spin-up/down of workers according to the current need.) |
Package Manager | apps/package-manager/app | The Package Manager receives expectedPackages from a Sofie Core, converts them into Expectations . Keeps track of work statues and distributes the work to the Workers. |
Worker | apps/worker/app | Executes work orders from the Package Manager |
AppContainer-node | apps/appcontainer-node/app | Spins up/down workers according to the current need. (This appContainer uses child processes, future ones could work with for example Kubernetes or AWS) |
HTTP-server | apps/http-server/app | A simple HTTP server, where files can be uploaded to and served from. (Often used for thumbnails & previews) |
Single-app | apps/single-app/app | Runs one of each of the above in a single application. |
Name | Location | Description |
---|---|---|
API | shared/packages/api | Various interfaces used by the other libraries |
ExpectationManager | shared/packages/expectationManager | The ExpectationManager class is used by the Package Manager application |
Worker | shared/packages/worker | The Worker class is used by the Worker application |
Workforce | shared/packages/Workforce | The Workforce class is used by the Worker application |
It has been observed a potential issue when running Package Manager as an executable on Windows: For unknown reasons, there is a buildup of "zombie" TCP sockets over time. It is unknown if this is caused by something in Package Manager or ffmpeg/ffprobe. As a remedy/hack, this script has been useful to avoid potential longterm issues.
The NRK logo is a registered trademark of Norsk rikskringkasting AS. The license does not grant any right to use, in any way, any trademarks, service marks or logos of Norsk rikskringkasting AS.