前言
Leko 昨天在看 Kurzgesagt 的影片的時候,發現他有些早期的影片是沒有 60 FPS 的,看了不太開心
靈機一動,丟進 PotPlayer + BFRC 讓他自動補幀好了
然而事與願違 – Kurzgesagt 的早期影片是 25 FPS 的,AMD Fluid Motion 只支援 24 和 30 FPS 的補幀。
平時用的 PotPlayer (x64) 用於動畫補幀,不是很想動到那些設置…
於是安裝了 x86 版本的 PotPlayer,配置了一下確定能用於 25 FPS 的補幀 (可能會再另外開一篇文章) 安裝了 Chrome 擴充元件 讓 Youtube 影片底下有快速按鈕可以自動打開 PotPlayer 播放。
然而,由於同時安裝了 x64 和 x86 版本的原因,個人希望檔案關聯等等的都保留在 x64 上。
因此希望可以用 potplayer32://
來取代 potplayer://
以在 x86 PotPlayer 上開啟連結。
URL Protocol Handler
在呼叫 URL Protocol Handler 的時候,如果註冊表有好好配置的話:
假設 myapp://
會呼叫 myapp.exe
注意到我們開啟 myapp://payload
的時候,實際上是呼叫 myapp.exe myapp://payload
而不是 myapp.exe payload
好的因為我沒看文件在這個地方浪費半小時
因此如果單純註冊 potplayer32://
指向 PotPlayerMini.exe
的話,會導致 PotPlayerMini.exe
無法解析連結 (Expected potplayer://, got potplayer32://
)
為此,我們需要一個 Middleware
,藉由將 potplayer32://
指向 Middleware
, 由 Middleware
代為開啟 PotPlayerMini.exe
的方式來解決這個問題。
PotPlayerMiddleware
1 |
|
1 | clang++ ./PotPlayerMiddleware.cpp -o ./PotPlayerMiddleware.exe -Wall -static --target=x86_64-w64-mingw64 -municode -O3 |
編譯後丟入 PotPlayer (x86)
根目錄。
註冊表
1 | Windows Registry Editor Version 5.00 |
修改插件
將 Chrome 擴充元件 下載下來之後,background.js
裡面 potplayer://
全部改成 potplayer32://
,載入未封裝擴充元件之後就成功啦!