-
Notifications
You must be signed in to change notification settings - Fork 158
Home
这篇文档包含了关于 wiliwili 一切你需要了解的信息
⚠️ 注意:此文档时时更新中,部分内容不一定与当前的正式版一致。
如果文档中标注出某些功能无法在正式版本上使用,可以下载测试版,详细说明见下方第一节——#下载安装。
本文档包含:
- Windows / macOS / Linux / Nintendo Switch / PSV / PS4
- Xbox
请前往:wiliwili-uwp-poc - Steam Deck
请参考:#41 - 树莓派
请参考:#78 - 从包管理器安装
请参考:#92 - 测试版
可以从 Github-Actions 下载自动构建的测试版客户端
如果不知道如何从 Github-Actions 下载软件,这里是 教程
也可以直接从这里下载(不保证一直可用):nightly.link
- 【修复】播放器通过快捷键快进快退后,不自动隐藏进度条
- 【修复】字幕显示错乱
更多说明可以在应用内找到,入口在:设置 - 实用工具 - 使用教程
如果使用过程中遇到问题,如:黑屏、无法访问网络等,请查阅本文第五节。
可以在应用设置中开启底部提示栏,对大部分快捷键都会有提示。
PC 端按键映射:#47
注: RT + 方向键上下 可以快速调节音量 (实验功能,随时更改)
PC 端额外的快捷键(注意在输入法开启的状态下,快捷键不可用):
-
F
切换全屏/非全屏,大部分页面可用 -
CTRL-V
粘贴剪贴板内容到输入框 -
空格
播放/暂停,播放页可用
wiliwili 已经针对不同平台进行了优化,不同平台下的默认设置不同,如果你不知道究竟该怎么选择,那么推荐不要修改默认配置。如果你不了解具体某个选项的功能也推荐不要盲目修改。
开启了两个 mpv 选项 和 fast profile:
vd-lavc-skiploopfilter: all
vd-lavc-fast: yes
推荐开启,对视频观感影响不大的同时降低了 CPU/GPU 占用。
在开启硬解时,设置了 mpv 选项:hwdec: auto-safe
除PS4外,其他平台均支持硬解(PC平台默认关闭),在视频页面全屏按 手柄左侧功能键(PC上为F1)可以查看详细信息,如果显示有 Hardware Decode: no
则说明未开启硬解。(switch 的 ubuntu 系统除外,那个硬解实现思路不同,无论怎么显示都开了硬解)
PSV 能够流畅硬解 360P,同时勉强播放720P,至于480P则效果最差(我也不是很懂为什么480P效果更差,了解的朋友可以发条issue讨论一下,感谢)
默认提供的switch安装包为 OpenGL 版本,最高支持硬解播放 4k@30,你也可以下载到支持原生图形 api 的 deko3d 版本,可以流畅播放 4k@60,不过可能会偶尔崩溃。
部分平台需要显式地指定硬解方案,才能正常开启硬解,请参考下方的 自定义硬解。
关闭时设置了 mpv 选项: cache: no
开启时设置了:
demuxer-max-bytes: N
MiB
demuxer-max-back-bytes: N/2
MiB
在播放中预先缓存指定大小的视频数据,避免网络波动导致频繁加载,推荐设置成 10MB 就足够了。
这个选项控制除直播外的其他视频获取的视频流格式
当选择视频格式为 Dash 时,可以调节优先获取哪个 视频编码/视频音质,根据你的设备来选择,如果不知道如何选择,保持默认值即可。
当视频格式为 flv/mp4 时,获取最高 1080p 的 h264 视频,仅用作备份方案使用。
- 缓存数量:表示究竟有多少张图像会缓存在显存中,在加载图片后将图片加入缓存队列,当缓存占满时根据这个选项的数值大小按照最近最少使用规则移除缓存。
- 加载线程:同一时间加载多少张图片,这个数值越大图片加载速度就会相应越快(会根据设备的网速和性能有一个上限)
- TLS 验证:开启后网络访问更加安全,如果你访问网络时显示无网络,那么可以尝试关闭这个选项重新测试。
- 应用代理:设置 http 或 socks5 代理(部分平台只支持http代理)
开启此选项后,点击应用内搜索会进入一个 TV 端风格的搜索页,附带关键字首字母搜索联想,适合掌机用户。
开启此选项后:
- 焦点可以选到控制条上,通过确定键选中并调整,再次点击确定完成进度调整(之前:无法通过方向键调整进度)
- osd 隐藏状态下,按下确定键显示 osd。(之前:确定键控制播放和暂停)
- 全屏时 osd 显示状态下按返回键隐藏 osd,隐藏后再按返回键退出全屏。(之前:返回键控制直接退出全屏)
开启这个选项后,你只需要一个能连接到设备上的传统电视遥控器就能控制整个应用的全部功能。
调整应用文字大小和组件尺寸以适应不同屏幕大小,在大屏幕下可以显示更多的内容。
下方提示栏显示的图标风格,目前在 pc 平台有三种风格可选 (xbox、playstation、keyboard)。你可以在应用配置目录放置 icon.ttf 文件来设置自定义图标,查看下一节获取详细信息。
本节包含:
- 自定义界面布局
- 自定义手柄支持
- 自定义字体/按键图标/emoji
- 自定义PC端快捷键
- 自定义播放器配置
- 自定义着色器
- 自定义硬解
- 自定义视频源格式
- 自定义帧数限制
- 自定义DLNA接收端名称/端口号/ip
- 自定义窗口最小尺寸
- 自定义自动窗口置顶的触发范围
- 自定义触摸滑动速度
- 首页推荐屏蔽指定UP主
在自定义诸多内容前,你需要知道如何打开应用的配置目录,入口在:设置 - 实用工具 - 打开配置目录
你也可以直接打开配置目录:#39
wiliwili 使用 xml 来布局界面,如果你对当前的界面布局不满意,比如希望默认打开的页面不是首页推荐、想把某个收藏夹放在首页等等 都可以通过自定义布局的方式来修改。
修改布局不需要对编程十分了解,参考已有的布局修改即可。
详细说明:wiliwili_theme
一些玩家使用了目前未被收录的手柄,可能会出现软件无法正确识别按键键位的问题,解决方法是下载或自定义 gamecontrollerdb.txt 放置在配置目录。
关于这个文件如何生成与如何修改,请参考:SDL_GameControllerDB
相关讨论:#54
字体即为应用内使用的字体,设置自定义字体后会优先调用自定义字体包含的字形。
按键图标是当开启底部提示栏时(可于设置中开启或关闭),快捷键对应的图标,wiliwili pc 端应用内置了 xbox、ps 和 键盘 三种自定义图标包,如果你不是很喜欢,也可以仿照这些图标自己绘制。
请参考:#38
目前软件内并不支持自定义快捷键,未来也没有计划做这样的支持,不过你可以通过微调代码来快速完成(何尝不是一种自定义) 请参考:https://github.com/xfangfang/wiliwili/issues/119 参考:网友修改方案
在配置目录新建 mpv.conf,其中写入 mpv 配置即可,配置内容可前往 https://mpv.io 查阅。
有一些配置指令会和应用内设置冲突导致无法使用,遇到这种情况请发布一个issue讨论。
例如:针对 switch 用户 为了提升播放性能或许可以配置如下内容:
# 可能会和部分自定义着色器冲突
fbo-format=rgba8
opengl-pbo=yes
例如:调整视频色彩等信息,见文档:Equalizer
saturation=0
brightness=0
contrast=0
gamma=0
hue=0
观看低分辨率视频(尤其是老动画片)时,可以使用自定义着色器来提升画面观感。
switch 的 deko3d 版本、PS4 均不支持自定义着色器。
这是作者正在使用的 shader 配置(按照压缩包内说明使用即可):wiliwili_shader.zip
如果你想自定义其他 shader 或 mpv 参数,可以遵循下面的流程:
- 将你需要的着色器文件放入配置目录下的
shaders
文件夹(默认不存在需要自己创建) - 在配置目录下新建一个名为
pack.json
的文本文件,在其中写入:
{
"profiles": [
{
"name": "SSimSuperRes (这里写自定义的配置名称)",
"settings": [
["video-rotate", "270"],
["profile", "你可以在settings下指定 mpv 的各种参数"],
],
"shaders": [
"SSimSuperRes.glsl (这里写入 shaders 目录下的文件名,可以同时指定多个)",
"Another.glsl"
]
}
]
}
- 重启应用,在视频播放页点击播放器右上角小齿轮,在弹出的设置页面选择你自定义的配置即可
在 mpv 默认识别的硬解在你的设备上不起作用或效果不佳时,可以尝试自定义硬解。
在自定义硬解前,可以先在设备上直接使用 mpv 调试清楚再修改。
请参考:#78
Linux用户同时参考:#105
Windows用户可以参考:#220
如果应用正常使用无问题,无需查看此节
-
配置项:
file_format
前端入口:设置/视频格式
,可以在 Dash 与 FLV 中切换。默认 Dash(AVC/HEVC/AV1) 对应的值为 4048; FLV/MP4 对应的值为 0;
FLV/MP4 只有 1080P 和 360P 两种分辨率,作为Dash格式出错时的备选方案。
若B站未来变更,在应用未更新前,可以手动去配置文件修改此值。定义见: #qn视频清晰度标识 -
配置项
video_codec
开启 Dash 源后,可选视频编码,推荐搭配硬解选择 HEVC,不支持硬解的设备使用 AVC。switch ps4 psv 均推荐使用AVC。
目前只设置了三个选项,若B站未来支持更多编码,在应用未更新前,可以手动去配置文件修改此值。定义见:#视频编码代码 -
配置项
audio_quality
开启 Dash 源后,可选音频音质(暂未支持杜比全景声和Hi-Res)
目前只设置了三个选项,若B站未来支持更多音频音质,在应用未更新前,可以手动去配置文件修改此值。定义见:#视频伴音音质代码
不稳定功能,默认关闭
三个可以写入配置文件的自定义选项:
-
limited_fps
(无需手动修改,可以在设置菜单中修改)
设置为 0 时,最大刷新帧数受显示器帧数限制。(默认)
设置为大于 0 的值,会在显示器刷新率的基础上限制最大刷新帧数到limited_fps
。 -
deactivated_time
与deactivated_fps
在应用无操作deactivated_time
毫秒后,限制最大刷新帧数到deactivated_fps
deactivated_time
设置为 0 关闭这个功能(默认值),单位 ms
deactivated_fps
默认值 5 单位 fps
入口:设置-> 实用工具 -> 其他 -> DLNA 投屏
添加了三个配置项用于自定义配置(Linux下或者多网卡下,可能需要手动指定 dlna_ip):
dlna_ip: "192.168.1.100"
dlna_port: 9958
dlna_name: "wiliwili"
应用会开启: 0.0.0.0:${dlna_port} 的 http 服务(SOAP),和 0.0.0.0:1900 的 udp 服务(SSDP)
目前支持: 播放暂停、进度同步、控制声音
还需改进的问题:
- SOAP端口冲突时自动调整 (目前简单写了个提示,先这么用吧)
- SSDP服务支持端口复用 (全平台使用 SO_REUSEADDR,不一定能兼容到所有的其他软件)
- SSDP服务支持多网卡 (目前使用默认网卡,先这么用吧)
- SSDP定时发布服务 (腾讯视频依赖)
- 支持事件订阅 (网易云 / qq音乐依赖,考虑到应该没人投这俩,所以先忽视这个功能)
- 做好解析数据失败的 catch
- 添加更多的DLNA事件支持 (DLNA控制播放器)
- 添加播放器回调支持(播放器状态发送到DLNA)
以下两个配置项用于设置窗口可调整的最小尺寸(单位:像素)。
在 macOS 下若显示器开启hidpi,则以逻辑分辨率为准。
"minimum_window_height": 270,
"minimum_window_width": 480,
当屏幕尺寸在任意维度小于下列值时自动开启窗口置顶(单位:像素)。
在 macOS 下若显示器开启hidpi,则以逻辑分辨率为准。
"on_top_window_width": 270,
"on_top_window_height": 480,
如果你认为在触摸操作时,列表滑动速度过快或过慢,可以调整滑动速度(单位:%)
"scroll_speed": 100
100 表示默认速度(Windows下默认为 150)
手动添加设置项:
示例中的数字替换为up主的mid/uid,可添加任意多个。
mid 可通过手机客户端的up主个人主页,点击签名右侧的详情查看
也可以通过浏览器进入个人主页,尾部数字即代表UP主个人ID(例:https://m.bilibili.com/space/1234)
"up_filter": [1234,5678]
wiliwili 目前支持:
- Linux / macOS / Windows (OpenGL 3.2+)
- Nintendo Switch / PS4 / PSV
- 其他 OpenGL2 / ES2 / ES3 设备 (树莓派等)
- 其他非 OpenGL 图形API (DirectX等)
特别需要注意的是,你需要按照 README 所说递归地拉取项目,否则在 library 目录下的第三方依赖均为空目录无法构建。若拉取项目是没有按照 README 所说方式拉取,可以运行:
git submodule update --init --recursive
在切换分支时,以切换到 dev
分支举例,使用:
# method 1
git checkout dev
git submodule update --init --recursive
# method 2
git checkout --r dev
请参考:workflow
wiliwili 使用 cmake 控制编译流程:
- 对于不同平台的编译需要手动进行指定(必选)
-DPLATFORM_DESKTOP=ON
-DPLATFORM_PSV=ON
-DPLATFORM_PS4=ON
-DPLATFORM_SWITCH=ON
- 使用系统路径中的库,而不是从源码重新编译
-DUSE_SHARED_LIB=ON
- 请参考 CMakeLists.txt,还可以针对特定的依赖指定需不需要系统库
- 禁用部分依赖
-
-DDISABLE_OPENCC=ON
禁用简体转繁体功能 -
-DDISABLE_WEBP=ON
禁用 webp
- 播放器相关选项
-
-DMPV_SW_RENDER=ON
默认关,软件渲染 -
-DMPV_NO_FB=ON
默认关,禁用独立的Framebuffer,搭配 -DUSE_GL2=ON 时会强制开启此选项 (PSV 不推荐开启此选项) -
-DMPV_BUNDLE_DLL=ON
默认关,将mpv动态依赖库打包进应用,请参考 workflow,Windows only
- 图形 API
-
-DUSE_GL3=ON
PC/SWITCH 编译默认选项 (OpenGL3.2+) -
-DUSE_GL2=ON
适合老电脑 或 树莓派这种不支持 GL3+ 的设备 -
-DUSE_GLES2=ON
PSV/PS4 编译默认选项 (这两个平台目前也只支持 GLES2) -
-DUSE_GLES3=ON
可以搭配 ANGLE 支持其他图形API -
-DUSE_DEKO3D=ON
switch 独占选项,性能更好但暂时还不稳定 -
-DUSE_D3D11=ON
windows下获取更好的性能, Windows only
- 窗口管理
-
-DUSE_GLFW=ON
PC/SWITCH 编译默认选项 -
-DUSE_SDL2=ON
PSV/PS4 编译默认选项 (这两个平台目前也只支持 SDL2)
- 资源文件相关
-
-DUSE_LIBROMFS=ON
默认关,将应用资源文件打包进可执行文件 (可以将应用打包为单一可执行文件) -
-DLIBROMFS_PREBUILT_GENERATOR=libromfs-generator
在开启 LIBROMFS 时,交叉编译需要手动指定 generator,如何构建 generator 请参考library/borealis/build_libromfs_generator.sh
-
-DCUSTOM_RESOURCES_DIR=""
设置自定义的资源文件路径,默认为执行目录或安装目录 (打包为 appimage 时比较有用)
- 其他
-
-DUSE_BOOST_FILESYSTEM=ON
默认关,使用 boost 而不是 std 的 filesystem (适配不支持 std filesystem 的老系统) -
-DWIN32_TERMINAL=OFF
默认开,Windows 独占,在应用执行时会额外弹出 shell 窗口显示log -
-DINSTALL=ON
默认关,Linux 独占,将应用安装到系统路径 (你可以通过 -DCMAKE_INSTALL_PREFIX="/some-path" 来指定具体的安装目录) -
-DDEBUG_SANITIZER=ON
默认关,开发时推荐开启,在执行时检测内存或指针等相关的问题
项目针对 PS4 和 PSV 分别提供了docker镜像,开发者无需繁琐地配置本地开发环境。(详情见 README)
在 Apple Silicon 上编译,推荐使用 OrbStack 代替 Docker Desktop,因为前者支持 Rosetta 运行 x86_64 的 Docker 镜像。(大概会有6倍以上的提速效果)
额外地,如果你使用 clion 开发,可以通过配置 docker toolchain 更好地使用镜像。
switch 目前因为硬解支持库更新频繁所以暂时先不维护docker镜像,使用官方镜像 + 第三方包的形式来支持(你可以在本地自己组装一下镜像)。
UWP 有两个版本,其一是 windows only 的 xmake 版。其二是同时支持 xbox 和 windows 的 vs 版 ikas-mc/wiliwili-uwp-poc
对于 xmake 版,请参考项目根目录下的 xmake 脚本和 workflow 文件进行编译,因为目前默认提供的 Windows 版已经将图形 API 切换为 D3D11, 理论上性能与 UWP 一致,所以暂停了 xmake 编译脚本的维护,使用 xmake 进行编译时可能会遇到部分依赖库缺失的问题。
常规开发指南,请参考:#开发
Linux开发的额外信息:#89
树莓派及其他 OpenGL2.1 设备,请参考:#78
macOS 打包指南,请参考:#151
- 目前 wiliwili 支持 psv/ps4/switch/xbox
- 对于 psv/ps4/switch 需要越狱你的主机。
- 对于 xbox 需要你拥有开发者账号,手动侧载安装包。
- 原则上 wiliwili 只支持最新系统版本运行,非最新系统遇到软件bug请不要反馈。
安装插件:https://github.com/xfangfang/DeckyInhibitScreenSaver
建议使用FAT32内存卡重做系统,或重新拷贝 wiliwili.nro 。
2168 报错应该是cpu执行到了错误的指令导致的,说明当前执行的文件并不是可用的可执行文件。
一般来说exFAT内存卡可能会遇到这个问题,因为switch系统本身对exFAT支持不佳,所以会存在随机的文件损坏。
另,有用户反馈使用安卓手机解压复制到自己的内存卡中时出现过类似的问题,遇到相似的问题的朋友,可以使用PC重传试一试。
删除内存卡目录 config/wiliwili 重新进入。
据我猜测,或许和exFat格式的系统固件有关,可以尝试重刷不带exFAT驱动的固件(这需要你的内存卡格式化为FAT32格式)
一般来说是系统问题,建议重做系统。
有用户反馈:安装系统固件时选择只有 FAT32 驱动的安装方式后问题消失。(这需要你的内存卡格式化为FAT32格式)
可在设置中关闭视频缓存或关闭硬解来缓解。
可能是 sysdvr 插件造成的问题,详细讨论: #254
推荐 FAT32 内存卡,因为更稳定。
exFAT 也可以正常使用,但是因为系统原因,可能会出现随机的小问题,严重者会导致卡内文件随机消失,所以为了自己的存档安全,还是赶紧换到FAT32。
作者只会针对最新的系统固件 + 最新的大气层来测试。
其他组合(系统版本11之后)大概率也可以正常运行,但是如果出现问题请不要反馈,优先选择更新到最新的大气层和系统。
推荐下载 HB APP Store 自制应用商店: appstore/wiliwili。
注意:应用商店会自动下载应用到 switch/wiliwili/wiliwili.nro
,但是如果你的设备中已经存在 switch/wiliwili.nro
那么wiliwili的桌面图标会优先打开后者。
推荐下载 Homebrew Store 自制应用商店:pkg-zone/wiliwili
按顺序推荐下载 VitaDB Downloader 或 EasyVPK 或 Better Homebrew Browser 或 Vita HomeBrew Browser 等自制应用商店:vitadb/wiliwili
联网主要防范系统升级,当然即使出现升级提示只要正确取消,也不会有任何影响。要做到安全联网,首先需要屏蔽系统更新,这一步通过在浏览器中选择来完成。 然后是设置 DNS,有两个操作方式,任选其一即可:
- 配置专门用于屏蔽系统联网请求的 DNS,参考:Al-Azif/ps4-exploit-host
- 【推荐】在浏览器缓存越狱页面之后,设置一个不存在的 DNS,这会阻止几乎所有系统联网请求(不影响串流和 wiliwili)。
首先每台破解设备都有被ban的风险,使用这个软件需要自负风险。
- 大气层支持配置屏蔽序列号和内置host屏蔽任天堂服务器,如果你所使用的系统正确配置了这两项内容,那么被ban的可能很小
- 自制桌面图标会虚拟一个游戏id,可能会被当成盗版游戏看待,如果没有配置上一条,同时安装了wiliwili的桌面图标,可能会被ban
- 如果没有安装桌面图标,那么因为wiliwili而被ban的风险几乎为0。(这也是大家常说的ban盗版不ban破解)
- 盗版游戏(桌面图标) + 没有正确配置大气层 + 联网 = 100%被ban
可以,ban机不能访问任天堂的网络服务,但还可以正常使用互联网。
- 检查系统时间,错误的系统时间(包括日期)会导致应用无法正常联网
- swtich 用户需要检查 DNS 和 IP 设置,保持默认设置,不要使用90 DNS等专为屏蔽设计的DNS服务器
- 关闭 TLS 验证选项。关闭验证后,即使系统时间错误也不会影响网络访问。不过你的网络请求可能因此遭受中间人攻击。
- 检查自己的DNS,有些DNS服务器无法解析B站视频链接
- 海外用户可能存在部分问题(比如单栈ipv6导致的部分功能不可用),因为作者测试不到各种情况,所以推荐到 issues 详细反馈
有可能是网络不好导致的,也可能是B站API变更导致的,可以到 issues 详细反馈
使用最新版本扫码重新登录客户端。
0.6.0 及之前的版本采用的登录方式在点赞时会被判定为没有权限,新版本使用了新的登录方式(新的方式可以在手机中查看到登录设备)
1.2.0 及之前的版本没有保留 cookie 中的 buvid3,在 23/10 后,不带buvid3请求会判定为没有权限。
DLNA投屏能否正常使用主要和网络环境相关,在普通局域网内经测试绝大部分国内软件都能正常播放使用,如果您用的客户端无法正确搜索到 wiliwili,欢迎反馈。
额外的,如果你正在使用 盗版视频app
向 wiliwili 投屏,可能出现能投但是不能播,对于这种情况 wiliwili 不给予处理。
如果在 PS4 上使用 wiliwili,可能会遇到部分客户端 (迅雷、wiliwili 本身的DLNA投射)无法搜索到 PS4 的情况,这是由于这些客户端的 DLNA 协议实现不完全导致的。详情
wiliwili 使用 xdg-open
来打开外部路径(网页或配置目录),可能存在打开错误的应用或者无响应的情况,这里以 KDE 下,修复打开目录为例:
-
先运行:
gio mime inode/directory
,这时会返回默认设置的用于打开目录的应用,一般出现问题时会返回一个错误的应用。 -
设置自定义的配置,这里使用 dolphin (KDE下的文件管理)来打开目录。
sudo su
echo -e "[Default Applications]\ninode/directory=org.kde.dolphin.desktop" >> /etc/xdg/mimeapps.list
- 再次运行
gio mime inode/directory
能看到默认应用已经设置正确。
(deck@steamdeck ~)$ gio mime inode/directory
Default application for “inode/directory”: org.kde.dolphin.desktop
推荐到 issues 详细反馈