Master Control does it all

Master Control by Henry Kroll

"The ultimate multimedia controller and test center"

Master Control generates graphical user interfaces for GStreamer with pygtk2, helping people rapidly develop, test, and control new multimedia applications.

In addition, Master Control can

Capabilities inherited from GStreamer, not limited to

Packaged Installer

Master Control is in development, and there is no installer available yet, however; pre-orders will be accepted. The money will be used to develop and maintain packages for Windows, and other operating systems, and to provide support. Purchasers will be added to our mailing list, so that notification may be provided by email when installers become available. Thank you for supporting our development efforts!

Free Trial

Master Control is fully cross-platform, open-source, and released under the Gnu Public License, Version 3. The following packages, upon which Master Control depends, may be downloaded, or compiled for just about any operating system.

On Fedora, for example, install these dependencies.

su -c 'yum -y install pygtk2 gstreamer-python gstreamer-plugins-\* \
gstreamer-ffmpeg pygtksourceview gtksourceview2 ladspa-tap-plugins ladspa-swh-plugins'

Windows builds of these dependencies are available from ossbuild.

Master Control is maintained on GitHub. The latest version may be obtained using git: git clone  //github.com/themanyone/master_control

Or download the .zip file: Download Now

Upgrades

Many cool ideas may be found on the gstreamer cheat sheet. Master Control's capabilities will continue to grow as new GStreamer plugins become available. We are developing our own object / motion tracking, video filters, and effetcts. Non-linear editing may already be possible via GNonLin.

Usage

There is no desktop icon yet. Right-click on the desktop to create one. Launching the program may be done via the Python interpreter.

python master_control.py [args]

New: A file name, or raw pipeline descriptor, may now be supplied on the command line, similar to gst-launch. Master Control will automatically determine whether a valid file name, or raw pipeline description, has been supplied.

Choose a pipeline from the drop-down menu, for example, simple webcam viewer. The application should start displaying an image from the webcam. The editor's contents will change to show the new pipeline. Tabs will appear. Clicking on the tabs reveals panels of spin buttons and sliders to tweak and adjust every possible setting of the running GStreamer Pipeline.

Panels may be "popped-out" into their own window from the View menu.

Windows note: ossbuild contains a build system to support GStreamer for Windows. To make the webcam work on Windows with ossbuild, change v4l2src to ksvideosrc.

GStreamer Pipelines

At the heart of every Gstreamer application is one or more Gstreamer pipelines. According to the that installs with entrans, a GStreamer Pipeline is a directed graph of media handlers or plugins (elements). Each element has "pads" which are kind of like plugs and sockets that connect them together. An exclamation point, "!" behaves like a "pipe symbol" connecting the elements' "src" and "sink" pads. See the man pages for gst-launch for more information about constructing GStreamer pipelines.

Help on Elements

Double-click on v4l2src to highlight it in the Master Control editor. Press Alt+I, or navigate to Help -> Inspect selected. A search-able window will pop up describing the v4l2src plugin and specifications. This is for convenience. The same information may be obtained by typing "gst-inspect v4l2src" in a terminal window (and indeed this is what master control does).

Scroll down to where gst-inspect shows information about brightness and contrast. These values may be specified in the pipeline at startup, or adjusted in the tabs during runtime. Try it out. Change the first stanza in the editor to "v4l2src brightness=200".

Another important thing to look for is the capabilities of the element.

Matching Caps

It is recommended that users inspect (Ctrl-I) the src and sink capabilities (caps) of the elements they wish to connect. Usually, elements will auto-negotiate, but sometimes it is necessary to specify caps, e.g. " ! video/x-raw-yuv,format=(fourcc)I420" between them. Make sure the upstream element in the chain is sending out a format that the receiving elements are compatible with. When there are no matching caps, then some other conversion element, such as "ffmpegcolorspace" may be inserted between elements to supply the matching caps.

Editing Pipelines

The drop-down menu contains a handy selection of gstreamer pipelines to get projects started. These may be optionally customized, saved, and loaded later as .gst files. The .gst files may also be used by other applications, such as gst-launch, or gst-validate (part of gst-devtools, a new project depended on by later versions of pitivi).

See our video and audio pages for some demo gstreamer pipelines. Many people publish Gstreamer pipelines for various tasks. Here's one by a friend of mine to record from his webcam: pastebin.com/ZXknkd69 Note that it is unnecessary to specify every capability of the hardware like this. Whatever is left out will be auto-negotiated by gstreamer.

Known Issues

Master Control's HD webcam recorder may not work for everyone. To discover the webcam's capabilities, use v4l2-ctl --list-formats-ext. In the future, we may use decodebin, or another such auto-detecing element.

Transport Mechanism

Press the F5 key to stop, and re-start (refresh) the stream. This is the same as pressing the Stop and Play buttons. The interface needs some help. Right now the loop, fast-forward, and rewind buttons may be found under the Go menu. Use the keyboard shortcuts.

Error Handling

Master Control pipelines are equivalent to running entrans in raw mode. There is some rudimentary error handling, and auto-plugging of elements is accomplished by using plugins like playbin and autoaudiosrc. If a pipeline doesn't work, try experimenting. The majority of problems result from mis-matching of elements. Usually, a src or filter element is supplying a format that the next one in the chain does not understand. A good reading of the GStreamer documentation will help to minimize errors.

More info about transcoding with Gstreamer.

Gstreamer Cheat Sheet


CCBY Copyright © 2016 Henry Kroll III, thenerdshow.com This web page is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.