通过HTML深度链接打开VLC求助:移除MRL前缀vlcurl
解决自定义URL协议调用VLC时自动移除前缀的问题
解决方案思路
不用编写Lua插件或复杂逻辑,直接修改注册表的协议调用命令,通过PowerShell预处理传入的URL,移除vlcurl:前缀后再启动VLC。
完整PowerShell脚本
# 请根据你的VLC实际安装路径修改下面的路径 $vlcExePath = "C:\Program Files\VideoLAN\VLC\vlc.exe" $customProtocol = "vlcurl" # 创建/更新注册表项(针对当前用户,无需管理员权限) New-Item -Path "HKCU:\Software\Classes\$customProtocol" -Force | Out-Null New-Item -Path "HKCU:\Software\Classes\$customProtocol\shell\open\command" -Force | Out-Null # 设置协议基础属性 Set-ItemProperty -Path "HKCU:\Software\Classes\$customProtocol" -Name "(Default)" -Value "URL:$customProtocol 协议" -Force Set-ItemProperty -Path "HKCU:\Software\Classes\$customProtocol" -Name "URL Protocol" -Value "" -Force # 设置核心调用逻辑:用PowerShell移除前缀后启动VLC $commandValue = "powershell.exe -Command `"Start-Process '$vlcExePath' -ArgumentList (`"%1`" -replace '^$customProtocol:', '')`"" Set-ItemProperty -Path "HKCU:\Software\Classes\$customProtocol\shell\open\command" -Name "(Default)" -Value $commandValue -Force Write-Host "注册表配置已完成!现在点击vlcurl链接将自动移除前缀并打开VLC播放视频"
使用说明
- 检查脚本中的
$vlcExePath路径,确保和你电脑上VLC的安装路径一致(比如32位系统可能是C:\Program Files (x86)\VideoLAN\VLC\vlc.exe) - 直接运行该PowerShell脚本(无需管理员权限,因为修改的是当前用户的注册表分支)
- 再次点击HTML中的
<a href="vlcurl:http://127.0.0.1:5500/ship.mp4">Video</a>链接,VLC就能正确识别并播放目标视频了
原理说明
原来的注册表配置直接将带vlcurl:前缀的完整字符串传给VLC,VLC无法识别这个自定义协议前缀导致报错。现在通过PowerShell作为中间处理层:
- 接收点击链接时传入的
%1参数(即vlcurl:http://xxx) - 用正则替换
-replace '^vlcurl:', ''移除开头的前缀 - 启动VLC并传递处理后的正常HTTP URL
内容的提问来源于stack exchange,提问作者Hródvitnir_Fenrir
相关产品推荐
相关产品推荐

