diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/capture+encode+serve | 7 | ||||
-rwxr-xr-x | bin/decode+edit+encode | 4 | ||||
-rwxr-xr-x | bin/decode+edit+loop+encode+stream | 4 | ||||
-rwxr-xr-x | bin/encodevideo+loop+stream | 4 | ||||
-rwxr-xr-x | bin/loop+encode+stream | 4 | ||||
-rwxr-xr-x | bin/stream | 7 |
6 files changed, 22 insertions, 8 deletions
diff --git a/bin/capture+encode+serve b/bin/capture+encode+serve index 83af18c..e87310f 100755 --- a/bin/capture+encode+serve +++ b/bin/capture+encode+serve @@ -47,6 +47,9 @@ my $HEIGHT = 240; my $FRAMERATE = 25; my $AUDIORATE = 48000; +my $SPEED_VPX = 15; +my $SPEED_X264 = 'ultrafast'; + my $VBITRATE; # inspired by Apple HLS recommendations @@ -75,7 +78,7 @@ my %PIPELINE = ( # * let x264 use low-latency sliced-threads (i.e. don't disable treads) VENC => [ - "x264enc speed-preset=ultrafast tune=zerolatency bitrate=800 byte-stream=true key-int-max=15 intra-refresh=true option-string=\"slice-max-size=8192:vbv-maxrate=80:vbv-bufsize=10\"", + "x264enc speed-preset=$SPEED_H264 tune=zerolatency bitrate=800 byte-stream=true key-int-max=15 intra-refresh=true option-string=\"slice-max-size=8192:vbv-maxrate=80:vbv-bufsize=10\"", 'video/x-h264,profile=baseline', $QUEUE, 'rtph264pay', @@ -86,7 +89,7 @@ my %PIPELINE = ( }, VP8 => { VENC => [ - "vp8enc threads=4 cpu-used=15 deadline=1000000 end-usage=1 target-bitrate=$VBITRATE undershoot=95 keyframe-max-dist=999999 max-quantizer=56 deadline=5000 static-threshold=500", + "vp8enc threads=4 cpu-used=$SPEED_VPX deadline=1000000 end-usage=1 target-bitrate=$VBITRATE undershoot=95 keyframe-max-dist=999999 max-quantizer=56 deadline=5000 static-threshold=500", 'video/x-vp8', $QUEUE, 'rtpvp8pay', diff --git a/bin/decode+edit+encode b/bin/decode+edit+encode index 421dc4d..1983b54 100755 --- a/bin/decode+edit+encode +++ b/bin/decode+edit+encode @@ -10,6 +10,8 @@ OUTPUT=../tmp/omni/show0/earth.webm HEIGHT=360 +SPEED_VPX=4 + # inspired by Apple HLS recommendations if [ $HEIGHT -le 234 ]; then VBITRATE=145000; elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; @@ -32,7 +34,7 @@ ffmpeg -hide_banner -threads auto -y -re \ [bg][1:v]overlay=main_w-overlay_w-20:main_h-overlay_h-20[v]" \ -map '[v]' \ -pix_fmt yuv420p \ - -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 4 \ + -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used "$SPEED_VPX" \ -b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \ -undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \ -max-intra-rate 0 \ diff --git a/bin/decode+edit+loop+encode+stream b/bin/decode+edit+loop+encode+stream index e150957..5dbe82d 100755 --- a/bin/decode+edit+loop+encode+stream +++ b/bin/decode+edit+loop+encode+stream @@ -21,6 +21,8 @@ ITERATIONS=${3-0} # endless by default HEIGHT=360 +SPEED_VPX=15 + # inspired by Apple HLS recommendations if [ $HEIGHT -le 234 ]; then VBITRATE=145000; elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; @@ -43,7 +45,7 @@ ffmpeg -hide_banner -threads auto -re \ [bg][1:v]overlay=main_w-overlay_w-20:main_h-overlay_h-20[v]" \ -map '[v]' \ -pix_fmt yuv420p \ - -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \ + -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used "$SPEED_VPX" \ -b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \ -undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \ -max-intra-rate 0 \ diff --git a/bin/encodevideo+loop+stream b/bin/encodevideo+loop+stream index fb2b3b7..94ea765 100755 --- a/bin/encodevideo+loop+stream +++ b/bin/encodevideo+loop+stream @@ -16,6 +16,8 @@ FIRSTPORT=${2:-5002} # even number - next 3 ports used too # TODO: resolve this or resize based on it HEIGHT=360 +SPEED_VPX=15 + # inspired by Apple HLS recommendations if [ $HEIGHT -le 234 ]; then VBITRATE=145000; elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; @@ -32,7 +34,7 @@ ffmpeg -hide_banner -threads auto -re \ -stream_loop -1 -i "$INPUT" \ -map '0:v' \ -pix_fmt yuv420p \ - -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \ + -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used "$SPEED_VPX" \ -b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \ -undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \ -max-intra-rate 0 \ diff --git a/bin/loop+encode+stream b/bin/loop+encode+stream index b767dca..3e5e7d7 100755 --- a/bin/loop+encode+stream +++ b/bin/loop+encode+stream @@ -22,6 +22,8 @@ ABITRATE_OPUS=32000 # TODO HEIGHT=360 +SPEED_VPX=15 + # inspired by Apple HLS recommendations if [ $HEIGHT -le 234 ]; then VBITRATE=145000; elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; @@ -41,7 +43,7 @@ ffmpeg -hide_banner -threads auto -re \ -f rtp -payload_type 111 "rtp://$IP:$FIRSTPORT?pkt_size=1200" \ -map '0:v' \ -pix_fmt yuv420p \ - -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \ + -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used "$SPEED_VPX" \ -b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \ -undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \ -max-intra-rate 0 \ @@ -88,6 +88,9 @@ HEIGHT=234 HEIGHTS_WEBM="$HEIGHT" HEIGHTS_MPEG="$HEIGHT" +SPEED_VPX=15 +SPEED_X264=ultrafast + # inspired by Apple HLS recommendations if [ $HEIGHT -le 234 ]; then VBITRATE=145000; elif [ $HEIGHT -le 270 ]; then VBITRATE=365000; @@ -176,7 +179,7 @@ ffmpeg -hide_banner -threads auto \ -codec:a libopus -ac "$ACHANNELS" -ar "$AFRAMERATE_OPUS" -b:a "$ABITRATE_OPUS" } \ ${HASVIDEO:+\ -pix_fmt yuv420p \ - -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \ + -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used "$SPEED_VPX" \ -b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \ -undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \ -max-intra-rate 0 \ @@ -192,7 +195,7 @@ ffmpeg -hide_banner -threads auto \ -codec:a aac -strict experimental -ac "$ACHANNELS" -ar "$AFRAMERATE_AAC" -b:a $((ACHANNELS*ABITRATE_AAC)) } \ ${HASVIDEO:+\ -pix_fmt yuv420p \ - -codec:v libx264 -tune zerolatency -preset ultrafast \ + -codec:v libx264 -tune zerolatency -preset "$SPEED_X264" \ -maxrate "$VBITRATE" -bufsize "$((VBITRATE*2))" -crf 23 } \ -force_key_frames 'expr:gte(t,n_forced*2)' \ -f rtp_mpegts rtp://$IP:10000 } |