rem OBS virtual camera plugin script for ffmpeg libx265 and ADALM Pluto by DG0OPK march-may 2021 rem based on scripts from Evariste F5OEO, SQ6QV, G7JTT, F4HSL,DC2TH rem Testet with ADALM Pluto FW 2908/2402 rem and ffmpeg version git-2019-12-29-e20c6d9 Copyright (c) 2000-2019 the FFmpeg developers rem built with gcc 9.2.1 (GCC) 20191125 rem ffmpeg homepage with docu https://ffmpeg.org/ffmpeg.html rem Windows downloads https://www.gyan.dev/ffmpeg/builds/packages/ rem ---------------------------------------------------------------------------------------------------------------- rem Copy script to c:\ffmpeg\bin\ rem Install last OBS version and use Virtual Webcam under Tools, start Virtual Webcam, no recording or any else rem Start pluto.php with Symbolrates given below, adjust Advanced (Remux) > Force compliance OFF, helps for low delay sometimes rem Now start this script in your ffmpeg directory rem Check Analysis in pluto.php @echo off set callsign=xx0xx rem your PlutoIP Adress set ip=192.168.xxx.xxx:8282 rem EXAMPLE use - look in pluto.php for your parameter TS rate availiable rem ----------------------------------------------------------------------- rem exmaple TS=960 -> 960Kbit/s SR 1000K QPSK 1/3, SR 500 8PSK 2/3 rem exmaple TS=581 -> 581kbit/s SR 500 QPSK 3/5 rem example TS=480 -> 480Kbit/s SR 500 QPSK 1/2, SR333 QPSK 3/4, SR 250 8PSK 2/3 for **** QRP DATV **** rem exmaple TS=320 -> 320Kbit/s SR 500 QPSK 1/3, SR333 QPSK 1/2, SR250 QPSK 2/3, SR125 8PSK 8/9 for **** QRP DATV **** set TS=581 rem EXAMPLE use rem ----------- rem use AUDIO_RATE=64 or more and AUDIO_SAMPLE_RATE=44100 it with higher TS maybe >600 rem use AUDIO_RATE=32 with TS 300-600 rem use AUDIO_RATE=16 with TS below 300 rem SAMPLE_RATE can bei 44100,22050.11025 or 8000 set AUDIO_RATE=32 set AUDIO_SAMPLE_RATE=22050 set AUDIO_CHANNEL=2 rem use FPS=25 or 15 or 10 (lower FPS gives better quality but lower timing resolution) set FPS=25 rem define VIDEO_FACTOR for best fitting of the stream to lower nullpackets rem maybe 700 for TS 320 rem maybe 800 for TS 480 rem maybe 830 for TS 960 set VIDEO_FACTOR=810 set /a TS_NO_AUDIO=%TS%-%AUDIO_RATE% set /a VIDEO_RATE=%TS_NO_AUDIO% * %VIDEO_FACTOR% set /a TSBITRATE=%TS% * 1000 set /a AUDIO_RATE_K=%AUDIO_RATE% * 1000 set /a BIT_RATE=%VIDEO_RATE% / 1000 set /a BUFFER=%VIDEO_RATE% * 2 rem KEYINT defines the delay for decoding picture after STREAM start, for FPS*3 that means 3s, lower this if you need but maybe a loss in quality of picture set /a KEYINT=%FPS% * 10 rem set RESOLUTION=480x272 rem set RESOLUTION=640x360 rem set RESOLUTION=698x392 rem set RESOLUTION=768x432 rem set RESOLUTION=852x480 set RESOLUTION=960x540 rem set RESOLUTION=1024x576 rem set RESOLUTION=1280x720 rem set RESOLUTION=1366x768 rem set RESOLUTION=1600x900 rem set RESOLUTION=1920x1080 c:\ffmpeg\bin\ffmpeg ^ -f dshow -i video="OBS-Camera" -thread_queue_size 2048 -f dshow -i audio="OBS-Audio" ^ -vcodec libx265 -s %RESOLUTION% -bf 0 -pix_fmt yuv420p -b:v %VIDEO_RATE% -bufsize %BUFFER% -r %FPS% -preset fast -tune zerolatency -profile:v main -x265-params keyint=%KEYINT%:bitrate=%BIT_RATE%:strict-cbr=1 ^ -acodec aac -aac_coder twoloop -ar %AUDIO_SAMPLE_RATE% -ac %AUDIO_CHANNEL% -b:a %AUDIO_RATE_K% -f mpegts ^ -muxrate %TSBITRATE% -streamid 0:256 -streamid 1:257 ^ -max_delay 2500000 -pcr_period 40 -pat_period 0.4 "udp://%ip%?pkt_size=1316&bitrate=%TSBITRATE%"