xfangfang / wiliwili

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

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

Closed AiraNadih closed 8 months ago

AiraNadih commented 8 months ago

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

网络诊断也没问题: 图片

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

xfangfang commented 8 months ago

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

AiraNadih commented 8 months ago

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

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

xfangfang commented 8 months ago

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

AiraNadih commented 8 months ago

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

AiraNadih commented 8 months ago

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

xfangfang commented 8 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 8 months ago

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

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

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

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

xfangfang commented 8 months ago

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

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

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

dragonflylee commented 8 months ago

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

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

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

AiraNadih commented 8 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 8 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 8 months ago

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

AiraNadih commented 8 months ago

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

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

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

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

xfangfang commented 8 months ago

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

AiraNadih commented 8 months ago

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

xfangfang commented 8 months ago

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

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

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

AiraNadih commented 8 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 8 months ago

下面有一行:Hardware Decode: no

AiraNadih commented 8 months ago

下面有一行:Hardware Decode: no

好吧。。。😂

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

AiraNadih commented 8 months ago

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

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

xfangfang commented 8 months ago

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

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

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


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

AiraNadih commented 8 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 8 months ago

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

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

AiraNadih commented 8 months ago

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

AiraNadih commented 8 months ago

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

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

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

hwdec=auto-safe
hwdec-codecs=all

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

xfangfang commented 8 months ago

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

AiraNadih commented 8 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 8 months ago

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

dragonflylee commented 8 months ago

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

AiraNadih commented 8 months ago

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

但是这个构建不能播放

xfangfang commented 8 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 8 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 8 months ago

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

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

AiraNadih commented 8 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 8 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 8 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 8 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 8 months ago

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

AiraNadih commented 8 months ago

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

xfangfang commented 8 months ago

可能有两个原因:

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

可能有两个原因:

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

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

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

xfangfang commented 8 months ago

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

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

dragonflylee commented 8 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 8 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 8 months ago

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

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

AiraNadih commented 8 months ago

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

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

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

xfangfang commented 8 months ago

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

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

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

AiraNadih commented 8 months ago

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

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

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

OK