如何在 VLC 媒体播放器暂停后快退几秒?

问题描述 投票:0回答:3

我在互联网上搜索过这个,但似乎找不到任何东西。我知道有热键可以快退几秒钟,并且我知道有热键可以在 VLC 媒体播放器中暂停和播放音频/视频。然而,我使用单脚踏板进行转录,并且基本上需要它来完成这两项工作。我想要踩踏板来暂停音频。然后,再次点击后,我希望它播放音频,但在这样做时会跳过几秒钟。这可能吗?

vlc
3个回答
1
投票

将此代码另存为

rollback.lua
并将其放入
Program Files\VideoLAN\VLC\lua\extensions
文件夹中。然后通过“视图”>“回滚 X 秒”激活它。

function descriptor()
   return {
      title = "Rollback X Seconds",
      capabilities = {"input-listener", "playing-listener"}
   }
end

function activate()
end
function close()
end
function deactivate()
end

function input_changed()
end

function playing_changed()
    local TIME_DELTA = -3

    if vlc.playlist.status()=="paused" then

        local timePassed = vlc.var.get(vlc.object.input(), "time")
        local newTime = timePassed + TIME_DELTA

        vlc.osd.message(TIME_DELTA, vlc.osd.channel_register(), "top-left", 1400000)        
        vlc.var.set(vlc.object.input(), "time", newTime)
    end
end

将变量

TIME_DELTA
更改为您想要暂停时的任何时间更改


1
投票

我通过添加 GUI 扩展了 Tee 提供的 code
我还想添加一些如何让它工作的细节。

  1. 创建一个空文件,命名为rollback.lua。
  2. 复制此列表下方提供的代码,粘贴到文件中并保存。
  3. 将文件移动到 lua 扩展的 VLCs 文件夹,它应该看起来像这样:
    c:/Program Files/VideoLAN/VLC/lua/extensions
  4. 重新启动 VLC 播放器。
  5. 通过转到激活脚本(注意!每次启动 VLC 才能使用插件时都需要完成
    查看 > 回滚 X 秒
  6. 选择要回滚的时间(以秒为单位)并点击保存(或保存并关闭)。

为了让您的踏板与此脚本配合使用,只需在 VLC 中配置用于播放/暂停切换的热键即可。
VLC > 工具 > 首选项 > 热键 > 将“播放/暂停”全局值设置为踏板。
(更改全局热键后,您需要重新启动VLC才能使其正常工作...)

代码:

micro_second_unit = 1000000  
TIME_DELTA        = 1     --Default, 
SHOW_OUTPUT       = true
TIME_TO_DISPLAY   = 1.5    --Default


function descriptor()
   return {
      title = "Rollback X Seconds",
      capabilities = {"input-listener", "playing-listener"}
   }
end

function activate()
    dlg = vlc.dialog("Rollback X Seconds")    

    rollback_input         = dlg:add_text_input("1", 2, 1 )    
    rollback_input_label   = dlg:add_label("Seconds to back", 1, 1)

    checkBox = dlg:add_check_box("Show output time ", wasChecked, 3, 3 )

    timeTo_display_box        = dlg:add_text_input(1.5, 2 ,3)
    timeTo_display_box_label  = dlg:add_label("Seconds To Display", 1, 3)

    w2 = dlg:add_button("Save settings", change_step, 3, 4, 1, 1)
    w2 = dlg:add_button("Save and close", updateAndClose, 3, 5, 1, 1)

    done = dlg:add_label( "" , 3, 6)

end
function close()
end
function deactivate()
   vlc.deactivate()
end

function input_changed()
end

function playing_changed()    

    if vlc.playlist.status()=="paused" then

        local timePassed = tonumber(vlc.var.get(vlc.object.input(), "time"))
        local newTime = timePassed - seconds_to_microsecond(TIME_DELTA)

        local newTime_inSeconds     = (newTime/1000000)
        local newTime_inMinutes     = (newTime_inSeconds/60)
        local newTime_inSeconds_restOfMin  = math.fmod(newTime_inSeconds,60)
        local newTime_str           = math.floor(newTime_inMinutes) .. "min " .. round(newTime_inSeconds_restOfMin,1) .."sec"        

        local timePassed_inSeconds  = (timePassed/1000000)
        local timePassed_inMinutes  = (timePassed_inSeconds/60)
        local timePassed_inSeconds_restOfMin  = math.fmod(timePassed_inSeconds,60)

        local timePassed_str  = math.floor(timePassed_inMinutes) .. "min " .. round(timePassed_inSeconds_restOfMin,1) .."sec"


        if SHOW_OUTPUT == true then
            vlc.osd.message("Seconds to Back:" .. TIME_DELTA .. "sec", vlc.osd.channel_register(), "top-right", seconds_to_microsecond(TIME_TO_DISPLAY))  

           vlc.osd.message("New time:" .. newTime_str, vlc.osd.channel_register(), "top-left", seconds_to_microsecond(TIME_TO_DISPLAY))   

           vlc.osd.message("Old time:" .. timePassed_str, vlc.osd.channel_register(), "bottom-left", seconds_to_microsecond(TIME_TO_DISPLAY))   
        end


        vlc.var.set(vlc.object.input(), "time", newTime)
    end
end
function updateAndClose()
   change_step()
   dlg:delete()
end

function change_step()
    done:set_text("Saved")

   TIME_DELTA = tonumber(rollback_input:get_text())

   SHOW_OUTPUT = checkBox:get_checked()

   if SHOW_OUTPUT == true then 
      TIME_TO_DISPLAY = tonumber(timeTo_display_box:get_text())
   end 

end

function round(num, numDecimalPlaces)
  local mult = 10^(numDecimalPlaces or 0)
  return math.floor(num * mult + 0.5) / mult
end

function microsecond_to_seconds(timeToConvert)  

  return timeToConvert / micro_second_unit;
end

function seconds_to_microsecond(timeToConvert)

  return timeToConvert * micro_second_unit;
end

这就像 Tee 的脚本一样,视频每次暂停时都会跳回来。
唯一的区别是,您可以设置每次启动脚本时跳回的时间。
金额以秒为单位给出,但是您可以使用小数进行更多控制...
如果您想显示有关跳转的信息,还可以勾选一个复选框

我还要感谢Tee的回答!
这是我写的第一个 lua 代码(或者更确切地说,修改了),它有点乱,但它有效,而且从那以后我每天都在使用它,所以我想我不妨分享它。


0
投票

您好,没有任何扩展名,您可以转到左下角的首选项启用所有设置,然后输入热键,然后在热键搜索返回中您可以轻松设置向后几秒钟的快捷方式

© www.soinside.com 2019 - 2024. All rights reserved.