dotfiles/gui/mpv/scripts/cut.js

62 lines
1.8 KiB
JavaScript
Raw Normal View History

2021-02-27 01:52:19 +00:00
var beginPos, endPos
function markBegin() {
beginPos = mp.get_property('time-pos')
mp.osd_message('Begin Position Marked at ' + beginPos)
}
function markEnd() {
endPos = mp.get_property('time-pos')
mp.osd_message('End Position Marked at ' + endPos)
}
function getMarked() {
if (!beginPos && !endPos) {
mp.osd_message('Please set Begin Position with Ctrl-b, End Position with Ctrl-e')
return
}
var ss = beginPos || 0
var t = endPos || mp.get_property('duration')
var path = mp.get_property('path')
var dir_file = mp.utils.split_path(path)
return {
dir: dir_file[0],
file: dir_file[1],
path: path,
ss: ss,
t: t
}
}
function outputMarked() {
var m = getMarked()
var output_dir = mp.utils.join_path(m.dir, 'clips')
mp.utils.subprocess({
args: ['mkdir', '-p', output_dir],
cancellable: false
})
output_file = mp.utils.join_path(output_dir, m.file)
mp.utils.subprocess({
args: ['ffmpeg', '-ss', ss, '-i', m.path, '-t', t, '-c', 'copy', output_file],
cancellable: false
})
mp.osd_message('Clip save to ' + output_file)
}
function copyCutCmd() {
var m = getMarked()
var cmd = 'ffmpeg -ss ' + m.ss + ' -i ' + "'" + m.file + "' -t " + m.t + " -c copy '"+m.file + "-" + (Math.floor(m.ss/60)) +"'"
mp.utils.subprocess({
args: ['powershell', '-NoProfile', '-Command', 'Set-Clipboard "'+cmd+'"'],
cancellable: false
})
mp.osd_message("command has been copied to your clipboard")
}
mp.add_key_binding("ctrl+b", "mark_begin", markBegin);
mp.add_key_binding("ctrl+e", "mark_end", markEnd);
mp.add_key_binding("ctrl+o", "output_marked", outputMarked);
mp.add_key_binding("ctrl+shift+o", "copy_cut_cmd", copyCutCmd);