VLCで5秒スキップするLua Extensions作る
前置き
前からVLCの再生時に30秒や60秒スキップできないかなぁと思っていた。
なので今回作った。
欲しかった機能は以下のとおり
- スキップ秒数を指定できる
- 前にも後にもスキップできる
- 初期値は5秒にする (5秒の方が色々便利かなと思って)
- Numpad 1で前へ、Numpad 2で次へスキップ可能
プログラム
- skip_movie.lua
skip_second = 5 -- スキップする秒数。デフォルトは5秒 skip_previous_key = 49 -- Numpad 1 skip_next_key = 50 -- Numpad 2 function descriptor() return { title = "ムービースキップ",capabilities={} } end function activate() create_dialog() vlc.var.add_callback(vlc.object.libvlc() , "key-pressed", key_press) end function deactivate() vlc.var.del_callback(vlc.object.libvlc() , "key-pressed", key_press) end function close() vlc.deactivate() end function key_press(var , old , new , data) if new == skip_previous_key then skip_movie("Previous",skip_second) end if new == skip_next_key then skip_movie("Next",skip_second) end end function create_dialog() w = vlc.dialog("スキップする秒数を入力してください") w1 = w:add_text_input(skip_second,1,1,1,1) w:add_button("更新",click_Refresh,2,1,1,1) w:add_button("<",previous_skip,3,1,1,1) w:add_button(">",next_skip,4,1,1,1) end function next_skip() skip_movie("Next",skip_second) end function previous_skip() skip_movie("Previous",skip_second) end function click_Refresh() skip_second = tonumber(w1:get_text()) end function skip_movie(action,sec) local input = vlc.object.input() local now = vlc.var.get(input,"time") if action == "Previous" then sec=-sec end vlc.var.set(input,"time",now + sec) end
テキストボックスにフォーカスしている時にエンターキー押すとskip_secondが更新されるようにしたかったが、できないようだ。
仕方なく、更新ボタンを作成し、ボタン押下でskip_secondを更新するようにした。
一応、キーの値を取得するために作ったluaも載せておく。
function descriptor() return { title = "test" ,capabilities={} } end function activate() vlc.var.add_callback( vlc.object.libvlc(), "key-pressed" , key_press ) end function deactivate() vlc.var.del_callback( vlc.object.libvlc() , "key-pressed" , key_press ) end function close() vlc.deactivate() end function key_press(var , old , new , data) vlc.msg.info("Push key Number:"..new) end function create_dialog() w = vlc.dialog("Input Key!") end