暂停或跳过检测到静音时的视频录制

今天我发布了一个想法来添加一些未来版本 obs 中的功能。 想法听起来像这样:

第一步 - 我们按下录制按钮。 第二步 - 如果声音水平大于或等于...x...分贝,那么它会继续录制。第三步 - 如果声音水平小于或等于...x...分贝,那么它会暂停我们的录制。 \ *它与过滤器 - 压缩器相同,但包括暂停\取消暂停功能。

一切都很简单! 由于这个原因。如果我们录制一些长时间的流,例如3小时或更长的时间。如果我们使用这种方法(或插件或脚本),我们只会得到15-45分钟的视频,其中没有静音。因为它将自动切断。有静音的时刻不会被记录。在 Sony Vegas 中不需要手动执行(这很无聊)。

也许论坛中已经包含了这些东西。如果是的话。请让我知道。

ps: 我在互联网上进行了大量研究。我找到了这些自动跳剪的方法:

Time bolt - 站点 Vegas vegasaur - 插件 AutoJumpCut 1.0 - 程序 After effect - 脚本 Py autojumpcut - python ffmpeg 脚本

运行指南

  1. 打开 obs 和设置热键 https://i.imgur.com/xjuOlIJ.jpg
  2. 在 ahk 论坛上下载声音水平检测库

我的坏 ahk 代码:

    #Include 3.ahk

;https://autohotkey.com/board/topic/21984-vista-audio-control-functions/

Loop
{

;;;;;;;;;;;;;;;;;
; 获取我们将要监视的设备。
设备 := VA_GetDevice("capture") ;播放捕获
; 获取 IAudioClient 接口。
VA_IMMDevice_Activate(设备,IID_IAudioClient :="{1CB9AD4C-B178-C2F568A703B2}",7,0,audioClient)
; 获取混合器格式以传递给 Initialize。
VA_IAudioClient_GetMixFormat(audioClient, format)
; 为了确保峰值计已激活,需要初始化音频客户端。
VA_IAudioClient_Initialize(audioClient, 0, 0, 0, 0, format, 0)

; 获取 IAudioMeterInformation 接口。
audioMeter := VA_GetAudioMeter(device)
; 不再需要,因此释放它:
MeterLength = 1 ;30
; "每个通道的峰值值在一个设备上被记录
; 随后在后续的设备周期中提供。"
VA_GetDevicePeriod("capture",devicePeriod)

Loop
{
    VA_IAudioMeterInformation_GetPeakValue(audioMeter, peakValue)
    ;ToolTip,%peakValue%

    b := peakValue *1000
    ;SetFormat, Float, 0.2
    ToolTip,%b%,887,944 ;toooooooooooooooooooltip

    ;ToolTip%(peakValue*1000)
    ;Sleep,%devicePeriod%

    if b >= 20
    {
        ControlSend,,{-},OBS
    }
    else
    {
        ControlSend,,{=},OBS
    }
}
;;;;;;;;;;;;;;;;;;;;;;

Sleep,500
}

2::暂停
返回

4::重新加载
返回

如果我们使用它,程序将崩溃。 因此,我们需要在 obs 中使用 lua。

点赞