39 lines
1.2 KiB
Lua
39 lines
1.2 KiB
Lua
local utils = require "mp.utils"
|
|
|
|
function mark_begin()
|
|
begin_pos = mp.get_property('time-pos')
|
|
mp.osd_message('Begin Position Marked at ' .. begin_pos)
|
|
end
|
|
|
|
function mark_end()
|
|
end_pos = mp.get_property('time-pos')
|
|
mp.osd_message('End Position Marked at ' .. end_pos)
|
|
end
|
|
|
|
function output_marked()
|
|
if not begin_pos and not end_pos then
|
|
mp.osd_message('Please set Begin Position with Ctrl-b, End Position with Ctrl-e')
|
|
return
|
|
end
|
|
ss = begin_pos or 0
|
|
t = end_pos or mp.get_property('duration')
|
|
path = mp.get_property('path')
|
|
dir, file = utils.split_path(path)
|
|
output_dir = utils.join_path(dir, 'clips')
|
|
utils.subprocess({
|
|
args={'mkdir', '-p', output_dir},
|
|
cancellable=false
|
|
})
|
|
output_file = utils.join_path(output_dir, file)
|
|
utils.subprocess({
|
|
args={'ffmpeg', '-ss', tostring(ss), '-i', path, '-t', tostring(t), '-c', 'copy', output_file},
|
|
cancellable=false
|
|
})
|
|
mp.osd_message('Clip save to ' .. output_file)
|
|
end
|
|
|
|
|
|
mp.add_key_binding("ctrl+b", "mark_begin", mark_begin);
|
|
mp.add_key_binding("ctrl+e", "mark_end", mark_end);
|
|
mp.add_key_binding("ctrl+o", "output_marked", output_marked);
|