Software Software Software While hardware aproaches are usually the best, sometimes software sneaks into our lives too. Dante Controller Dante Virtual Soundcard Bitfocus Companion Ffmpeg Commands OBS Studio ProPresnter Resolume Avenue / Arena Resolume Wire NDI 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 NDI Tools for MacOS NDI Analysis for Windows 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 Previous Software Releases 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. 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: /en/software/ffmpeg/ffmpeg-commands