spike silencedetect overlap
This commit is contained in:
36
src-lib/testdata/poc.sh
vendored
36
src-lib/testdata/poc.sh
vendored
@@ -1,15 +1,24 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
py="$(cat <<EOF
|
py="$(cat <<EOF
|
||||||
from sys import stdin; lines = [i.strip() for i in stdin.readlines()];
|
from sys import stdin, stderr
|
||||||
def keyword(line):
|
lines = [i.strip() for i in stdin.readlines()]
|
||||||
return "keep" if "keep" in line else "drop"
|
|
||||||
somelines = lines[:1]
|
def frame_duplicate_status(line):
|
||||||
for i in range(1, len(lines)):
|
return "keep" if "keep" in line else "drop", "Parsed_mpdecimate_0" in line
|
||||||
if keyword(somelines[-1]) != keyword(lines[i]):
|
somelines = []
|
||||||
somelines.append(lines[i-1])
|
for i in range(len(lines)):
|
||||||
|
status, relevant = frame_duplicate_status(lines[i])
|
||||||
|
if not relevant:
|
||||||
|
continue
|
||||||
|
if not somelines:
|
||||||
somelines.append(lines[i])
|
somelines.append(lines[i])
|
||||||
somelines = [(keyword(i), i.split("pts_time:")[1].split()[0]) for i in somelines]
|
else:
|
||||||
|
prev_status, _ = frame_duplicate_status(somelines[-1])
|
||||||
|
if status != prev_status:
|
||||||
|
somelines.append(lines[i-1])
|
||||||
|
somelines.append(lines[i])
|
||||||
|
somelines = [(frame_duplicate_status(i)[0], i.split("pts_time:")[1].split()[0]) for i in somelines]
|
||||||
|
|
||||||
# just the keeps
|
# just the keeps
|
||||||
somelines = [i for i in somelines[2:] if i[0] == "keep"]
|
somelines = [i for i in somelines[2:] if i[0] == "keep"]
|
||||||
@@ -46,10 +55,13 @@ EOF
|
|||||||
d=$(mktemp -d)
|
d=$(mktemp -d)
|
||||||
echo d=$d >&2
|
echo d=$d >&2
|
||||||
for span in $(
|
for span in $(
|
||||||
ffmpeg -i $f -vf mpdecimate -loglevel debug -f null - 2>&1 \
|
(
|
||||||
| grep Parsed_mpdecimate_0 \
|
ffmpeg -i $f -vf mpdecimate -af silencedetect=n=-50dB:d=1 -loglevel debug -f null -
|
||||||
| grep -E ' (keep|drop) ' \
|
#ffmpeg -i "$f" -af silencedetect=n=-50dB:d=1 -loglevel debug -f null -
|
||||||
| python3 -c "$py"
|
) 2>&1 \
|
||||||
|
| grep -E 'silencedetect|Parsed_mpdecimate_0|Duration: *[0-9]' \
|
||||||
|
| grep -E 'silencedetect| (keep|drop) |Duration: *[0-9]' \
|
||||||
|
| python3 -c "$py" >&2
|
||||||
); do
|
); do
|
||||||
n=$((n+1))
|
n=$((n+1))
|
||||||
ffmpeg -y -ss ${span%,*} -i "$f" -t ${span#*,} "$d/$(printf "%05d" $(ls "$d" | wc -l)).${f##*.}"
|
ffmpeg -y -ss ${span%,*} -i "$f" -t ${span#*,} "$d/$(printf "%05d" $(ls "$d" | wc -l)).${f##*.}"
|
||||||
|
|||||||
8
src-lib/testdata/stackoverflow.sh
vendored
8
src-lib/testdata/stackoverflow.sh
vendored
@@ -37,3 +37,11 @@ echo 'ffmpeg -y -i "$f" -filter:v "select='gt(scene,0.50)',showinfo" -f null - 2
|
|||||||
# ffmpeg -i input.mp4 -vf mpdecimate,setpts=N/FRAME_RATE/TB out.mp4
|
# ffmpeg -i input.mp4 -vf mpdecimate,setpts=N/FRAME_RATE/TB out.mp4
|
||||||
# ffmpeg -i "$f" -vf "split=2[full][crop];[crop]mpdecimate=hi=16:lo=16:frac=1:max=1000[crop];[crop][full]overlay" "$g"
|
# ffmpeg -i "$f" -vf "split=2[full][crop];[crop]mpdecimate=hi=16:lo=16:frac=1:max=1000[crop];[crop][full]overlay" "$g"
|
||||||
ffmpeg -y -i "$f" -vf "split=2[full][crop];[crop]mpdecimate,setpts=N/FRAME_RATE/TB[crop];[crop][full]overlay" "$g"
|
ffmpeg -y -i "$f" -vf "split=2[full][crop];[crop]mpdecimate,setpts=N/FRAME_RATE/TB[crop];[crop][full]overlay" "$g"
|
||||||
|
|
||||||
|
# https://stackoverflow.com/questions/25697596/using-ffmpeg-with-silencedetect-to-remove-audio-silence
|
||||||
|
# [silencedetect @ 0000000004970f80] silence_start: -0.00154195
|
||||||
|
# [silencedetect @ 0000000004970f80] silence_end: 3.20435 | silence_duration: 3.2059
|
||||||
|
# ...
|
||||||
|
# [silencedetect @ 0000000004970f80] silence_start: 343.84
|
||||||
|
|
||||||
|
ffmpeg -i "$f" -af silencedetect=n=-50dB:d=1 -f null - 2>&1 | grep silencedetect
|
||||||
|
|||||||
Reference in New Issue
Block a user