xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.28k stars 152 forks source link

更新到 v1.2.0 后,大部分视频无法加载 #220

Closed AiraNadih closed 11 months ago

AiraNadih commented 11 months ago

之前用着都还好好的,更新后大部分视频无法加载: 图片

网络诊断也没问题: 图片

也尝试过换画质,一样加载不出来。 但是在浏览器里能正常加载,应该不是网络问题。

xfangfang commented 11 months ago

@AiraNadih 请再确认一下 1.1.1 有没有这个问题,一般来说无法加载视频这个就是DNS的问题。

AiraNadih commented 11 months ago

@AiraNadih 请再确认一下 1.1.1 有没有这个问题,一般来说无法加载视频这个就是DNS的问题。

因为我是用 scoop 安装的,我直接使用 scoop reset wiliwili@1.1.1 后发现能正常加载,说明就是 v1.2.0 才引入的问题。

xfangfang commented 11 months ago

我印象中没有修改和视频链接相关的功能,建议从 release 分别下载两个版本测试一下,同一时间两个版本打开“同一个”视频,如果还是存在这个问题的话,我再去研究一下看看。

AiraNadih commented 11 months ago

问题还是存在。 我又从 release 下载了这 2 个版本到其他路径,相同的视频,v1.2.0 打开后还是不能播放。

AiraNadih commented 11 months ago

或许是精简 Windows 版本的动态依赖导致的问题? 我不太清楚具体是哪里的改动带来的这个问题,比较这俩个版本的提交记录,差异部分太多了:https://github.com/xfangfang/wiliwili/compare/v1.1.1...v1.2.0

xfangfang commented 11 months ago

或许是精简 Windows 版本的动态依赖导致的问题?

有这个可能,我不知道精简后那个mpv的来源,没准可能是编译mpv的时候出的问题。

我最近主要测试了 ps4、 switch 和 mac,在我这里是完全没有问题的。

这个构建是用的 yoga 分支最新的代码,开了debug窗口,同时没有使用那么多精简的动态依赖。 https://github.com/xfangfang/DIY/actions/runs/6744809278

如果这个版本没问题,那么就说明可能是那个精简提交引入的问题。如果这个版本还是有问题,可以把播放视频没有反应的log发过来(注意在没有反应的时候可以多等一会,可以等30s再操作)

一般来说这个问题是因为 B站在返回播放链接时会随机返回pcdn视频链接,有些DNS服务器没办法解析pcdn的域名,多等一会在超时之后如果有普通CDN的链接,wiliwili会自动切到普通CDN。但是你说同一个视频 1.1.1 没有这个问题,所以看起来确实不是DNS导致的问题。

AiraNadih commented 11 months ago

这个构建运行后直接报错了:

---------------------------
wiliwili.exe - 系统错误
---------------------------
由于找不到 libpsl-5.dll,无法继续执行代码。重新安装程序可能会解决此问题。 
---------------------------
确定   
---------------------------
AiraNadih commented 11 months ago

我从 Git for Windows 里的 mingw64 依赖里复制了所有缺失的 dll ,能正常运行了。 然后发现,之前在 v1.2.0 不能加载的视频能正常播放了。 为了避免只是个例情况,我多测试了几个之前不能播放的视频。 应该就是精简 Windows 版本的动态依赖导致的。

这个构建缺失的所有依赖:

libiconv-2.dll
libidn2-0.dll
libintl-8.dll
libpsl-5.dll
libunistring-5.dll
xfangfang commented 11 months ago

https://github.com/xfangfang/DIY/actions/runs/6745527132

可以再测试一下这个版本,这一版和release的唯一区别是开启了debug窗口,可以看看有没有报错

xfangfang commented 11 months ago

https://github.com/xfangfang/DIY/actions/runs/6746362465

补上了缺失的dll,开启debug窗口,未精简动态依赖版本

补充一句,我这边测试这两个版本(是否精简动态依赖)没有区别,如果还有问题就只能让 @dragonflylee 来看看了,或许是 mpv相关的问题。

dragonflylee commented 11 months ago

@AiraNadih 您好 能帮忙测试一下 1.2.0版本只替换 1.1.1里的 libmpv-2.dll 是否正常吗

另外您的硬件解码有没有开启呢?是不是amd的核显呢

如果是Intel 加 nVidia 的MX 系列显卡 建议将wiliwili 设置为优先使用集显

AiraNadih commented 11 months ago

https://github.com/xfangfang/DIY/actions/runs/6745527132

可以再测试一下这个版本,这一版和release的唯一区别是开启了debug窗口,可以看看有没有报错

完整的日志:

22:41:19.435[INFO] wiliwili v1.2.0
22:41:19.437[INFO] Current working directory: C:\Users\user\Desktop\wiliwili
22:41:19.437[INFO] client: 46243426.1695361004/db8af52b-9980-7463-a31f-d027a442c2e0
22:41:19.437[INFO] cookie: DedeUserID:******
22:41:19.438[INFO] cookie: DedeUserID__ckMd5:******
22:41:19.438[INFO] cookie: SESSDATA:******
22:41:19.438[INFO] cookie: bili_jct:******
22:41:19.438[INFO] cookie: sid:******
22:41:19.438[INFO] refreshToken: ******
22:41:19.438[INFO] setting: {"auto_next_recommend":false,"danmaku":false,"danmaku_filter_bottom":true,"danmaku_filter_color":true,"danmaku_filter_level":9,"danmaku_filter_scroll":true,"danmaku_filter_top":true,"danmaku_style_alpha":80,"danmaku_style_area":100,"danmaku_style_fontsize":30,"danmaku_style_line_height":120,"danmaku_style_speed":100,"fullscreen":false,"hide_bottom_bar":false,"hide_fps":true,"home_window_state":"0,1920x1009,0x23","keymap":"keyboard","player_default_speed":150,"player_hwdec":true,"player_volume":100,"search_tv_mode":true,"video_codec":13,"video_quality":80}
22:41:19.438[INFO] Load config from: C:\Users\user\AppData\Local\xfangfang\wiliwili/wiliwili_config.json
22:41:19.438[INFO] Load window state: 1920x1009,0x23
22:41:19.438[INFO] Set app locale: zh-Hans
22:41:19.455[INFO] Using platform GLFW
22:41:19.603[INFO] glfw: GL Vendor: ATI Technologies Inc.
22:41:19.603[INFO] glfw: GL Renderer: AMD Radeon(TM) Graphics
22:41:19.603[INFO] glfw: GL Version: 4.6.0 Compatibility Profile Context 23.10.2.231013
22:41:19.603[INFO] glfw: GLFW Version: 3.4.0
22:41:19.633[WARNING] Cannot find custom gamepad db, (Searched at: C:\Users\user\AppData\Local\xfangfang\wiliwili/gamecontrollerdb.txt)
22:41:19.696[WARNING] Cannot find custom font, (Searched at: C:\Users\user\AppData\Local\xfangfang\wiliwili/font.ttf)
22:41:19.696[INFO] Using internal font: ./resources/font/switch_font.ttf
22:41:19.707[INFO] Using zh-Hans font: C:\Windows\Fonts\msyh.ttc
22:41:19.711[INFO] Using korean font: C:\Windows\Fonts\malgun.ttf
22:41:19.711[INFO] Load emoji font: ./resources/font/emoji.ttf
22:41:19.716[INFO] Load keymap icon: ./resources/font/keymap_keyboard.ttf
22:41:19.721[INFO] createWindow done
22:41:20.068[INFO] max_thread_num: 4
22:41:22.075[INFO] App is up to date
22:41:31.120[INFO] set memory cache: 10MB
22:41:31.120[INFO] MPV hardware decode: auto-safe
Cannot load nvcuda.dll
22:41:31.123[INFO] MPV Version: mpv 0.36.0
22:41:31.123[INFO] FFMPEG Version: 6.0
22:41:31.158[INFO] ========> RESUME
Playing: https://xy27x190x31x52xy.mcdn.bilivideo.cn:8082/v1/resource/1319125259-1-100026.m4s?agrr=0&build=0&buvid=&bvc=vod&bw=35612&deadline=1699029692&e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M%3D&f=u_0_0&gen=playurlv2&logo=A0010000&mcdnid=17000319&mid=******&nbs=1&nettype=0&oi=993526088&orderid=0%2C3&os=mcdn&platform=pc&sign=f37a27&traceid=trWrqvxpqUwXeX_0_e_N&uipk=5&uparams=e%2Cuipk%2Cnbs%2Cdeadline%2Cgen%2Cos%2Coi%2Ctrid%2Cmid%2Cplatform&upsig=9e64728a83f4da520c911d2870c77f6f
22:41:31.523[INFO] ========> MPV_EVENT_START_FILE
22:41:31.632[INFO] select subtitle: 中文(中国)
 (+) Video --vid=1 (*) (av1 1920x1080 30.000fps)
 (+) Audio --aid=1 (*) '1319125259-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1699029692&gen=playurlv2&os=08hbv&oi=993526088&trid=a995fca41b044e718525350d45aa48efu&mid=******&platform=pc&upsig=23c8acc0d57f707a33082697bfb21837&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=&build=0&f=u_0_0&agrr=0&bw=21338&logo=40000000' (aac 2ch 48000Hz) (external)
File tags:
 Description: Bilibili VXCode Swarm Transcoder v0.7.69
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
Decoder init failed for libdav1d
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
Decoder init failed for av1
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
Decoder init failed for av1_cuvid
Failed to initialize a decoder for codec 'av1'.
Video: no video
22:41:32.318[INFO] ========> MPV_EVENT_FILE_LOADED
[ffmpeg] tls: mbedtls_ssl_handshake returned -0x7280
[ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: root atom offset 0x125a9e4: partial file
[ffmpeg/demuxer] mov,mp4,m4a,3gp,3g2,mj2: root atom offset 0x125a9e4: partial file
[ffmpeg] tls: mbedtls_ssl_read returned -0x0
[ffmpeg] https: Will reconnect at 11839750 in 0 second(s), error=I/O error.

22:41:32.457[INFO] ========> MPV_STOP
22:41:32.457[ERROR] ========> MPV ERROR: something happened
AiraNadih commented 11 months ago

https://github.com/xfangfang/DIY/actions/runs/6746362465

补上了缺失的dll,开启debug窗口,未精简动态依赖版本

补充一句,我这边测试这两个版本(是否精简动态依赖)没有区别,如果还有问题就只能让 @dragonflylee 来看看了,或许是 mpv相关的问题。

这个构建能播放了,不过日志里还是有报错:

22:47:38.419[INFO] wiliwili v1.2.0
22:47:38.420[INFO] Current working directory: C:\Users\user\Desktop\wiliwili
22:47:38.421[INFO] client: 46243426.1695361004/db8af52b-9980-7463-a31f-d027a442c2e0
22:47:38.421[INFO] cookie: DedeUserID:******
22:47:38.421[INFO] cookie: DedeUserID__ckMd5:******
22:47:38.421[INFO] cookie: SESSDATA:******
22:47:38.421[INFO] cookie: bili_jct:******
22:47:38.421[INFO] cookie: sid:******
22:47:38.421[INFO] refreshToken: ******
22:47:38.421[INFO] setting: {"auto_next_recommend":false,"danmaku":false,"danmaku_filter_bottom":true,"danmaku_filter_color":true,"danmaku_filter_level":9,"danmaku_filter_scroll":true,"danmaku_filter_top":true,"danmaku_style_alpha":80,"danmaku_style_area":100,"danmaku_style_fontsize":30,"danmaku_style_line_height":120,"danmaku_style_speed":100,"fullscreen":false,"hide_bottom_bar":false,"hide_fps":true,"home_window_state":"0,1920x1009,0x23","keymap":"keyboard","player_default_speed":150,"player_hwdec":true,"player_volume":100,"search_tv_mode":true,"video_codec":13,"video_quality":80}
22:47:38.421[INFO] Load config from: C:\Users\user\AppData\Local\xfangfang\wiliwili/wiliwili_config.json
22:47:38.421[INFO] Load window state: 1920x1009,0x23
22:47:38.422[INFO] Set app locale: zh-Hans
22:47:38.430[INFO] Using platform GLFW
22:47:38.545[INFO] glfw: GL Vendor: ATI Technologies Inc.
22:47:38.545[INFO] glfw: GL Renderer: AMD Radeon(TM) Graphics
22:47:38.545[INFO] glfw: GL Version: 4.6.0 Compatibility Profile Context 23.10.2.231013
22:47:38.545[INFO] glfw: GLFW Version: 3.4.0
22:47:38.574[WARNING] Cannot find custom gamepad db, (Searched at: C:\Users\user\AppData\Local\xfangfang\wiliwili/gamecontrollerdb.txt)
22:47:38.636[WARNING] Cannot find custom font, (Searched at: C:\Users\user\AppData\Local\xfangfang\wiliwili/font.ttf)
22:47:38.636[INFO] Using internal font: ./resources/font/switch_font.ttf
22:47:38.646[INFO] Using zh-Hans font: C:\Windows\Fonts\msyh.ttc
22:47:38.650[INFO] Using korean font: C:\Windows\Fonts\malgun.ttf
22:47:38.650[INFO] Load emoji font: ./resources/font/emoji.ttf
22:47:38.657[INFO] Load keymap icon: ./resources/font/keymap_keyboard.ttf
22:47:38.661[INFO] createWindow done
22:47:39.028[INFO] max_thread_num: 4
22:47:41.039[INFO] App is up to date
22:47:45.128[INFO] set memory cache: 10MB
22:47:45.128[INFO] MPV hardware decode: auto-safe
Cannot load nvcuda.dll
22:47:45.133[INFO] MPV Version: mpv 0.35.0-30-g4574dd5dc6
22:47:45.133[INFO] FFMPEG Version: git-2022-12-03-7bf74f909
22:47:45.161[INFO] ========> RESUME
Playing: https://xy106x111x236x70xy.mcdn.bilivideo.cn:8082/v1/resource/1319125259-1-100026.m4s?agrr=0&build=0&buvid=&bvc=vod&bw=35612&deadline=1699030066&e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M%3D&f=u_0_0&gen=playurlv2&logo=A0010000&mcdnid=17000319&mid=******&nbs=1&nettype=0&oi=993526088&orderid=0%2C3&os=mcdn&platform=pc&sign=f37a27&traceid=trbXIzyMLOPBjF_0_e_N&uipk=5&uparams=e%2Cuipk%2Cnbs%2Cdeadline%2Cgen%2Cos%2Coi%2Ctrid%2Cmid%2Cplatform&upsig=73de17ad805d19d1f0bf8679aa358c85
22:47:45.525[INFO] ========> MPV_EVENT_START_FILE
22:47:45.615[INFO] select subtitle: 中文(中国)
 (+) Video --vid=1 (*) (av1 1920x1080 30.000fps)
 (+) Audio --aid=1 (*) '1319125259-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1699030066&gen=playurlv2&os=08hbv&oi=993526088&trid=32901a07e8e14a77b8b788eb6dd07fd1u&mid=******&platform=pc&upsig=e11fcea606fa770fac4211e7ff34cb7d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=&build=0&f=u_0_0&agrr=0&bw=21338&logo=40000000' (aac 2ch 48000Hz) (external)
File tags:
 Description: Bilibili VXCode Swarm Transcoder v0.7.69
[ffmpeg/video] av1: Failed to read unit 1 (type 5).
[ffmpeg/video] av1: Failed to read extradata.
Could not open codec.
22:47:45.816[INFO] ========> MPV_EVENT_FILE_LOADED
22:47:45.816[INFO] ========> VIDEO RESUME FROM CACHE
22:47:45.816[INFO] ========> VIDEO SEEKING
AO: [wasapi] 48000Hz stereo 2ch float
[ffmpeg/video] libdav1d: Unknown Metadata OBU type 6
VO: [libmpv] 1920x1080 yuv420p
22:47:46.242[INFO] ========> MPV_EVENT_PLAYBACK_RESTART
22:47:46.925[INFO] ========> PAUSE97%) A-V:  0.000 Cache: 15s/1MB

22:47:47.503[INFO] ========> MPV_STOP
22:47:47.507[INFO] ========> RESUME
dragonflylee commented 11 months ago

@AiraNadih 建议您将视频编码格式设置为 HEVC 或者 H264

AiraNadih commented 11 months ago

@AiraNadih 您好 能帮忙测试一下 1.2.0版本只替换 1.1.1里的 libmpv-2.dll 是否正常吗

另外您的硬件解码有没有开启呢?是不是amd的核显呢

如果是Intel 加 nVidia 的MX 系列显卡 建议将wiliwili 设置为优先使用集显

我按你说的测试后发现确实可以正常播放了。 硬件解码已开启,是 AMD 的核显。

xfangfang commented 11 months ago

我用steam deck(amd 核显)在设置了 av1 + 硬解之后确实是能复现出来这个问题。替换了 1.1.1 中的 libmpv-2.dll 后,问题消失。

AiraNadih commented 11 months ago

可是我这个 CPU 的核显是支持 AV1 解码的,型号是 AMD Ryzen 7 7735HS

xfangfang commented 11 months ago

对于这种情况还是推荐不要用 av1,因为即使之前没问题也可能是内部出了问题然后自动变更到了软解,av1 软解应该效率比较低。

在播放器页面全屏按 f1 可以看具体用没用硬解,我对av1不是很了解,拿我的steam deck在linux的体验来说,steam deck 也是支持av1的,但是貌似不是所有的av1视频都能硬解。

可以找在1.2.0下有问题的视频,用1.1.1打开,然后按f1,看看有没有开启硬解。

AiraNadih commented 11 months ago

对于这种情况还是推荐不要用 av1,因为即使之前没问题也可能是内部出了问题然后自动变更到了软解,av1 软解应该效率比较低。

在播放器页面全屏按 f1 可以看具体用没用硬解,我对av1不是很了解,拿我的steam deck在linux的体验来说,steam deck 也是支持av1的,但是貌似不是所有的av1视频都能硬解。

可以找在1.2.0下有问题的视频,用1.1.1打开,然后按f1,看看有没有开启硬解。

看上去似乎是能正常使用的: codec: libdav1d (dav1d AV1 decoder by VideoLAN) 图片

xfangfang commented 11 months ago

下面有一行:Hardware Decode: no

AiraNadih commented 11 months ago

下面有一行:Hardware Decode: no

好吧。。。😂

那这情况最好还是写到文档和 wiki 里吧。

AiraNadih commented 11 months ago

我觉得后续除了在文档和 wiki 里补充这个情况的说明之外,最好还应在用户尝试使用 AV1 和其他编码格式硬解失败时提供提示,例如通过弹窗通知或者吐司通知来实现。

不然就像我用了这么久才知道自己一直是用的 AV1 软解,硬解根本没生效。。。😂

xfangfang commented 11 months ago

这个其实就是硬解在不同设备上本身就可能会有问题,所以wiliwili默认在pc上也是不开启硬解的,开启的话默认也是h264。

不过也说不准是不是 wiliwili 内部用的视频播放器对amd显卡支持不足导致的,您可以用那个debug窗口里输出的视频链接放到其他播放器上播放来进一步测试硬解。

那个视频链接加了防盗链,播放时候需要指定 referrer="https://www.bilibili.com"


如果有时间可能会做类似的提醒,但是我应该不会做这个事,因为要提醒的东西太多了,都完善出来就相当于免费给B站打工了,不过欢迎提交PR。

AiraNadih commented 11 months ago

以下是我使用 mpv 测试的日志:

 (+) Video --vid=1 (*) (av1 1920x1080 30.000fps)
File tags:
 Description: Bilibili VXCode Swarm Transcoder v0.7.69
.\mpv.exe : [ffmpeg/video] libdav1d: Unknown Metadata OBU type 6
所在位置 行:1 字符: 1
+ .\mpv.exe "https://xy106x111x236x70xy.mcdn.bilivideo.cn:8082/v1/resou ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: ([ffmpeg/video] ...data OBU type 6:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

VO: [gpu] 1920x1080 yuv420p

V: 00:00:00 / 00:09:34 (0%) Cache: 23s/1MB

V: 00:00:00 / 00:09:34 (0%) Cache: 36s/2MB

V: 00:00:00 / 00:09:34 (0%) Cache: 64s/3MB

V: 00:00:00 / 00:09:34 (0%) Cache: 130s/5MB

V: 00:00:00 / 00:09:34 (0%) Cache: 154s/7MB

V: 00:00:00 / 00:09:34 (0%) Cache: 167s/8MB

V: 00:00:00 / 00:09:34 (0%) Cache: 180s/8MB

V: 00:00:00 / 00:09:34 (0%) Cache: 228s/10MB

V: 00:00:00 / 00:09:34 (0%) Cache: 251s/12MB

V: 00:00:00 / 00:09:34 (0%) Cache: 302s/13MB

V: 00:00:00 / 00:09:34 (0%) Cache: 345s/15MB

V: 00:00:00 / 00:09:34 (0%) Cache: 379s/16MB

V: 00:00:00 / 00:09:34 (0%) Cache: 409s/18MB

V: 00:00:00 / 00:09:34 (0%) Cache: 425s/18MB

V: 00:00:00 / 00:09:34 (0%) Cache: 433s/20MB

V: 00:00:00 / 00:09:34 (0%) Cache: 446s/21MB

V: 00:00:00 / 00:09:34 (0%) Cache: 483s/22MB

V: 00:00:00 / 00:09:34 (0%) Cache: 487s/23MB

V: 00:00:00 / 00:09:34 (0%) Cache: 523s/25MB

V: 00:00:00 / 00:09:34 (0%) Cache: 544s/26MB

V: 00:00:00 / 00:09:34 (0%) Cache: 565s/27MB

V: 00:00:00 / 00:09:34 (0%) Cache: 574s/28MB

V: 00:00:00 / 00:09:34 (0%) Cache: 573s/28MB

V: 00:00:01 / 00:09:34 (0%) Cache: 573s/28MB

V: 00:00:01 / 00:09:34 (0%) Cache: 572s/28MB

V: 00:00:02 / 00:09:34 (0%) Cache: 572s/28MB

V: 00:00:02 / 00:09:34 (0%) Cache: 571s/28MB

V: 00:00:02 / 00:09:34 (1%) Cache: 571s/28MB

V: 00:00:03 / 00:09:34 (1%) Cache: 571s/28MB

V: 00:00:03 / 00:09:34 (1%) Cache: 571s/27MB

V: 00:00:03 / 00:09:34 (1%) Cache: 570s/27MB

V: 00:00:04 / 00:09:34 (1%) Cache: 570s/27MB

V: 00:00:04 / 00:09:34 (1%) Cache: 569s/27MB

[ffmpeg/video] libdav1d: Unknown Metadata OBU type 6

V: 00:00:04 / 00:09:34 (1%) Cache: 569s/27MB

V: 00:00:05 / 00:09:34 (1%) Cache: 569s/27MB

(Paused) V: 00:00:05 / 00:09:34 (1%) Cache: 569s/27MB

Exiting... (Quit)

我对编码格式其实并不是太了解,仅供参考。 似乎是 mpv 本身的问题?

xfangfang commented 11 months ago

可以参考这个回复中关于如何测试系统对硬解的支持的内容:https://github.com/xfangfang/wiliwili/issues/78#issuecomment-1416719288

mpv 默认是不开启硬解的,这里是mpv的文档:mpv.io

AiraNadih commented 11 months ago

又搜索了下相关的信息,这个编码似乎是 B 站魔改版的 AV1 :Archlinux, 13 代 Intel 移动处理器无法硬件解码 Bilibili AV1 视频, YouTube AV1 正常

AiraNadih commented 11 months ago

可以参考这个回复中关于如何测试系统对硬解的支持的内容:#78 (comment)

mpv 默认是不开启硬解的,这里是mpv的文档:mpv.io

事实上我本地的 mpv 的配置是:

hwdec=auto-safe
hwdec-codecs=all

不过我没测试过支持的硬解格式,等会试试,稍后更新这条消息。

xfangfang commented 11 months ago

那可以试一试添加 --msg-level="all=v" 如果视频正常播放,且在log里能看到 Using hardware decoding (***). ,说明成功使用硬解。

AiraNadih commented 11 months ago

那可以试一试添加 --msg-level="all=v" 如果视频正常播放,且在log里能看到 Using hardware decoding (***). ,说明成功使用硬解。

能看到使用硬解的信息:

...
[vo/gpu] Probing for best GPU context.
[vo/gpu/d3d11] Initializing GPU context 'd3d11'
[vo/gpu/d3d11] Using Direct3D 11 feature level 12_1
[vo/gpu/d3d11] Device Name: AMD Radeon(TM) Graphics
[vo/gpu/d3d11] Device ID: 1002:1681 (rev 0a)
[vo/gpu/d3d11] Subsystem ID: 1002:1681
[vo/gpu/d3d11] LUID: 000000000000b983
[vo/gpu/d3d11] Initializing SPIR-V compiler 'shaderc'
[vo/gpu/d3d11] Using Direct3D 11.1 runtime
[vo/gpu/d3d11] Maximum Texture2D size: 16384x16384
[vo/gpu/d3d11] D3DCompiler version: 10.0.22621.2506
[vo/gpu/d3d11] Using DXGI 1.2+
[vo/gpu/d3d11] Queried output: \\.\DISPLAY1, 1920x1080 @ 8 bits, colorspace: RGB_FULL_G22_NONE_P709 (0)
[vo/gpu/d3d11] Selected swapchain format R8G8B8A8_UNORM (28), attempting to utilize it.
[vo/gpu/d3d11] Selected swapchain color space RGB_FULL_G22_NONE_P709 (0), attempting to utilize it.
[vo/gpu/d3d11] Swapchain capabilities for color space RGB_FULL_G22_NONE_P709 (0): normal: yes, overlay: no
[vo/gpu/d3d11] Swapchain successfully configured to color space RGB_FULL_G22_NONE_P709 (0)!
[vo/gpu/d3d11] Using flip-model presentation
[vo/gpu] Testing FBO format rgba16hf
[vo/gpu] Using FBO format rgba16hf.
[vo/gpu/win32] DPI detected from the new API: 96
[vo/gpu/win32] display-fps: 165.000000
[vo/gpu/win32] color-profile: C:\Windows\system32\spool\drivers\color\sRGB Color Space Profile.icm
[vo/gpu] Assuming 165.000000 FPS for display sync.
[vd] Container reported FPS: 30.000000
[vd] Codec list:
[vd]     libdav1d (av1) - dav1d AV1 decoder by VideoLAN
[vd]     av1 - Alliance for Open Media AV1
[vd]     av1_cuvid (av1) - Nvidia CUVID AV1 decoder
[vd]     av1_qsv (av1) - AV1 video (Intel Quick Sync Video acceleration)
[vd] Opening decoder libdav1d
[vd] Looking at hwdec av1-d3d11va...
[vo/gpu] Loading hwdec drivers for format: 'd3d11'
[vo/gpu] Loading hwdec driver 'd3d11-egl'
[vo/gpu] Loading failed.
[vo/gpu] Loading hwdec driver 'd3d11va'
[vd] Trying hardware decoding via av1-d3d11va.
[vd] Using underlying hw-decoder 'av1'
[vd] Selected codec: libdav1d (dav1d AV1 decoder by VideoLAN)
[vf] User filter list:
[vf]   (empty)
[cplayer] Starting playback...
[vd] Pixel formats supported by decoder: dxva2_vld d3d11va_vld d3d11 cuda vulkan yuv420p
[vd] Codec profile: Main (0x0)
[vd] Requesting pixfmt 'd3d11' from decoder.
Using hardware decoding (d3d11va).
[vd] Decoder format: 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/auto CL=unknown crop=1920x1080+0+0
[vd] Using container aspect ratio.
[vf] [in] 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 crop=1920x1080+0+0
[vf] [userdeint] 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 crop=1920x1080+0+0
[vf] [userdeint] (disabled)
[vf] [autorotate] 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 crop=1920x1080+0+0
[vf] [autorotate] (disabled)
[vf] [convert] 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 crop=1920x1080+0+0
[vo/gpu] Loading hwdec drivers for format: 'd3d11'
[vo/gpu] Loading hwdec driver 'd3d11-egl'
[vo/gpu] Loading failed.
[vf] [out] 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 crop=1920x1080+0+0
VO: [gpu] 1920x1080 d3d11[nv12]
[cplayer] VO: Description: Shader-based GPU Renderer
[vo/gpu] reconfig to 1920x1080 d3d11[nv12] bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 crop=1920x1080+0+0
[vo/gpu/win32] reset window bounds: 0:-12:1920:1080
[vo/gpu/win32] adjusted window bounds: 72:31:1777:1000
[vo/gpu/win32] resize window: 1777:1000
[vo/gpu/win32] resize window: 1777:1000
[vo/gpu] Resize: 1920x1080
[vo/gpu] Window size: 1920x1080 (Borders: l=0 t=0 r=0 b=0)
[vo/gpu] Video source: 1920x1080 (1:1)
[vo/gpu] Video display: (0, 0) 1920x1080 -> (0, 0) 1920x1080
[vo/gpu] Video scale: 1.000000/1.000000
[vo/gpu] OSD borders: l=0 t=0 r=0 b=0
[vo/gpu] Video borders: l=0 t=0 r=0 b=0
[vo/gpu] Reported display depth: 8
[vo/gpu] Testing FBO format rgba16hf
[vo/gpu] Using FBO format rgba16hf.
[vo/gpu] Resize: 1777x1000
[vo/gpu] Window size: 1777x1000 (Borders: l=0 t=0 r=0 b=0)
[vo/gpu] Video source: 1920x1080 (1:1)
[vo/gpu] Video display: (0, 0) 1920x1080 -> (0, 0) 1777x1000
[vo/gpu] Video scale: 0.925521/0.925926
[vo/gpu] OSD borders: l=0 t=0 r=0 b=0
[vo/gpu] Video borders: l=0 t=0 r=0 b=0
[vo/gpu] Reported display depth: 8
[vo/gpu/d3d11] Using cached vertex shader
[vo/gpu/d3d11] Using cached fragment shader
[vo/gpu/d3d11] Using cached vertex shader
[vo/gpu/d3d11] Using cached fragment shader
[vo/gpu/d3d11] Using cached vertex shader
[vo/gpu/d3d11] Using cached fragment shader
[vo/gpu/d3d11] Using cached vertex shader
[vo/gpu/d3d11] Using cached fragment shader
[vo/gpu] Dither to 8.
[vo/gpu/d3d11] Using cached vertex shader
[vo/gpu/d3d11] Using cached fragment shader
[cplayer] first video frame after restart shown
[cplayer] playback restart complete @ 0.000000, audio=eof, video=playing
...
AiraNadih commented 11 months ago

搜索到相关的信息,看样子是支持 AV1 硬解的:windows平台的解码选择

dragonflylee commented 11 months ago

也许你可以尝试一下这个d3d11的版本 https://nightly.link/dragonflylee/wiliwili/actions/runs/6767221239/wiliwili-Windows-x64-5d22719-D3D11.zip

AiraNadih commented 11 months ago

也许你可以尝试一下这个d3d11的版本 https://github.com/dragonflylee/wiliwili/suites/17842121925/artifacts/1023593944

但是这个构建不能播放

xfangfang commented 11 months ago

@AiraNadih

这个构建在能自动跳转软解的基础上增加了更多的log: https://github.com/xfangfang/DIY/actions/runs/6747288577

基于这个构建,有两个事是可以测试的:

  1. 手动指定wiliwili内使用的硬解方案:确认设置中选择硬解开启,在工具里选择打开配置目录,关闭wiliwili,打开配置文件,手动给wiliwili添加一条配置:"player_hwdec_custom": "d3d11va-copy" 然后查看log(你也可以指定一些其他的值来测试)。
  2. 替换官方最新的libmpv: 在这个页面下载官方最新的 libmpv 替换wiliwili.exe同目录下的libmpv,然后查看log。

对于这个问题我这边就爱莫能助了,貌似steam deck在win下不支持硬解:“Your platform doesn't support hardware accelerated AV1 decoding.”

希望上面的两个测试,尤其是最后一个能解决在你的系统上av1硬解的问题,如果还是不行的话,我就也没别的思路了。

AiraNadih commented 11 months ago

@AiraNadih

这个构建在能自动跳转软解的基础上增加了更多的log: https://github.com/xfangfang/DIY/actions/runs/6747288577

基于这个构建,有两个事是可以测试的:

1. 手动指定wiliwili内使用的硬解方案:确认设置中选择硬解开启,在工具里选择打开配置目录,关闭wiliwili,打开配置文件,手动给wiliwili添加一条配置:`"player_hwdec_custom": "d3d11va-copy"` 然后查看log(你也可以指定一些其他的值来测试)。

2. 替换官方最新的libmpv: 在这个页面下载官方最新的 [libmpv](https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20231029-git-a57bd8e.7z/download) 替换wiliwili.exe同目录下的libmpv,然后查看log。

对于这个问题我这边就爱莫能助了,貌似steam deck在win下不支持硬解:“Your platform doesn't support hardware accelerated AV1 decoding.”

希望上面的两个测试,尤其是最后一个能解决在你的系统上av1硬解的问题,如果还是不行的话,我就也没别的思路了。

确实,经过测试,后者的方案能够使用 AV1 硬解,而且必须配置 "player_hwdec_custom": "d3d11va-copy" 。 至于前者就不可行了。

xfangfang commented 11 months ago

第二个办法有用或许可能和处理器比较新有关系,我看到那个库mpv和ffmpeg都是几乎是master分支最新的代码编译出来的。

wiliwili 内置的硬解参数是 auto-safe,这个具体怎么选择就是mpv来处理的了,或许 auto-copy 也能用。

AiraNadih commented 11 months ago

第二个办法有用或许可能和处理器比较新有关系,我看到那个库mpv和ffmpeg都是几乎是master分支最新的代码编译出来的。

wiliwili 内置的硬解参数是 auto-safe,这个具体怎么选择就是mpv来处理的了,或许 auto-copy 也能用。

使用第二个方案,配置 player_hwdec_custom 的值为 auto-copy 实际效果和 d3d11va-copy 一样,只是多了几次尝试:

...
[vd] Opening decoder libdav1d
+ [vd] Looking at hwdec av1-d3d11va...
+ [vd] Not using this for auto-copy.
+ [vd] Looking at hwdec av1-dxva2...
+ [vd] Not using this for auto-copy.
+ [vd] Looking at hwdec av1-nvdec...
+ [vd] Not using this for auto-copy.
[vd] Looking at hwdec av1-d3d11va-copy...
[vd] Trying hardware decoding via av1-d3d11va-copy.
[vd] Using underlying hw-decoder 'av1'
[vd] Selected codec: dav1d AV1 decoder by VideoLAN
...
AiraNadih commented 11 months ago

上述的第二个方案,我又显式配置了 "player_hwdec_custom": "auto-safe" ,然后和之前 auto-copy 的值又有所不同,但是也能启用硬解:

...
[vd] Opening decoder libdav1d
[vd] Looking at hwdec av1-d3d11va...
- [vd] Not using this for auto-copy.
- [vd] Looking at hwdec av1-dxva2...
- [vd] Not using this for auto-copy.
+ [vd] Could not create device.
[vd] Looking at hwdec av1-nvdec...
- [vd] Not using this for auto-copy.
+ [vd] Could not create device.
[vd] Looking at hwdec av1-d3d11va-copy...
[vd] Trying hardware decoding via av1-d3d11va-copy.
[vd] Using underlying hw-decoder 'av1'
[vd] Selected codec: dav1d AV1 decoder by VideoLAN
...

那么关键就在于 libmpv 了。只需要替换这个部分,其他并没有问题。

xfangfang commented 11 months ago

那么按理来说不配置 player_hwdec_custom 应该也是可行的,毕竟默认就是 auto-safe。

应该会有一条 log:MPV hardware decode: ***,不配置 player_hwdec_custom 和 "player_hwdec_custom": "auto-safe" 效果都应该是:MPV hardware decode: auto-safe

AiraNadih commented 11 months ago

那么按理来说不配置 player_hwdec_custom 应该也是可行的,毕竟默认就是 auto-safe。

应该会有一条 log:MPV hardware decode: ***,不配置 player_hwdec_custom 和 "player_hwdec_custom": "auto-safe" 效果都应该是:MPV hardware decode: auto-safe

是的。所以要解决这个问题,只需要替换 libmpv 。

xfangfang commented 11 months ago

官方的 mpv 太大了 dragonflylee 精简之后是原先的 1/4大小,对于绝大多数人来说都应该可以满足的,或许等到下一次 mpv 或 ffmpeg 出新的release之后,重新精简编译一下问题就解决了。 目前看的话 dragonflylee 精简过的还是很好的,虽然不知道原因,但是至少设置了硬解之后如果没成功开启硬解,就不播放。也算是一个提醒了。 所以现在用的 libmpv 可能还是要保留一段时间,感谢详细又及时地问题反馈。

AiraNadih commented 11 months ago

说起来我有个疑问: 为什么 libmpv 的源码 的最近一次提交记录是 3 周前,但是 sourceforge 上给出的构建最近一次发布日期是前几天?

xfangfang commented 11 months ago

可能有两个原因:

  1. 你发的这个提交记录只是libmpv的头文件,具体的实现散布在mpv的其他位置。
  2. mpv的某个依赖更新了,所以他们重新发了新的版本。
AiraNadih commented 11 months ago

可能有两个原因:

1. 你发的这个提交记录只是libmpv的头文件,具体的实现散布在mpv的其他位置。

2. mpv的某个依赖更新了,所以他们重新发了新的版本。

通过那个最新的构建的文件名里的 git commit hash 我找到原因了:https://github.com/mpv-player/mpv/commit/a57bd8e 原来是修改了构建系统的配置。

xfangfang commented 11 months ago

他们这个应该是一周更新一次测试版:https://sourceforge.net/projects/mpv-player-windows/files/libmpv/

如果非要说正式版,可能需要找到 mpv 0.36.0 发布那天附近的构建版了。

dragonflylee commented 11 months ago

@AiraNadih 使用 ffmpeg 的 release/6.1 分支编译的 libmpv-2.dll,应该能解决AV1的解码问题

https://nightly.link/dragonflylee/wiliwili/actions/runs/6767221239/wiliwili-Windows-x64-5d22719-D3D11.zip

AiraNadih commented 11 months ago

@AiraNadih 使用 ffmpeg 的 release/6.1 分支编译的 libmpv-2.dll,应该能解决AV1的解码问题

https://nightly.link/dragonflylee/wiliwili/actions/runs/6767221239/wiliwili-Windows-x64-5d22719-D3D11.zip

试了下,确实解决了。

但是,你不是想要精简这个 dll 吗?

dragonflylee commented 11 months ago

这个已经是精简后的dll了,只有官方不到一半的大小。

PS: 问一下新版本的硬解有没有成功开启 (hardware decode 是不是 d3d11va )?

AiraNadih commented 11 months ago

这个已经是精简后的dll了,只有官方不到一半的大小。

PS: 问一下新版本的硬解有没有成功开启 (hardware decode 是不是 d3d11va )?

成功开启了,我通过 F1 确认过了。

xfangfang commented 11 months ago

我在steam deck上也测试了一下,现在调用硬解失败的时候可以自动跳转到软解了,感谢 dragonflylee 重新编译的 mpv

https://github.com/xfangfang/wiliwili/actions/runs/6772605066

如果没有什么别的问题,我就关闭这个issue啦

AiraNadih commented 11 months ago

我在steam deck上也测试了一下,现在调用硬解失败的时候可以自动跳转到软解了,感谢 dragonflylee 重新编译的 mpv

https://github.com/xfangfang/wiliwili/actions/runs/6772605066

如果没有什么别的问题,我就关闭这个issue啦

OK