Added croping to yt-clipper

This commit is contained in:
marko
2021-03-07 18:09:32 +01:00
parent 085daeec66
commit fad79e1f67
3 changed files with 38 additions and 7 deletions

View File

@@ -3,31 +3,36 @@
"source": "https://www.youtube.com/embed/6wcWZZw6RGk", "source": "https://www.youtube.com/embed/6wcWZZw6RGk",
"target": "videos.d/hopserlauf.webm", "target": "videos.d/hopserlauf.webm",
"from": "01:09.000", "from": "01:09.000",
"to": "01:24.833" "to": "01:24.833",
"crop": {"x": 581, "y": 32, "w": 1309, "h": 1018}
}, },
{ {
"source": "https://www.youtube.com/embed/6wcWZZw6RGk", "source": "https://www.youtube.com/embed/6wcWZZw6RGk",
"target": "videos.d/kniehebelauf.webm", "target": "videos.d/kniehebelauf.webm",
"from": "01:24.917", "from": "01:24.917",
"to": "01:39.542" "to": "01:39.542",
"crop": {"x": 581, "y": 32, "w": 1309, "h": 1018}
}, },
{ {
"source": "https://www.youtube.com/embed/6wcWZZw6RGk", "source": "https://www.youtube.com/embed/6wcWZZw6RGk",
"target": "videos.d/anfersen.webm", "target": "videos.d/anfersen.webm",
"from": "01:40.208", "from": "01:40.208",
"to": "01:54.625" "to": "01:54.625",
"crop": {"x": 581, "y": 32, "w": 1309, "h": 1018}
}, },
{ {
"source": "https://www.youtube.com/embed/6wcWZZw6RGk", "source": "https://www.youtube.com/embed/6wcWZZw6RGk",
"target": "videos.d/***REMOVED***Eingang-kniebeuge.webm", "target": "videos.d/***REMOVED***Eingang-kniebeuge.webm",
"from": "03:45.250", "from": "03:45.250",
"to": "04:05.875" "to": "04:05.167",
"crop": {"x": 581, "y": 32, "w": 1309, "h": 1018}
}, },
{ {
"source": "https://www.youtube.com/embed/6wcWZZw6RGk", "source": "https://www.youtube.com/embed/6wcWZZw6RGk",
"target": "videos.d/indianer.webm", "target": "videos.d/indianer.webm",
"from": "04:36.917", "from": "04:36.917",
"to": "05:05.458" "to": "05:05.458",
"crop": {"x": 581, "y": 32, "w": 1309, "h": 1018}
}, },
{ {
"source": "https://www.youtube.com/embed/zDj1Yf4d07I", "source": "https://www.youtube.com/embed/zDj1Yf4d07I",

View File

@@ -0,0 +1,9 @@
[
{
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
"target": "videos.d/***REMOVED***Eingang-kniebeuge.webm",
"from": "03:45.250",
"to": "04:05.167",
"crop": {"x": 581, "y": 32, "w": 1309, "h": 1018}
}
]

View File

@@ -6,7 +6,8 @@ import ffmpeg
import subprocess import subprocess
import glob import glob
jsonFileName = "clips.json" #jsonFileName = "clips.json"
jsonFileName = "***REMOVED***Kniebeuge.json"
clipDict = {} clipDict = {}
with open(jsonFileName) as jf: with open(jsonFileName) as jf:
@@ -22,11 +23,19 @@ for clip in clipDict:
if infoDict is not None: if infoDict is not None:
stream = ffmpeg.input( stream = ffmpeg.input(
# @todo This is a very bad hack because the outtmpl options doesn't seem to be working if the file gets reencoded # @todo This is a very bad hack because the outtmpl options doesn't seem to be working if the file gets reencoded
glob.glob(infoDict['id']+"*")[0], glob.glob(infoDict['id']+"*")[0],
ss=clip['from'], ss=clip['from'],
to=clip['to'], to=clip['to'],
) )
if 'crop' in clip:
stream = ffmpeg.filter(stream,
"crop",
x=clip['crop']['x'],
y=clip['crop']['y'],
w=clip['crop']['w'],
h=clip['crop']['h']
)
stream = ffmpeg.filter(stream, "scale", height="480", width="-2" ) stream = ffmpeg.filter(stream, "scale", height="480", width="-2" )
stream = ffmpeg.output(stream, stream = ffmpeg.output(stream,
clip['target'], clip['target'],
@@ -48,6 +57,14 @@ for clip in clipDict:
ss=clip['from'], ss=clip['from'],
to=clip['to'], to=clip['to'],
) )
if 'crop' in clip:
stream = ffmpeg.filter(stream,
"crop",
x=clip['crop']['x'],
y=clip['crop']['y'],
w=clip['crop']['w'],
h=clip['crop']['h']
)
stream = ffmpeg.filter(stream, "scale", height="480", width="-2" ) stream = ffmpeg.filter(stream, "scale", height="480", width="-2" )
stream = ffmpeg.output(stream, stream = ffmpeg.output(stream,
clip['target'], clip['target'],