게이밍 환경에서는 성능을 극대화하기 위해 "최고의 성능" 전원 옵션을 사용하는 것이 유리하지만, 평상시에는 "균형
조정"으로 두어 전력 소모를 줄이는 것이 효율적입니다. 이 글에서는
Wallpaper Engine에서 특정 프로그램이
실행 중일 때 전원 옵션을 자동으로 전환하는 방법
을 소개합니다.


💡 개요

Wallpaper Engine은 게임 실행 시 배경화면 재생을 중지해 시스템 자원을 확보할 수 있도록 "응용 프로그램 규칙"
기능을 제공합니다. 이 기능을 활용해 특정 프로세스(
webwallpaper32.exe)의 상태를 기준으로 전원 옵션을 자동
전환할 수 있습니다.


1. 전원 옵션 전환 PowerShell 스크립트 작성

📄 PowerPlanSwitcher.ps1

# PowerPlanSwitcher.ps1
$highPerf = "GUID (최고의 성능) 값으로 변경하여 입력"
$balanced = "GUID (균형 조정) 값으로 변경하여 입력"
$targetProc = "webwallpaper32"

$exists = Get-Process | Where-Object { $_.Name -eq $targetProc } | Measure-Object
if ($exists.Count -gt 0) {
    powercfg /S $balanced
} else {
    powercfg /S $highPerf
}

이 스크립트는 webwallpaper32 프로세스가 존재하면 균형 조정, 없으면 최고의 성능으로 전환합니다.

 

GUID 확인 방법

cmd

powercfg /l


2. PowerShell 창 없이 실행하는 VBS 래퍼

📄 PowerPlanSwitcherSilent.vbs

' PowerPlanSwitcherSilent.vbs
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "powershell.exe -ExecutionPolicy Bypass -File \"C:\Naver MYBOX\P LISP\Program Files\Software\Scripts\PowerPlanSwitcher.ps1\"", 0, False

0은 창 숨김, False는 비동기 실행을 의미합니다.


3. 작업 스케줄러에 자동 실행 등록

🖥️ 명령어로 등록:

schtasks /Create /TN "PowerPlanSwitcher" ^
/TR "wscript.exe \"C:\Naver MYBOX\P LISP\Program Files\Software\Scripts\PowerPlanSwitcherSilent.vbs\"" ^
/SC MINUTE /MO 2 /RL HIGHEST /F
  • /SC MINUTE /MO 2 → 2분마다 실행
  • /RL HIGHEST → 관리자 권한 필요

.ps1 파일을 직접 등록하면 작동하지 않거나 창이 뜰 수 있기 때문에 .vbs로
감싸는 것이 안정적입니다.


4. Wallpaper Engine 설정

🧭 경로: 트레이 아이콘 우클릭 → 설정 → 성능 → 응용프로그램 규칙 편집

예시 설정

  • FarCry6.exe, Diablo IV.exe, Last Epoch.exe 등 게임 실행 시 배경화면 재생 중단
  • 배경화면이 중지되면 webwallpaper32.exe가 종료됨
  • → 전원 옵션이 자동으로 최고 성능 ↔ 균형 조정으로 전환됨

🔁 동작 흐름 요약

  1. 작업 스케줄러가 2분마다 PowerPlanSwitcherSilent.vbs 실행
  2. 내부에서 PowerPlanSwitcher.ps1 실행
  3. webwallpaper32.exe 실행 여부 체크
  4. Wallpaper Engine은 규칙에 따라 자동으로 배경화면 실행/중지
  5. 전원 옵션이 자동으로 변경됨
Posted by 삶과죽음
,

준비 사항

  • FFmpeg: 동영상, 오디오, 메타데이터를 처리하는 강력한 멀티미디어 프레임워크입니다. 최신 버전은 공식 FFmpeg 웹사이트에서 다운로드할 수 있습니다. Windows, macOS, Linux에 맞는 빌드를 선택하세요.
  • 환경 변수 설정: FFmpeg를 시스템 PATH에 추가하여 ffmpeg와 ffprobe 명령어를 전체 경로 없이 실행할 수 있도록 설정합니다. Windows에서는 FFmpeg의 bin 폴더(예: C:\ffmpeg\bin)를 시스템 PATH에 추가하면 됩니다.
  • Python: 챕터 메타데이터 파일을 생성하는 데 필요합니다. python.org에서 Python을 설치하세요.
  • AutoHotkey (AHK): Windows에서 FFmpeg 작업을 자동화하는 데 사용됩니다. autohotkey.com에서 다운로드하세요.

작업 1: MP4 파일에서 챕터 제거하기

이 스크립트는 MP4 파일에서 챕터를 제거하고, 출력 파일을 _noch 접미사를 붙여 저장합니다.

[SHANA] 또는 _noch가 포함된 파일은 제외됩니다.

0 Remove_Chapters_Excluded.ahk

#NoEnv
SetBatchLines, -1
SetWorkingDir, %A_ScriptDir%

; FFmpeg 경로 설정
ffmpegPath := "C:\ffmpeg\bin\ffmpeg.exe"

Loop, *.mp4
{
    originalName := A_LoopFileName
    
    ; 제외 조건 확인 ([SHANA] 또는 _noch 포함 여부)
    if (InStr(originalName, "[SHANA]") || InStr(originalName, "_noch"))
    {
        ;~ MsgBox, [제외] 건너뛰는 파일: %originalName%
        continue
    }

    ; 출력 파일명 생성 (원본명 + _noch)
    outputName := SubStr(originalName, 1, -4) . "_noch.mp4"

    ; FFmpeg 명령 실행
    RunWait, %ffmpegPath% -y -i "%originalName%" -map_chapters -1 -c copy "%outputName%", , Hide
    
    ; 실행 결과 확인
    if ErrorLevel
        MsgBox, [오류] 처리 실패: %originalName%
    ;~ else
        ;~ MsgBox, [성공] 생성 완료: %outputName%
}

MsgBox, 작업이 완료되었습니다!
ExitApp

 

주요 고려 사항

  • 제외 조건: [SHANA] 또는 _noch가 포함된 파일은 이미 처리되었거나 특정 조건에 부합하지 않으므로 건너뜁니다. 이는 불필요한 재처리를 방지합니다.
  • 에러 처리: ErrorLevel을 확인하여 FFmpeg 명령이 실패하면 오류 메시지를 표시합니다.
  • -c copy: 비디오와 오디오를 재인코딩 없이 복사하여 처리 속도를 높이고 품질 손실을 방지합니다.

작업 2: 챕터 메타데이터 생성 및 MP4 파일에 챕터 추가하기

이 작업은 두 단계로 나뉩니다.

(1) Python 스크립트로 챕터 메타데이터 파일 생성, (2) AHK 스크립트로 메타데이터를 MP4 파일에 적용.

1 generate_chapters.py

import os
import subprocess

# ffprobe 경로 고정
FFPROBE_PATH = r"C:\ffmpeg\bin\ffprobe.exe"  # ★★ 너 ffprobe.exe 실제 경로 맞게 수정 ★★

def get_video_duration(filepath):
    """ffprobe로 영상 길이(초 단위) 가져오기"""
    result = subprocess.run(
        [FFPROBE_PATH, '-v', 'error', '-show_entries', 'format=duration', '-of', 'csv=p=0', filepath],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        text=True
    )
    return float(result.stdout.strip())

def time_to_milliseconds(raw_input):
    """숫자로만 hhmmss 받아서 밀리초 변환"""
    raw_input = raw_input.strip()
    if not raw_input.isdigit():
        raise ValueError("시간은 숫자만 입력하세요. (예: 013015 → 1시간 30분 15초)")

    raw_input = raw_input.zfill(6)  # 부족하면 0으로 채움 (ex: 3015 → 003015)
    h = int(raw_input[:2])
    m = int(raw_input[2:4])
    s = int(raw_input[4:6])
    return (h * 3600 + m * 60 + s) * 1000

def milliseconds_to_time(ms):
    """밀리초 -> hh:mm:ss 변환 (디버깅용)"""
    seconds = ms // 1000
    h = seconds // 3600
    m = (seconds % 3600) // 60
    s = (seconds % 60)
    return f"{h:02}:{m:02}:{s:02}"

def main():
    print("현재 폴더의 모든 MP4 파일을 검색합니다...\n")
    mp4_files = [f for f in os.listdir('.') if f.lower().endswith('.mp4')]

    if not mp4_files:
        print("MP4 파일이 없습니다.")
        return

    for mp4 in mp4_files:
        # 제외 조건 체크
        if '[SHANA]' in mp4:
            print(f"\n[{mp4}] 파일은 제외 대상입니다. 스킵합니다.")
            continue

        print(f"\n[{mp4}] 처리 시작")

        # 영상 길이 가져오기
        duration_seconds = get_video_duration(mp4)
        duration_ms = int(duration_seconds * 1000)

        # 타임코드 입력받기
        print(f" - 영상 길이: {milliseconds_to_time(duration_ms)}")
        print(" - 챕터용 타임코드를 입력하세요 (끝내려면 빈 줄)")
        print("   예시: 013015 입력 → 01:30:15")

        times = []
        titles = []

        while True:
            time_str = input("시작 시간 (hmmss 또는 hhmmss): ")
            if not time_str.strip():
                break
            title = input("제목: ")
            try:
                times.append(time_to_milliseconds(time_str))
                titles.append(title)
            except ValueError as e:
                print(f"잘못된 입력: {e}")

        if not times:
            print(" - 타임코드가 없어 건너뜁니다.")
            continue

        # 파일 저장
        base_name = os.path.splitext(mp4)[0]
        output_txt = f"{base_name}_SE.txt"

        with open(output_txt, "w", encoding="utf-8") as f:
            f.write(";FFMETADATA1\n")
            for i in range(len(times)):
                f.write("\n[CHAPTER]\n")
                f.write("TIMEBASE=1/1000\n")
                f.write(f"START={times[i]}\n")
                if i < len(times) - 1:
                    f.write(f"END={times[i+1]}\n")
                else:
                    f.write(f"END={duration_ms}\n")  # 마지막 END는 영상 길이
                f.write(f"title={titles[i]}\n")

        print(f" - 챕터 메타데이터 파일 생성 완료: {output_txt}")

    print("\n모든 작업이 완료되었습니다!")

if __name__ == "__main__":
    main()

 

2 Chapters_Included.ahk

#NoEnv
SetBatchLines, -1
SetWorkingDir, %A_ScriptDir%

; FFmpeg 경로 설정
ffmpegPath := "C:\ffmpeg\bin\ffmpeg.exe"

Loop, *_SE.txt
{
    chapterFile := A_LoopFileName
    baseName := SubStr(chapterFile, 1, -7) ; "_SE.txt" 제거

    ; 해당하는 MP4 파일 찾기
    videoFile := baseName . ".mp4"
    
    if !FileExist(videoFile)
    {
        MsgBox, [경고] 동영상 파일 없음: %videoFile%
        continue
    }

    ; 출력 파일명 생성
    if (SubStr(baseName, -4) = "_noch")  ; 파일명이 _noch로 끝나면
    {
        trimmedName := SubStr(baseName, 1, -5) ; _noch 제거
        outputName := trimmedName . "_ch.mp4"
    }
    else
    {
        outputName := baseName . "_ch.mp4"
    }

    ; FFmpeg 명령 실행 (챕터 추가)
    RunWait, %ffmpegPath% -y -i "%videoFile%" -i "%chapterFile%" -map_metadata 1 -map_chapters 1 -c copy "%outputName%", , Hide

    ; 실행 결과 확인
    if ErrorLevel
        MsgBox, [오류] 처리 실패: %videoFile%
    else
        FileMove, %chapterFile%, %baseName%_SE_processed.txt ; 처리 완료된 챕터 파일 이동
}

MsgBox, 작업이 완료되었습니다!
ExitApp

주요 고려 사항

  • 입력 유효성 검사: Python 스크립트는 타임코드 입력이 숫자로만 이루어졌는지 확인하고, 잘못된 입력에 대해 에러 메시지를 출력합니다. 이는 사용자 실수를 줄입니다.
  • 자동화 및 피드백: AHK 스크립트는 처리된 챕터 파일을 _SE_processed.txt로 이동하여 중복 처리를 방지하고, 작업 완료    여부를 메시지로 알립니다.
  • 메타데이터 형식: 생성된 _SE.txt 파일은 FFmpeg의 FFMETADATA1 형식을 따르며, TIMEBASE=1/1000을 사용하여        밀리초 단위로 정확한 챕터 타임코드를 지정합니다.
  • 효율성: -c copy 옵션을 사용하여 비디오와 오디오를 재인코딩 없이 복사하므로 처리 속도가 빠르고 품질 손실이 없습니다.

요약

이 포스트에서는 FFmpeg를 사용하여 MP4 파일의 챕터를 제거하고 추가하는 방법을 설명했습니다.

 

챕터 추가 할 mp4 파일과 같은 위치에서 위 코드를 복사해서 만든 아래 파일 3개를 순서대로 실행

(기존 영상에서 챕터 삭제 → 초단위 챕터 메타데이터 생성 → 챕터 추가한 mp4 파일 생성)

0 Remove_Chapters_Excluded.ahk

1 generate_chapters.py

2 Chapters_Included.ahk

 

Hitomi Downloader로 받은 유튜브 영상에 팟플레이어로 책갈피를 추가하면 챕터 마크가 숨겨지고 책갈피만 남는 부분이 신경      쓰여 여러 AI 도구에 도움을 요청했고, 오랜 시행착오 끝에 해결 방법을 찾게 되어 정리해봅니다.

파이썬만으로도 가능할 것 같았지만, AI를 통해 원하는 결과를 얻기는 쉽지 않아 결국 Python + 오토핫키(AutoHotkey 1버전)      조합으로 성공하여 이 포스트를 작성합니다.

 

 

 

 

 

 

 

 

 
Posted by 삶과죽음
,

음악이 나오는 배경화면일 때 어느 순간부터 1초 정도 들렸다가 안 들렸다가 하기 시작함.

 

그런 배경 화면은 볼륨을 줄여놓고 설정 하고는 했는데 FAQ에서 해결 방법을 찾아서 적용 해보니 해결 됨.

 

그 방법은

 

https://steamcommunity.com/app/431960/discussions/2/1729827777340674869/

 

Audio turns on and off periodically :: Wallpaper Engine General Discussions

Back to FAQ: LINK Check the "Performance" tab of the Wallpaper Engine settings. If you have the option 'other application is playing audio' set to 'mute' and you notice that the sound from Wallpaper Engine keeps turning itself on and off, you likely have a

steamcommunity.com

위 항목에서

 

설정 - 성능 - 편집

위와 같이 설정하니 해결 됨.

 

게임 캡쳐 하려고 켜둔 Geforce Experience의 즉시 리플레이가 윈도우 바탕화면도 인식 하면서 생기는 문제라는거 같음.

 

해결!!

Posted by 삶과죽음
,

크롬 웹스토어에서 내려감. 이유는 모르겠네요...


확장 프로그램 설치 후


옵션 -> 스타일 탭 -> Add New Style


아래와 같이 작성하면 방문한 페이지의 링크가 빨간색으로 처리 됨.

(CCleaner 기준으로 히스토리 삭제 시 방문 기록이 초기화 됩니다.)


- 내용

A:visited { color: red ! important }


All site 체크 후 저장



Stylist 2.1.0.zip

'크롬 확장프로그램 (Extensions)' 카테고리의 다른 글

Ddict (번역)  (0) 2016.01.07
Posted by 삶과죽음
,

가끔 유튜브 영상들을 보다가 최근에 자주 보게 되었는데

마우스로만 조작을 하기에는 모호한 부분들이 있어서

찾아보니 단축키가 몇 개 있어 정리해봐요.


F : 전체 화면

ESC : 전체 화면 나가기

Tab : 메뉴 순차 선택

→ : 5초 앞으로

← : 5초 뒤로

↑ : 볼륨 크게

↓ : 볼륨 작게

Shift+Tab : 메뉴 역 순차 선택

( Tab, Tab, Shift+Tab)

Home,  : 동영상 처음

0-9 : 동영상 number% 위치로 이동

(0, 1, 2, 3, 5, 4, 6, 7, 8, 9)

(동영상이 2개 이상일 때)

Tab을 한 번 누르고 Enter를 누르면 재생 목록을 열 수 있음.

↑, ↓ 키와 Enter 키를 이용해서 동영상을 선택 가능해짐.

Posted by 삶과죽음
,
Ddict 즉시 더블 클릭이나 키 누르기에 의해 웹 사이트 또는 PDF 파일에 텍스트를 번역하는 데 도움이됩니다.
Ddict is a Browser Extension to help you instantly translate any text on websites or PDF files with a double click or keypress.

Powered by Google Translate.


옵션 설정에 따라 확장 프로그램을 실행할 수 있고, 한글의 경우 읽어주고 발음 나는 대로 스펠을

짜 맞추어 표시해주네요.


다운로드 주소 : https://chrome.google.com/webstore/detail/ddict/bpggmmljdiliancllaapiggllnkbjocb?utm_source=chrome-app-launcher-info-dialog


'크롬 확장프로그램 (Extensions)' 카테고리의 다른 글

Stylist  (0) 2018.06.07
Posted by 삶과죽음
,
http://www.nexusmods.com/skyrim/mods/1177/?


조작키
Move L-Stick
Look R-Stick
L-Attack/Block LT
R-Attack/Block RT
Activate A
Ready Weapon X
Tween Menu RB+LS (Character Menu)
Toggle POV RS
Zoom Out RS+L-Stick Down (Default)
Zoom In RS+L-Stick Up (Default)
Jump B
Sprint LB
Shout Y
Sneak LS
Auto-Move RB+LT
Favorites Back

Hotkey1 -
Hotkey2 -
Hotkey3 -
Hotkey4 -
Hotkey5 -
Hotkey6 -
Hotkey7 -
Hotkey8 -

필수화된 모드. SKYUI에서 Hot Key 실행 키를 변경 후 사용 가능합니다.
Hot Key 지정된 마법의 경우 변경 시 키보드를 이용하세요. (변경 및 삭제 등)
모드 자체 제공되는 실행 키는 SKYUI에서 패드를 이용한 조합 키가 등록되지 않으니
1~4는 화살표 키로 나머지는 패드를 제거하고 키보드를 이용하시길 바랍니다.

Quicksave RB+LB
Quickload LB+Start
Wait RB+Back
Journal Start
Quick Inventory RB+B
Quick Magic RB+X
Quick Stats RB+Y
Quick Map RB+A
Screenshot RB+RT

[Menu Mode]
PageUp DUp <- New!
PageDown DDown <- New!

[Inventory]
ChargeItem RB
Favourite check Y
Dump Item X

[Map Menu]
MapLookMode RB (Cursor Centering at the worldmap)

설치법
=======
If there is "ControlMap_Custom.txt" in the Skyrim folder, please rename or delete it, first.
(변경된 조작키가 마음에 들지 않을 수 있으니 백업해두세요.)
Then,
Simply extract to the ..\Steam\steamapps\common\Skyrim\ folder.

삭제법
=========
Simply delete "..\Skyrim\Data\Interface\Controls\PC\controlmap.txt" file.


Posted by 삶과죽음
,



혼스 (2014)

Horns 
5.8
감독
알렉산드르 아야
출연
다니엘 래드클리프, 주노 템플, 헤더 그레이엄, 사브리나 카펜터, 켈리 가너
정보
판타지, 공포 | 미국 | 119 분 | 2014-11-27
다운로드

노출 있음. 

징그럽다.

Posted by 삶과죽음
,



어바웃 타임 (2013)

About Time 
8.7
감독
리차드 커티스
출연
레이첼 맥아담스, 빌 나이, 돔놀 글리슨, 톰 홀랜더, 마고 로비
정보
로맨스/멜로, 코미디 | 영국 | 123 분 | 2013-12-05

Posted by 삶과죽음
,