VRChat と yt-dlp
VRChat の動画プレイヤーは YouTube の動画再生が可能になっている。 どうやってこれを実現しているかというと、VRChat が内部で yt-dlp を使っているから。 次のパスに存在している
%homepath%\AppData\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe
どのタイミングで更新されるのか?
よくわからない
なんかどうしても動画が再生できないって時にこの exe のバージョンを上げ下げしてやる
(自分はこう解決できました!という話です、上手くいかない、壊れたなどは責任を負いかねます)
VRChat を終了しておく
%homepath%\AppData\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe --version でバージョンを確認できる
Assets をクリックして展開する
yt-dlp.exe を探してダウンロードする
%homepath%\AppData\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe を適当に名前を変えておく(後で戻せるように!)
%homepath%\AppData\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe にダウンロードしたバイナリを置く
ファイルのプロパティを開き、読み取り専用にする
VRChat を立ち上げる
動画が再生できることを確認する
VRChat 側が問題を解決してくれたら、読み取り専用を解除すること!
IPv6 を切ることで改善することもあるらしい
それでも上手くいかない!
code:log.txt
VRChat が同梱している yt-dlp はカスタムビルドらしい
グローバルな設定ファイルに cookie のことを書いたら上手くいくかもと思ってた
けどなんか上手く読み込まれない
設定のパス・中身を間違ったか?
それともカスタムなビルドがグローバルな設定を読まないようになっているのか?
だったら自分で cookie のファイルを用意して、常にそのファイルを使うようにカスタマイズしてやるか
cookie はサブアカウントのものを使用(BAN される可能性もあるため)、同じセッションを使わないようにプライベートウィンドウでログインした時のセッションを使うなどすること
カスタマイズしてビルドした
詳しい実装について知りたい方は i544c.icon に DM ください
設置時の注意
AppData\LocalLow 下は特別で、署名が無いと実行には制限がある...らしい
PyInstaller が一時ファイルを作成できずに詰む
Could not create temporary directory!
自分は適当なディレクトリにバイナリを配置した上で、リンクを作成した
管理者権限で New-Item -ItemType SymbolicLink -Path "C:\Users\user\AppData\LocalLow\VRChat\VRChat\Tools\yt-dlp.exe" -Target "C:\Users\user\Documents\yt-dlp.exe"
これで VRChat はリンクでも yt-dlp のプロセスを立ち上げて利用してくれる
(署名検証しないのかよ)
他にオレオレ証明書でもいけるらしい(未検証)