Software
- Software
- Unity Intercom
- Ross Video
- Derivative
- FFmpeg
- VizRT
- Audinate
- OBS Studio
- Bitfocus
- Renewed Vision
- Resolume
- 2110 Basics
- FFmpeg
Software
Software
While hardware aproaches are usually the best, sometimes software sneaks into our lives too.
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
See also, NDI Protocol
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
Discord
https://obsproject.com/discord
Bitfocus
Bitfocus Companion
Bitfocus Companion
Works with or without Elgato Streamdeck, includes web based Streamdeck emulator.
List of Modules included with Companion: https://bitfocus.io/support
Each module gets its own repository on Github: https://github.com/orgs/bitfocus/repositories
Download
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
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 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.
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 to create/decode the buffers. (Read more here, or here, or here)
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 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.
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
Useful Commands: