Skip to content

Instantly share code, notes, and snippets.

@xfangfang
Last active August 12, 2023 17:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xfangfang/305da139721ad4e96d7a9d9a1a550a9d to your computer and use it in GitHub Desktop.
Save xfangfang/305da139721ad4e96d7a9d9a1a550a9d to your computer and use it in GitHub Desktop.
wiliwili (第三方B站客户端)在 PSV 上的开发进展

UI 库优化

wiliwili 用到的 UI 库是:https://github.com/xfangfang/borealis 可以根据readme直接编译 demo。

  1. 列表性能或许可以优化一下。
  2. 可以移除阴影效果,或许可以降低点gpu需求

wiliwili 移植 (需要硬解)

编译全过程请参考:Github Action Workflow

目前 wiliwili 的 psv 支持在这个分支:https://github.com/xfangfang/wiliwili/tree/dev

项目中提供了依赖库的 VITABUILD 脚本,使用方式参考前面的 workflow,实际上所有步骤都可以参考那个文件。

1. 更新 curl

正好有人做了新版本的 curl:vitasdk/packages#241

编译安装即可。

2. 编译 ffmpeg

mpv 调用 ffmpeg 来实现视频播放,所以还需要对 ffmpeg 编译调整一下,搭配 mbedtls一起编译,来支持 https视频链接。(vitasdk 自带的ffmpeg只能播本地文件)

我目前用来测试的编译命令是:(基于 ffmpeg 6.0)

  ./configure --prefix=$VITASDK/arm-vita-eabi \
		--enable-cross-compile \
		--cross-prefix=$VITASDK/bin/arm-vita-eabi- \
		--disable-shared \
		--disable-runtime-cpudetect \
		--disable-armv5te \
		--disable-programs \
		--disable-doc \
		--enable-network \
		--disable-autodetect \
		--disable-encoders \
		--enable-demuxer=hls \
		--disable-protocols \
		--enable-protocol='file,http,tcp,tls,hls,https' \
		--enable-static \
		--enable-small \
		--disable-debug \
		--arch=armv7-a \
		--cpu=cortex-a9 \
		--disable-armv6t2 \
		--target-os=none \
		--extra-cflags=" -Wl,-q -O2 -ftree-vectorize -fomit-frame-pointer -ffast-math -D_BSD_SOURCE" \
		--extra-cxxflags=" -Wl,-q -O2 -ftree-vectorize -fomit-frame-pointer -ffast-math -fno-rtti -fno-exceptions -std=gnu++11 -D_BSD_SOURCE" \
		--extra-ldflags=" -L$VITASDK/lib " \
		--disable-bzlib \
		--disable-iconv \
		--disable-lzma \
		--disable-sdl2 \
		--disable-securetransport \
		--disable-xlib \
		--disable-avdevice \
		--enable-mbedtls --enable-version3 \
		--enable-pthreads

sed 's/#define HAVE_GETADDRINFO 1/#define HAVE_GETADDRINFO 0/g' -i config.h
sed 's/#define HAVE_STRUCT_POLLFD 1/#define HAVE_STRUCT_POLLFD 0/g' -i config.h
sed 's/#define HAVE_POLL_H 1/#define HAVE_POLL_H 0/g' -i config.h

make -j8 install

这里编码根据B站情况精简————欢迎有时间的朋友帮忙整理或者测试一下。
编译脚本和官方的主要不同是:
增加了 mbedtls 依赖,添加了 http https 等协议支持,因此也开启了 ffmpeg 的网络支持。

感谢 @fish47 的提示,万分感谢。之前无法播放视频是栈空间不足导致的,增大后 ffmpeg 就能正常使用了。

3. 编译 mpv (视频播放器)

ffmpeg 编译好之后,就可以编译 mpv 了。

mpv 的代码我的移植版本在:https://github.com/xfangfang/mpv/tree/vita_0_36

编译指令是:

meson setup build --cross-file crossfile.txt \
  --default-library static \
  -Diconv=disabled -Dlua=disabled \
  -Djpeg=disabled -Dlibmpv=true \
  -Dsdl2=enabled -Dlibavdevice=disabled \
  -Dcplayer=false -Dmanpage-build=disabled \
  -Dopensles=disabled -Dhtml-build=disabled \
  --prefix=${VITASDK}/arm-vita-eabi/
meson compile -C build --verbose
meson install -C build

4. 编译 wiliwili

貌似 https 访问有点问题,所以临时设置了 -DVERIFY_SSL=OFF; 设置的 CMAKE_CXX_FLAGS 是避免编译时报错和减少输出一些没意义的note

开启了 PSV_BIG_PICTURE,这会使用一套专门为 PSV分辨率 960x544 设计的 UI 参数,关闭时则使用 1280x720 逻辑分辨率直接缩放到 960x544。

mkdir build && cd build
cmake -DPLATFORM_PSV=ON \
    -DUSE_SYSTEM_CURL=ON \
    -DMPV_NO_FB=ON \
    -DVERIFY_SSL=OFF \
    -DCMAKE_BUILD_TYPE=Release \
    -DDISABLE_OPENCC=ON \
    -DPSV_BIG_PICTURE=ON \
    -DCMAKE_CXX_FLAGS="-Wno-error=pedantic -Wno-psabi" ..
make -j8

视频播放还可以继续优化,一方面是移除不需要的编码,另外一方面是尝试使用硬解。

讨论地址

在wiliwilii的QQ频道中创建了 psv 的开发分区,可以随时在那里联系到我,频道邀请:QQ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment