View difference between Paste ID: q6MTsKQ4 and r0nJYywM
SHOW: | | - or go back to the newest paste.
1-
-- save as ~/.mpv/lua/capture.lua
1+
-- save as ~/.mpv/lua/capture.lua (new mpv versions)
2
-- or use as mpv --lua=/path/to/capture.lua
3
-- usage: press «a» at start and at end of fragment
4
-- will print commands for ffmpeg and mpv
5
6
capture = {}
7
function capture.handler()
8
    local gp = mp.get_property
9
    local gpn = mp.get_property_number
10
    local sp = mp.set_property
11
    local c = capture
12
    local filesize = 6144
13
    local maxfps = 35
14
    if c.start == nil then
15
        c.start = gp("time-pos")
16
    elseif c.finish == nil then
17
        c.finish = gp("time-pos")
18
        local ffopts = ""
19-
        local br = filesize * 8 / length - 100
19+
20
        local br = filesize * 8 / length - 128
21
        if gpn("fps") > maxfps then
22
            local fps = gpn("fps") / 2
23
        end
24
        local h = gp("height")
25
        local w = gp("width")
26
        if w * h / br > 1000 then
27
            ffopts = ffopts .. string.format("-vf scale=%d:-1 ",
28
                0.0017)
29
        end
30
31
        print(string.format("ffmpeg -ss %f -i '%s' -t %f -b:v %dk %s -pass 1",
32
            c.start, gp("path"), length, br,
33
            fps and "-r " .. fps or ""))
34
        print(string.format("mpv --start %f '%s' --length %f --ovcopts b=%dk",
35
            c.start, gp("path"), length, br))
36
        c.start = nil
37
        c.finish = nil
38
    end
39
end
40
mp.add_key_binding("a", "capture", capture.handler)