summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2017-04-16 19:38:15 +0200
committerJonas Smedegaard <dr@jones.dk>2017-04-16 19:38:15 +0200
commitb5dd71d97379079416346635a142467a987ff642 (patch)
tree2cab6d04d50c7121ff292a994f8a5d29946d7975
parenteb1811763a86c74d9e88e9f35d1d2b2045b98167 (diff)
Add 1s latency (deadline). Stop drop frames (bandwidth limits are not strict).
-rwxr-xr-xbin/decode+edit+encode3
-rwxr-xr-xbin/decode+edit+encode+stream5
-rwxr-xr-xbin/decode+edit+loop+encode+stream5
-rwxr-xr-xbin/encodevideo+loop+stream5
-rwxr-xr-xbin/loop+encode+stream5
5 files changed, 10 insertions, 13 deletions
diff --git a/bin/decode+edit+encode b/bin/decode+edit+encode
index a34b54e..b3d3702 100755
--- a/bin/decode+edit+encode
+++ b/bin/decode+edit+encode
@@ -15,6 +15,7 @@ mkdir -p $(dirname "$OUTPUT")
# based on http://www.webmproject.org/docs/encoder-parameters/#real-time-cbr-encoding-and-streaming
# + scale+watermark trick based on http://stackoverflow.com/a/10937357
+# + Add 1s latency (deadline)
ffmpeg -threads auto -y -re \
-i "$INPUT" \
-i "$LOGO" \
@@ -23,7 +24,7 @@ ffmpeg -threads auto -y -re \
[bg][1:v]overlay=main_w-overlay_w-20:main_h-overlay_h-20" \
-an \
-pix_fmt yuv420p \
- -codec:v vp8 -quality realtime -deadline realtime -cpu-used 4 \
+ -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 4 \
-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+encode+stream b/bin/decode+edit+encode+stream
index 157ad23..fc2364a 100755
--- a/bin/decode+edit+encode+stream
+++ b/bin/decode+edit+encode+stream
@@ -21,7 +21,7 @@ VBITRATE=256000
# based on http://www.webmproject.org/docs/encoder-parameters/#real-time-cbr-encoding-and-streaming
# + scale+watermark trick based on http://stackoverflow.com/a/10937357
-# + Drop frames, aggressively treat as static, and use fastest cpu
+# + Add 1s latency (deadline)
# + Use same RTP payload types as GStreamer
ffmpeg -threads auto -re \
-i "$INPUT" \
@@ -34,10 +34,9 @@ ffmpeg -threads auto -re \
-f rtp -payload_type 111 "rtp://$IP:$FIRSTPORT?pkt_size=1200" \
-an \
-pix_fmt yuv420p \
- -codec:v vp8 -quality realtime -deadline realtime -cpu-used 15 \
+ -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \
-b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \
-undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \
-max-intra-rate 0 \
-qmin 4 -qmax 56 \
- -static-thresh 500 -skip_threshold 50 \
-f rtp -payload_type 100 "rtp://$IP:$((FIRSTPORT+2))?pkt_size=1200"
diff --git a/bin/decode+edit+loop+encode+stream b/bin/decode+edit+loop+encode+stream
index 6a69fe8..96e8c72 100755
--- a/bin/decode+edit+loop+encode+stream
+++ b/bin/decode+edit+loop+encode+stream
@@ -25,7 +25,7 @@ VBITRATE=256000
# based on http://www.webmproject.org/docs/encoder-parameters/#real-time-cbr-encoding-and-streaming
# + loop-in-filter trick based on http://video.stackexchange.com/a/16933
# + scale+watermark trick based on http://stackoverflow.com/a/10937357
-# + Drop frames, aggressively treat as static, and use fastest cpu
+# + Add 1s latency (deadline)
# + Use same RTP payload types as GStreamer
ffmpeg -threads auto -re \
-f lavfi -i "movie=filename=$INPUT:loop=$ITERATIONS, setpts=N/(FRAME_RATE*TB)" \
@@ -35,10 +35,9 @@ ffmpeg -threads auto -re \
[bg][1:v]overlay=main_w-overlay_w-20:main_h-overlay_h-20" \
-an \
-pix_fmt yuv420p \
- -codec:v vp8 -quality realtime -deadline realtime -cpu-used 15 \
+ -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \
-b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \
-undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \
-max-intra-rate 0 \
-qmin 4 -qmax 56 \
- -static-thresh 500 -skip_threshold 50 \
-f rtp -payload_type 100 "rtp://$IP:$((FIRSTPORT+2))?pkt_size=1200"
diff --git a/bin/encodevideo+loop+stream b/bin/encodevideo+loop+stream
index 761bf6f..d0310b0 100755
--- a/bin/encodevideo+loop+stream
+++ b/bin/encodevideo+loop+stream
@@ -16,16 +16,15 @@ FIRSTPORT=${2:-5002} # even number - next 3 ports used too
VBITRATE=256000
# based on http://www.webmproject.org/docs/encoder-parameters/#real-time-cbr-encoding-and-streaming
-# + Drop frames, aggressively treat as static, and use fastest cpu
+# + Add 1s latency (deadline)
# + Use same RTP payload types as GStreamer
ffmpeg -threads auto -re \
-stream_loop -1 -i "$INPUT" \
-an \
-pix_fmt yuv420p \
- -codec:v vp8 -quality realtime -deadline realtime -cpu-used 15 \
+ -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \
-b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \
-undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \
-max-intra-rate 0 \
-qmin 4 -qmax 56 \
- -static-thresh 500 -skip_threshold 50 \
-f rtp -payload_type 100 "rtp://$IP:$((FIRSTPORT+2))?pkt_size=1200"
diff --git a/bin/loop+encode+stream b/bin/loop+encode+stream
index 9485df8..5c687bd 100755
--- a/bin/loop+encode+stream
+++ b/bin/loop+encode+stream
@@ -20,7 +20,7 @@ ABITRATE=64000
VBITRATE=256000
# based on http://www.webmproject.org/docs/encoder-parameters/#real-time-cbr-encoding-and-streaming
-# + Drop frames, aggressively treat as static, and use fastest cpu
+# + Add 1s latency (deadline)
# + Use same RTP payload types as GStreamer
ffmpeg -threads auto -re \
-stream_loop -1 -i "$INPUT" \
@@ -29,10 +29,9 @@ ffmpeg -threads auto -re \
-f rtp -payload_type 111 "rtp://$IP:$FIRSTPORT?pkt_size=1200" \
-an \
-pix_fmt yuv420p \
- -codec:v vp8 -quality realtime -deadline realtime -cpu-used 15 \
+ -codec:v vp8 -quality realtime -deadline 1000000 -cpu-used 15 \
-b:v "$VBITRATE" -minrate "$VBITRATE" -maxrate "$VBITRATE" \
-undershoot-pct 95 -bufsize $((6000*VBITRATE/1000)) -rc_init_occupancy $((4000*VBITRATE/1000)) \
-max-intra-rate 0 \
-qmin 4 -qmax 56 \
- -static-thresh 500 -skip_threshold 50 \
-f rtp -payload_type 100 "rtp://$IP:$((FIRSTPORT+2))?pkt_size=1200"