# Software

# Software

# Software
While hardware aproaches are usually the best, sometimes software sneaks into our lives too.

[Dante Controller](/link/135)

[Dante Virtual Soundcard](/link/136)

[Bitfocus Companion](/link/140)

[Ffmpeg Commands](/en/software/ffmpeg/ffmpeg_commands)

[OBS Studio](/link/138)

[ProPresnter](/link/143)

[Resolume Avenue / Arena](/link/145)

[Resolume Wire](/link/146)

[NDI](/link/133)

# Unity Intercom

# Unity Server

# Unity Server
Unity Intercom makes several software products that brings intercom to mobile devices (iOS & Android) and Desktop machines (macOS & Windows). This is accomplished through a client application installed on the device and a server (either running on macOS or using Unity Cloud).

# Ross Video

# Dashboard

# Ross Dashboard

## Templates

# Derivative

# TouchDesigner

# TouchDesigner

# FFmpeg

# Useful FFMPEG Commands

# FFMPEG Commands

### Record HLS Stream from Beginning (or as far back as segments go)

`ffmpeg -live_start_index -99999 -i 'http://domain.com/hls/master.m3u8' -c copy output.mkv`

### Timeslip one Decklink to Another

`ffmpeg -f decklink -audio_input embedded -channels 16 -i 'DeckLink SDI (1)' -vcodec libx264 -crf 25 -preset ultrafast output.mkv`

`ffmpeg -re -i output.mkv -f decklink -pix_fmt uyvy422 'DeckLink SDI (2)'`

### Mirror HLS to directory via FTP: 

`ffmpeg -i http://remote.com/hls/segs/master.m3u8 -c:a copy -hls_time 9 -hls_list_size 3 -hls_wrap 0 -start_number 0 -hls_allow_cache 0 -segment_list_flags +live -hls_flags delete_segments ftp://ffmepg@domain.com:password@ftp.domain.com/master.m3u8`

### Split Video By Silence
`ffmpeg -i input.mkv -filter_complex "[0:a]silencedetect=n=-90dB:d=0.3[outa]" -map [outa] -f s16le -y /dev/null |& F='-aq 70 -v warning' perl -ne 'INIT { $ss=0; $se=0; } if (/silence_start: (\S+)/) { $ss=$1; $ctr+=1; printf "ffmpeg -nostdin -i input.mkv -ss %f -t %f $ENV{F} -y %03d.mkv\n", $se, ($ss-$se), $ctr; } if (/silence_end: (\S+)/) { $se=$1; } END { printf "ffmpeg -nostdin -i input.mkv -ss %f $ENV{F} -y %03d.mkv\n", $se, $ctr+1; }' | bash -x`
https://stackoverflow.com/questions/36074224/how-to-split-video-or-audio-by-silent-parts#comment63050906_36077309

### SRT to Decklink
`ffmpeg -i srt:remote.com:port?mode=listener -f lavfi -i anullsrc=sample_rate=48000:channel_layout=mono -filter_complex "join=inputs=3:channel_layout=octagonal:map=0.0-FL|0.1-FR|1.0-FC|1.1-BL|2.0-BR|2.0-BC|2.0-SL|2.0-SR[a]" -map 0:v -map "[a]" -f decklink -pix_fmt uyvy422 -s 1920x1080 -r 60000/1001 -ar 48000 "DeckLink Duo (2)"`
https://discord.com/channels/494428283094564864/494428766525718528/939278974410952745

### Stream Static File to Youtube
> You may need to update the video parameters to meet newer Youtube recommendations for stream ingest
{.is-info}

`ffmpeg -i "input.mov" -deinterlace -vcodec libx264 
-pix_fmt yuv420p -preset medium -r 30 -g 60 -b:v 2500k 
-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b:a 
712000 -bufsize 512k -f flv "rtmp://a.rtmp.youtube.com/live2/key"`

### Stream Local File to Facebook
> You may need to update the video parameters to meet newer Facebook recommendations for stream ingest
{.is-info}

`ffmpeg -i "input.mov" -deinterlace -vcodec libx264 
-pix_fmt yuv420p -preset medium -r 30 -g 60 -b:v 2500k 
-acodec aac -ar 44100 -threads 6 -qscale 3 -b:a 
712000 -bufsize 512k -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/key"`

### Output file with timestamp record of every blackframe
`ffmpeg -i "file.mp4" -t 00:00:40 -filter_complex "[0]trim=start_frame=0:end_frame=1[c];[c][0]blend=all_mode=difference,blackframe=amount=98:threshold=32" -f null - 2>&1 | grep blackframe > output.txt`

### Use "difference" blend mode to find all subsequent occurances of frame
This can be useful to find every instance of where a video loops if given a single still frame by matching future occurances of that single frame (which are written to output.txt)
`ffmpeg -i "input.mp4" -t 00:00:40 -filter_complex "[0]trim=start_frame=0:end_frame=1[c];[c][0]blend=all_mode=difference,blackframe=amount=98:threshold=32" -f null - 2>&1 | grep blackframe > output.txt`


### Create Visual Audio Spectrum from Input File
`ffmpeg -i input.mkv -filter_complex "[0:a]showspectrum=s=854x480:mode=combined:slide=scroll:saturation=0.2:scale=log,format=yuv420p[v]" -map "[v]" -map 0:a -b:v 700k -b:a 360k output.mkv`


### Capture raw DV video over firewire and save to file (Mac only)
`ffmpeg -f avfoundation -capture_raw_data true -i "DV-VCR" -c copy -map 0 -f rawvideo capture.dv`

>To convert to Prores LT with proper color metadata: `ffmpeg -i capture.dv -c:v prores_ks -profile:v 1 -colorspace smpte170m -color_primaries smpte170m -color_trc 1 -c:a copy -movflags +write_colr capture_prores.mov`
{.is-info}

# VizRT

# NDI

## Downloads
[NDI Tools for Windows](https://go.ndi.tv/tools-for-windows)

[NDI Tools for MacOS](https://go.ndi.tv/tools-for-mac)

[NDI Analysis for Windows](https://www.ndi.tv/form-ndi-analysis-tools-ndi5)

See also, [NDI Protocol](https://videng.wiki/en/Development/Protocols/NDI)

# Audinate

# Dante Controller

# Dante Controller
Dante Controller provides essential device status information such as device-level latency and clock stability stats, multicast bandwidth usage, and customized event logging, for devices on a Dante network.

## Product Page
https://www.audinate.com/products/software/dante-controller

## Download
https://my.audinate.com/support/downloads/dante-controller

The downloads of Dante Controller are walled-off behind a user sign in area. You can use this generic login if you'd like to avoid creating an account: 

Email: `audinate@gustr.com`
Password: `audinate`

# Dante Virtual Soundcard

# Dante Virtual Soundcard

Dante Virtual Soundcard is a simple, easy-to-use software application that turns a Windows or Mac computer into a Dante-enabled device, enabling you to instantly connect to any Dante network. Dante Virtual Soundcard uses your computer’s Ethernet port to communicate with other Dante-enabled devices on the network.

## Product Page
https://www.audinate.com/products/software/dante-virtual-soundcard

## Download
https://my.audinate.com/support/downloads/dante-virtual-soundcard

## Activation
> Each Dante Virtual Soundcard license can be activated four times before you receive the error “The license has been activated too many times” preventing further activiations.
{.is-info}


## Networking
Dante Virtual Soundcard only works on untagged VLANs. If your network interfaces has multiple VLANs trunked, Dante Virtual Soundcard will only communicate on the untagged VLAN.

### IGMP Snooping Forwards All on macOS
macOS machines running Dante Virtual Soundcard will likely lose clock-sync and mute when IGMP Snooping is engaged on many switch manufacturers. The macOS and many switch configurations do not refresh the Time-To-Live for multicast subscriptions, and thus the clock falls silent. You’ll know this is the case if Dante Controller shows “Listening” status. To address this manually forward multicast traffic to the ports the Mac is using. Related to https://serverfault.com/questions/819793/os-x-network-stack-ignores-igmp-membership-queries

### 10Gb Ethernet on macOS
Dante Virtual Soundcard (transmission) does not work on any 10Gb ethernet ports on macOS. You'll have to use a Thunderbolt to 1Gb Ethernet adaptor if you're using a machine that has a 10Gb ethernet port. http://duc.avid.com/showthread.php?t=410371
The reason for this is the 10Gbps Ethernet port on macOS does not support PtP (Dante Clock) correctly, rendering it useless for Dante. This is an Apple hardware/driver issue which also impacts other protocols that need PtP clocking, and with nothing Audinate can do to fix it. (According to Audinate, Apple fixed this issue in macOS 12 Monterey)

# OBS Studio

# OBS Studio

# Open Broadcaster Software (OBS Studio)
OBS is a free and open source software for Windows, macOS and Linux with video recording and live streaming functionality.

## Download
https://obsproject.com

[Previous Software Releases](https://github.com/obsproject/obs-studio/releases)

## Discord
https://obsproject.com/discord

# Bitfocus

# Bitfocus Companion

## Bitfocus Companion

Works with or without [Elgato Streamdeck,](/link/100) includes web based Streamdeck emulator.

List of Modules included with Companion: [https://bitfocus.io/support ](https://bitfocus.io/support)

Each module gets its own repository on Github: [https://github.com/orgs/bitfocus/repositories](https://github.com/orgs/bitfocus/repositories)

## Download

[https://bitfocus.io/user/downloads](https://bitfocus.io/user/downloads)

The downloadable builds of Bitfocus Companion are walled-off behind a user sign in area. You can use this generic login if you'd like to avoid creating an account:

Username: `bitfocus@gustr.com`

Password: `companion`

## Download Beta Versions

You can download direct from S3:

`https://s3.bitfocus.io/builds/companion/companion-x64-{commit number}-beta-{8 chars from commit hash}{.tar.gz|.exe|.dmg}` (get the commit info from the beta branch). This method also works for downloading release builds, just change `beta` for the version tag.

 [https://discord.com/channels/494428283094564864/494428283568390147/996647775515201547](https://discord.com/channels/494428283094564864/494428283568390147/996647775515201547)

# Renewed Vision

# ProPresenter 6

# ProPresenter 6

> ProPresenter has announced effective January 31, 2023, ProPresenter 6 will be no longer supported or updated and the ProPresenter 7 upgrade discount will no longer be available. See [ProPresenter 6 End of Life FAQs](https://support.renewedvision.com/hc/en-us/articles/10589582923027-ProPresenter6-End-of-Life-Frequently-Asked-Questions) for more information.
{.is-warning}



## Tips and Tricks

### Changing Underline Font Color

Sometimes ProPresenter will do funky things when setting a highlighted portion of text that includes an underline. When this occurs, ProPresenter will display an underline that is not the same color as the text highlighted. To fix this, you must manually set the underline color in the	`Text Style` dialog.

Edit the slide, and go to the `Text Properties` tab. Click the 'Edit Text Style' option. (The button with an 'A' on it), then from the underline option select `color` and set the underline color.

### Managing Media Automatically.

ProPresenter by default is set to manage media automatically. This means ProPresenter will copy all media imported into ProPresenter in a folder (called 'Renewed Vision') and will sort the media into subfolders so the application knows where each file is. This is very helpful if you are importing things from external drives, or don't want to physically manage media locations manually.

## Configuration and Media Transfer

Below are the files that need to be transferred to copy a machine's configuration over to another Mac.

ProPresenter Library Documents

`~/Documents/ProPresenter6/`(entire folder)

ProPresenter Managed Media

`~/Renewed Vision Media/`(entire folder)

ProPresenter Support Files (Cache, Clocks, Templates, Stage Display, Playlists, etc)

`~/Library/Application Support/RenewedVision/ProPresenter6/`(entire folder)

ProPresenter Preferences

`~/Library/Preferences/com.renewedvision.ProPresenter6/` (entire folder)

`~/Library/Preferences/com.renewedvision.ProPresenter6.plist`

# ProPresenter

# ProPresenter

ProPresenter is a cross-platform (Mac / Windows) lyric and media presentation application built specifically to make high-quality live productions easy — productions include worship gatherings, sporting events, conferences, or even broadcast television.

For full information regarding ProPresenter, refer to the ProPresenter documentation.

[Documentation >](https://www.google.com/?q=propresenter+documentation+filetype%3apdf)

## Download
https://renewedvision.com/propresenter/#download
(Click **Download Only** at the bottom left of the form to skip to the direct downloads)

## File Format
Presentations created in ProPresenter are saved with a `.pro` file extension. Prior to ProPresenter 7 files included the version number in the extension, for example `.pro6`, `.pro5` letting you know which version the presentation was created in.

ProPresenter 7 files are no longer XML formatted, instead they are using Google Protocol Buffers, meaning you need [this library](https://github.com/greyshirtguy/ProPresenter7-Proto) to create/decode the buffers. ([Read more here](https://greyshirtguy.com/blog/pro7fileformat1/), [or here](https://greyshirtguy.com/blog/pro7fileformat1/), [or here](https://web.archive.org/web/20210930091545/https://greyshirtguy.com/blog/propresenter-7-file-format-part-3/))

## File Configuration Locations (macOS)

ProPresenter Library Documents
`~/Documents/ProPresenter6/`(entire folder)

ProPresenter Managed Media
`~/Renewed Vision Media/`(entire folder)

ProPresenter Support Files (Cache, Clocks, Templates, Stage Display, Playlists, etc)
`~/Library/Application Support/RenewedVision/ProPresenter6/`(entire folder)

ProPresenter Preferences
`~/Library/Preferences/com.renewedvision.ProPresenter6/` (entire folder)
`~/Library/Preferences/com.renewedvision.ProPresenter6.plist`

# Resolume

# Resolume Avenue/Arena

# Resolume Avenue/Arena

Resolume Arena is a software application (for Windows and macOS) enabling real-time video and audio playback, manipulation, and effects processing. It is commonly used in live events, AV productions, concerts, corporate events and more.

Resloume allows users to map video content to various surfaces and shapes, such as flat screens, projections, and 3D objects. This can be done using a variety of mapping tools and techniques, including corner pinning, edge blending, and surface deformation.

Resolume Arena also allows users to play out video content in a variety of ways. They can choose to play video clips in sequence, play them randomly, or play them based on certain triggers or events. Users can also adjust the speed, looping, and direction of video playback, as well as apply various audio and video effects to the content.

In addition, Resolume Arena has a number of [features](#different-editions-avenue-vs-arena) that allow users to control and manipulate the playback of their video content in real-time. This includes the ability to use midi controllers, OSC (Open Sound Control) devices, and other hardware to control the playback of video clips and effects. Users can also use the software's built-in timeline editor to create more complex and synchronized video playback sequences.

## Different Editions (Avenue vs Arena)

Resolume Arena has the following features that Resolume Avenue doesn't:
- Projection Mapping
- Edge Blending
- SMPTE Timecode input
- Denon StageLinq
- DMX Control
- DMX Fixture Output
- Capture Card Output
- Groups
- Slice Transforms

For a complete (and up to date) list of differeneces, see [Differences between Avenue and Arena](https://resolume.com/support/en/avenue-arena-difference).

# Resolume Wire

# Resolume Wire

# 2110 Basics

**What is 2110?**

2110 is a replacement for SDI that transports uncompressed video over IP networks.

**Is it like NDI?**

In that it is video over IP, yes, but in many ways no. 2110 is a SMPTE specification for uncompressed video, NDI is a proprietary protocol that compresses video. 2110 is designed for use with 10G network links or greater, whereas NDI must compress your video streams down to less than 1G of bandwidth.

# Term Explanations

## Traffic Shaping

- Senders/receivers
- Wide, narrow
- Synchronous, Asynchronous

## Hitless merges

## NMOS

## IS-04 Registration

- mDNS/DNS-SD

## IS-05 Connection management

## IGMP v2 vs v3

## PTP v2

## Multicast

## Audio Conformance Levels

https://www.ravenna-network.com/smpte-st-2110-and-audio/

## SSM vs ASM

ASM stands for Any-Source Multicast, and SSM, the preferred option for 2110, stands for Source-specific Multicast. With ASM the multicast client doesn't know the multicast sender's unicast address (source), only the multicast group IP's address.

With SSM, the multicast client can specify which multicast sender's unicast address (source) in the multicast group it wants without having to discover them as it has to with ASM.

https://docs.ruckuswireless.com/fastiron/08.0.60/fastiron-08060-ipmulticastguide/GUID-90A4D045-734C-4CAD-A0D0-59A7C40FB83E.html

# FFmpeg

FFmpeg Landing page

FFmpeg Home Page: [https://ffmpeg.org](https://ffmpeg.org)

Useful Commands:

[/en/software/ffmpeg/ffmpeg-commands](https://videng.wiki/link/131)