Difference between revisions of "SQ6QV script"

From BATC Wiki
Jump to navigation Jump to search
(Created page with "This script is used to encode video and audio from programs like OBS Studio or VMix using their webcam emulation interfaces. You can also stream webcam directly without any o...")
 
 
(4 intermediate revisions by the same user not shown)
Line 14: Line 14:
 
https://www.ffmpeg.org/download.html
 
https://www.ffmpeg.org/download.html
  
Next You need to customize script a little. Change CALL, fill Your name and change where output stream will go (192.168.10.208:2244) in this example
+
Next You must customize script a little. Change CALL, fill Your name and change where output stream will go (192.168.10.208:2244) in this example
  
It is configured now for 442 kbit/s H.265 1280x720 and 32kbit AAC
+
It is configured now for 333K FEC 2/3 :  442 kbit/s H.265 1280x720 and 32kbit AAC and use of OBS.
  
 
You can change bitrate in this line set TS=442
 
You can change bitrate in this line set TS=442
Line 22: Line 22:
 
Sorry, but I do not have time to respond to emails about this script, just ask on chat, many will help You.
 
Sorry, but I do not have time to respond to emails about this script, just ask on chat, many will help You.
  
 +
Check also [[SQ6QV script for Jetson]]
 
<pre>
 
<pre>
 
@echo off
 
@echo off
Line 67: Line 68:
  
 
rem NO OVERLAY
 
rem NO OVERLAY
set TEXT_CMD=
+
set TEXT_CMD=
  
 
set OUTPUT_STREAM=-f mpegts -avoid_negative_ts 1 -max_delay 300000  -muxrate %TS%k  -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id 1 -mpegts_pmt_start_pid 4096 -streamid 0:256 -streamid 1:257 -metadata service_provider="%STATION%" -metadata service_name="%NAME%" -y "udp://%OUTPUT_IP%?pkt_size=1316"
 
set OUTPUT_STREAM=-f mpegts -avoid_negative_ts 1 -max_delay 300000  -muxrate %TS%k  -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id 1 -mpegts_pmt_start_pid 4096 -streamid 0:256 -streamid 1:257 -metadata service_provider="%STATION%" -metadata service_name="%NAME%" -y "udp://%OUTPUT_IP%?pkt_size=1316"
Line 82: Line 83:
 
set RESOLUTION=1280x720
 
set RESOLUTION=1280x720
 
rem set RESOLUTION=1920x1080
 
rem set RESOLUTION=1920x1080
 
rem set RESCALE=
 
rem set RESCALE=-vf crop=1440:1080,scale=640:480
 
  
 
set FPS=-r 30
 
set FPS=-r 30
Line 96: Line 94:
 
set VIDEO_CODEC=-pix_fmt yuv420p -vcodec hevc_nvenc -preset slow -tune psnr -profile:v main -rc-lookahead 20 -spatial_aq 1 -cbr 1 -rc cbr_hq -surfaces 64
 
set VIDEO_CODEC=-pix_fmt yuv420p -vcodec hevc_nvenc -preset slow -tune psnr -profile:v main -rc-lookahead 20 -spatial_aq 1 -cbr 1 -rc cbr_hq -surfaces 64
 
rem set VIDEO_CODEC=-pix_fmt yuv420p  -vcodec hevc_nvenc -preset slow -profile:v main -rc-lookahead 35 -spatial_aq 1 -cbr 1 -rc cbr_hq -surfaces 20
 
rem set VIDEO_CODEC=-pix_fmt yuv420p  -vcodec hevc_nvenc -preset slow -profile:v main -rc-lookahead 35 -spatial_aq 1 -cbr 1 -rc cbr_hq -surfaces 20
rem set VIDEO_CODEC=-pix_fmt yuv420p -vcodec nvenc_h264 -preset medium -profile:v main -cbr 1 -rc cbr_hq -forced-idr 1
+
rem set VIDEO_CODEC=-pix_fmt yuv420p -vcodec nvenc_h264 -g 300 -preset slow -profile:v high -cbr 1 -rc cbr_hq -rc-lookahead 15 -spatial_aq 1 -temporal-aq 1
  
 
rem ENCODING VIDEO ON CPU:
 
rem ENCODING VIDEO ON CPU:
 
rem set VIDEO_CODEC=-pix_fmt yuv420p -vcodec libx265 -preset faster -profile:v main -rc-lookahead 25 -spatial_aq 1 -temporal-aq 1 -rc cbr_hq -surfaces 16
 
rem set VIDEO_CODEC=-pix_fmt yuv420p -vcodec libx265 -preset faster -profile:v main -rc-lookahead 25 -spatial_aq 1 -temporal-aq 1 -rc cbr_hq -surfaces 16
  
ffmpeg -f dshow -i video=%VIDEO_DEVICE% -f dshow -i audio=%AUDIO_SOURCE% -sample_rate %AUDIO_SAMPLE_RATE% -audio_buffer_size 100k %FILTERS% -s %RESOLUTION% %FPS% %RESCALE% %VIDEO_CODEC% -b:v %VIDEO_RATE%k -minrate:v %MIN_VIDEO_RATE%k -maxrate:v %MAX_VIDEO_RATE%k -bufsize:v %BUFSIZE%k -ab %AUDIO_RATE%k %AUDIO_PARAMS% %TEXT_CMD% %OUTPUT_STREAM%
+
ffmpeg -f dshow -i video=%VIDEO_DEVICE% -f dshow -i audio=%AUDIO_SOURCE% -sample_rate %AUDIO_SAMPLE_RATE% -audio_buffer_size 100k %FILTERS% -s %RESOLUTION% %FPS% %VIDEO_CODEC% -b:v %VIDEO_RATE%k -minrate:v %MIN_VIDEO_RATE%k -maxrate:v %MAX_VIDEO_RATE%k -bufsize:v %BUFSIZE%k -ab %AUDIO_RATE%k %AUDIO_PARAMS% %TEXT_CMD% %OUTPUT_STREAM%
  
 
</pre>
 
</pre>

Latest revision as of 21:44, 22 May 2020

This script is used to encode video and audio from programs like OBS Studio or VMix using their webcam emulation interfaces. You can also stream webcam directly without any of these programs (on slow computers).

This version is simplified one for use on low bitrate streams.

You should start changing resolution settings: OBS: Settings-Picture-resolution: 1280x720 VMix: Settings-Display-output size: 1280x720

On OBS You need to install OBS-VirtualCam Plugin: https://obsproject.com/forum/resources/obs-virtualcam.539/

Next You need to download ffmpeg and unpack it to the same directory as script https://www.ffmpeg.org/download.html

Next You must customize script a little. Change CALL, fill Your name and change where output stream will go (192.168.10.208:2244) in this example

It is configured now for 333K FEC 2/3 : 442 kbit/s H.265 1280x720 and 32kbit AAC and use of OBS.

You can change bitrate in this line set TS=442

Sorry, but I do not have time to respond to emails about this script, just ask on chat, many will help You.

Check also SQ6QV script for Jetson

@echo off
set STATION=CALL
set NAME=First Name

rem 726  333 8PSK FEC 3/4 long + pilots
rem 646  333 8PSK FEC 2/3 long +pilots
rem 442  333 QPSK FEC 2/3 long no pilots


set TS=442
set AUDIO_RATE=32

set AUDIO_SAMPLE_RATE=22050
rem set AUDIO_SAMPLE_RATE=44100

SET OUTPUT_IP=192.168.10.208:2244
rem SET OUTPUT_IP=192.168.0.101:10000

 
set /a TS_NO_AUDIO=%TS%-%AUDIO_RATE%
set /a VIDEO_RATE=%TS_NO_AUDIO% * 50 / 100 
set /a BUFSIZE=%VIDEO_RATE% *4 / 10 

set /a TSBITRATE=%TS% * 1000 
echo -------------------------
echo TS rate: %TS% kbit
echo Video: %VIDEO_RATE% kbit
echo Audio: %AUDIO_RATE% kbit

set /a MAX_VIDEO_RATE=%VIDEO_RATE%
set /a MIN_VIDEO_RATE=%VIDEO_RATE% / 10

set TEXTY=660
set /a TEXTYY=%TEXTY% +22
set TEXTCOL=0x33CCFFEE
set DATECOL=0xFFCC00FF
set T2_SIZE=50

set TEXT_CMD=-vf "drawtext=text=%%{gmtime\\:%%d %%b %%Y %%X}:x=10:y=10:fontsize=%T2_SIZE%:fontcolor=%DATECOL%:shadowcolor=0x00007f9f:shadowx=2:shadowy=2, drawtext=text='%STATION%':x=25:y=%TEXTY%:fontsize=%T2_SIZE%:fontcolor=%TEXTCOL%:shadowcolor=0x00007f9f:shadowx=2:shadowy=2"

rem WITHOUT DATE
set TEXT_CMD=-vf "drawtext=text='%STATION%':x=25:y=%TEXTY%:fontsize=%T2_SIZE%:fontcolor=%TEXTCOL%:shadowcolor=0x00007f9f:shadowx=2:shadowy=2"

rem NO OVERLAY
set TEXT_CMD=

set OUTPUT_STREAM=-f mpegts -avoid_negative_ts 1 -max_delay 300000  -muxrate %TS%k  -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id 1 -mpegts_pmt_start_pid 4096 -streamid 0:256 -streamid 1:257 -metadata service_provider="%STATION%" -metadata service_name="%NAME%" -y "udp://%OUTPUT_IP%?pkt_size=1316"

set VIDEO_DEVICE="OBS-Camera"
set AUDIO_SOURCE="OBS-Audio"

rem set VIDEO_DEVICE="vMix Video"
rem set AUDIO_SOURCE="vMix Audio"


set RESOLUTION=640x480
rem set RESOLUTION=640x360
set RESOLUTION=1280x720
rem set RESOLUTION=1920x1080

set FPS=-r 30

rem set AUDIO_PARAMS=-acodec aac -aac_coder twoloop -aac_pns disable
rem set AUDIO_PARAMS=-af "highpass=f=250, lowpass=f=4000" -acodec ac3 -ar 22050 -ac 1
rem set AUDIO_PARAMS=-af "highpass=f=250, lowpass=f=4000" -acodec mp2 -ar 22050 -ac 1
set AUDIO_PARAMS=-af "highpass=f=250,lowpass=f=3000" -acodec aac -aac_coder twoloop -aac_pns disable -ar %AUDIO_SAMPLE_RATE% -ac 1
 	
rem ENCODING VIDEO ON GTX:
set VIDEO_CODEC=-pix_fmt yuv420p -vcodec hevc_nvenc -preset slow -tune psnr -profile:v main -rc-lookahead 20 -spatial_aq 1 -cbr 1 -rc cbr_hq -surfaces 64
rem set VIDEO_CODEC=-pix_fmt yuv420p  -vcodec hevc_nvenc -preset slow -profile:v main -rc-lookahead 35 -spatial_aq 1 -cbr 1 -rc cbr_hq -surfaces 20
rem set VIDEO_CODEC=-pix_fmt yuv420p -vcodec nvenc_h264 -g 300 -preset slow -profile:v high -cbr 1 -rc cbr_hq -rc-lookahead 15 -spatial_aq 1 -temporal-aq 1

rem ENCODING VIDEO ON CPU:
rem set VIDEO_CODEC=-pix_fmt yuv420p -vcodec libx265 -preset faster -profile:v main -rc-lookahead 25 -spatial_aq 1 -temporal-aq 1 -rc cbr_hq -surfaces 16

ffmpeg -f dshow -i video=%VIDEO_DEVICE% -f dshow -i audio=%AUDIO_SOURCE% -sample_rate %AUDIO_SAMPLE_RATE% -audio_buffer_size 100k %FILTERS% -s %RESOLUTION% %FPS% %VIDEO_CODEC% -b:v %VIDEO_RATE%k -minrate:v %MIN_VIDEO_RATE%k -maxrate:v %MAX_VIDEO_RATE%k -bufsize:v %BUFSIZE%k -ab %AUDIO_RATE%k %AUDIO_PARAMS% %TEXT_CMD% %OUTPUT_STREAM%