-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
树莓派上的编译运行 #78
Comments
@zihanhuang 感谢反馈(应该是提示不支持OpenGL3.2) 我有一个树莓派3b,但是我编译一直在出错,可能是内存不够吧,这个我还得研究研究。 我推荐使用GLFW的方案运行,树莓派貌似支持OpenGL 2.1 所以可能的解决方法是分两步,第一步先让UI可以正常启动,第二步修改播放器的 shader。 第一步我先简单完成了,可以先拉 gl2 分支的代码(注意子模块 borealis分支也应该是 gl2),编译一下看看能不能正常显示窗口。 如果第一步成功了,那么这时候应该只是播放不出来画面,但是其他所有功能都能正常使用。 第二步我在mac上还没完成,貌似是mpv在mac上只支持 OpenGL3.0 以上,这一步应该修改一下播放器的 shader应该就可以了,期待你的PR,我继续研究一下看看怎么在3b上编译。 wiliwili/wiliwili/source/view/mpv_core.cpp Lines 16 to 36 in 07548e2
|
主界面可以打开,点击任意一个视频或者设置里切换硬解会挂在mpv [libmpv_render] GL_VERSION='2.1 Mesa 20.3.5' |
这个问题我因为没有具体的环境来操作就没办法调试了,3B编译起来太慢,得等哪天我有大段时间来看看的。 前面说的shader应该是需要修改的,shader用的版本是150,对应OpenGL 3.2,如果要支持 OpenGL2.1,shader版本应该是 120,但是除了版本号之外对应的还需要修改哪些内容我倒是不太清楚,这个如果您有时间的话可以琢磨看看。 上手mpv开发的话,可以参考这几个示例: |
如果只有硬解存在问题,可以尝试修改看看 硬解的方案。 wiliwili 默认使用 auto-safe,根据文档还有多种方案可选,可以挨个试试:https://mpv.io/manual/stable/#options-hwdec |
好的我也看看。树莓派4编译也很慢,每次编译都要link很久。。 |
进一步调试了一下,具体挂在MPVCore::initializeGL() glGenFramebuffers() |
感谢反馈,我今晚有空的话研究一下 |
增加了 OpenGL 2.1 的支持,目前已经可以正常运行在树莓派上 环境我使用的是树莓派3b 搭配64位 Raspberry Pi OS,可以凑合用但是会卡,日常用应该至少需要4b。 流程使用默认的x11 (推荐)
如果想要使用wayland (窗口模式支持不好,全屏使用没问题)
开启硬件加速mpv 默认的硬件加速在树莓派上可能会不可用(老版本系统会出现这个问题,新系统可能会解决,推荐使用下面的命令行测试),下面是自定义硬件加速方案的流程 通过
这里
如果视频正常播放,log 没有报错出现,且能看到 我测试在 3b 上可以使用
存在的问题
|
@zihanhuang 有任何更新吗? |
没有,我不熟悉opengl,需要有谁了解opengl2怎么初始化的帮忙改一下。 |
@zihanhuang 最新的dev或者yoga分支代码应该已经支持了呀,我在前面详细写了操作流程 |
今天有空把yoga分支拉下来,可以用了,谢谢! |
颜色(uv通道?)不对的概率非常高,正常播放就会出现。还发现有的视频不显示评论error code -412 |
我在我这边测试视频播放都是正常的。 任何不正常的情况出现都可以看看能不能稳定复现,如果可以稳定复现就把具体的视频链接发出来,视频相关的问题最好还附加上应用的log(注意编译的时候不要选择release, 这样能看到更多的mpv的log) 如果我没办法在我这里复现出来,那很可能就是设备相关的问题,可以试试看更新下ffmpeg或者再排查看看怎么解决,这就不是我能处理的了 |
不是稳定复现的,每次都不一样,比如这个。有可能反色有可能不会。方法一会再暂停,可能花屏 |
新版本的mpv/ffmpeg有安装源吗,还是要自己编译? |
我也不了解 |
我有一个可以复现的想法,可以改一下main.cpp,把里面log level改到debug 在运行应用期间通过log可以获得视频播放的链接 然后 mpv --referrer=“https://www.bilibili.com” “视频链接” 使用这个方法来看看直接用mpv播放会不会出问题,如果没有问题的话,可能是wiliwili中mpv的哪个参数设置的不对,这个我在3b上是没问题的。 |
似乎和全屏显示有关。刚才我是关闭全屏的,打开全屏显示后出错几率小了很多。 |
有可能是和显存有关系?调大点显存试试会不会好一些。 |
显存增加到128有改善 记录下全屏模式碰到的问题,有空用mpv播放试下。
|
非常感谢对树莓派的支持! 我的设备是 Pi 4 (4GB RAM)。可以正常使用,就是视频画面有点卡,不过弹幕和软件UI很流畅。另外切换软解和硬解设置后,没有看出什么区别。 遇到一个问题是,播放中用L或R跳转过进度、或切换分p后,画面颜色会出问题(变蓝绿)。要退出重开才会正常。 |
感谢 @Haifeng97 陪我大半夜远程调试
|
试了一下确实没有颜色错乱的问题了!感谢作者! 我发现在用 以及 另外注意到在选择清晰度时,如果选择了和当前一样的清晰度,还是会导致视频重新加载一下。这个是不是没有必要? |
如果你确定硬解没问题,那么就可以不自定义,默认的硬解设置在树莓派上几乎等同于auto 带-copy的硬解设置:在解码之后会拷贝到系统内存再处理一遍,可以保证画面正常渲染(一般软解会比直接硬解渲染的好一些,带copy选项就是为了让硬解画面更好一些),也能解决一些设备上硬解的bug,后果就是cpu占用会高一些,但是肯定比纯软解低。 具体的可以看文档:https://mpv.io/manual/stable/ 考虑到应该没有什么人来回点那个选项所以我并没有做额外的处理,而且在有些情况下,可以起到刷新视频的作用。 |
同楼上,各分辨率播放都正常了。多谢大佬们的支持! |
一个月前一个子模块里这个位置的更新新会导致树莓派上编译失败。 报错信息: 手动安装了 |
@haozihong 感谢提醒,我更新了上面的构建说明 |
最新版本在 armbian 上编译成功,但由于 armbian 源中 ffmpeg 启用了 cuda 支持,导致默认总会使用 cuda 库,进而闪退。尝试过使用 flatpak 版本,依旧有此问题。使用最新版本的 raspberry pi os 编译失败,编译到 mpv_core.hpp 时,提示 mpv_event_to_node 有问题..... 设备是树莓派3 |
在 armbian 上使用 |
@jailne-su
用的 mpv 是什么版本呢?,具体的提示是什么呢?
可以在编译时先指定 -DMPV_SW_RENDER=ON 来排除OpenGL导致的影响。 然后测试 -DMPV_SW_RENDER=OFF -DMPV_NO_FB=ON ,可能是最近的项目里cmake的更新导致的这个问题,我记着之前应该在 GL2 开启时是默认会带 -DMPV_NO_FB=ON 参数的。 |
谢谢您,我现在先试试看解包 flatpak 版本的 wiliwili,,看看是否能使其调用 rpios 系统 ffmpeg 解码。 |
系统中的 mpv 版本
gcc版本
第一个错误来自 /home/leo/wiliwili/library/cpr/cpr/file.cpp:9:2: error: extra ‘;’ [-Werror=pedantic]
9 | };
| ^
cc1plus: all warnings being treated as errors
make[3]: *** [library/cpr/cpr/CMakeFiles/cpr.dir/build.make:225: library/cpr/cpr/CMakeFiles/cpr.dir/file.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/leo/wiliwili/build'
make[2]: *** [CMakeFiles/Makefile2:833: library/cpr/cpr/CMakeFiles/cpr.dir/all] Error 2
make[2]: Leaving directory '/home/leo/wiliwili/build'
make[1]: *** [CMakeFiles/Makefile2:650: CMakeFiles/wiliwili.dir/rule] Error 2
make[1]: Leaving directory '/home/leo/wiliwili/build'
make: *** [Makefile:219: wiliwili] Error 2
make: Leaving directory '/home/leo/wiliwili/build' 把符号删掉即可继续编译。 |
第二个错误来自 /home/leo/wiliwili/wiliwili/source/view/mpv_core.cpp: In member function ‘void MPVCore::eventMainLoop()’:
/home/leo/wiliwili/wiliwili/source/view/mpv_core.cpp:632:17: error: ‘mpv_event_to_node’ was not declared in this scope; did you mean ‘mpv_event_hook’?
632 | mpv_event_to_node(&dst, event);
| ^~~~~~~~~~~~~~~~~
| mpv_event_hook
[ 78%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/view/up_user_small.cpp.o
[ 79%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/view/user_info.cpp.o
make[3]: *** [CMakeFiles/wiliwili.dir/build.make:1304: CMakeFiles/wiliwili.dir/wiliwili/source/view/mpv_core.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/leo/wiliwili/build'
make[2]: *** [CMakeFiles/Makefile2:643: CMakeFiles/wiliwili.dir/all] Error 2
make[2]: Leaving directory '/home/leo/wiliwili/build'
make[1]: *** [CMakeFiles/Makefile2:650: CMakeFiles/wiliwili.dir/rule] Error 2
make[1]: Leaving directory '/home/leo/wiliwili/build'
make: *** [Makefile:219: wiliwili] Error 2
make: Leaving directory '/home/leo/wiliwili/build' |
@jailne-su 第二个问题,升级到mpv 0.33 或者更新版本就能解决,同时我也调整了了一下代码,在 dev 分支用低版本mpv编译(>= 0.30)也没有问题啦。 |
谢谢您,我在切换分支并拉取最新版本的源码后进行编译,同时我调整了项目的 /home/leo/wiliwili/wiliwili/source/utils/config_helper.cpp: In member function ‘void ProgramConfig::load()’:
/home/leo/wiliwili/wiliwili/source/utils/config_helper.cpp:358:29: error: ‘CUSTOM_RESOURCES_PATH’ is not a member of ‘brls::View’
358 | brls::View::CUSTOM_RESOURCES_PATH = theme.path;
| ^~~~~~~~~~~~~~~~~~~~~
/home/leo/wiliwili/wiliwili/source/utils/config_helper.cpp:362:25: error: ‘CUSTOM_RESOURCES_PATH’ is not a member of ‘brls::View’
362 | if (brls::View::CUSTOM_RESOURCES_PATH.empty()) {
| ^~~~~~~~~~~~~~~~~~~~~
[ 77%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/utils/string_helper.cpp.o
[ 78%] Building CXX object CMakeFiles/wiliwili.dir/wiliwili/source/utils/version_helper.cpp.o
make[3]: *** [CMakeFiles/wiliwili.dir/build.make:1083: CMakeFiles/wiliwili.dir/wiliwili/source/utils/config_helper.cpp.o] Error 1 |
@jailne-su 应该是您切换分支之后没有同步更新子模块导致的,在项目根目录输入:
|
设备是Raspberry Pi 4,系统为raspbian bullseye 64bit
目前的情况是可以编译,不能运行。
GLFW:可以编译成功,运行时提示不支持OpenGL3.3
SDL2:编译需要修改一处代码。将SDLInputManager::updateMouseWheel()内的
event.preciseX event.preciseY 改为 event.x event.y
之后可以编译通过。程序运行到SDLVideoContext::SDLVideoContext()的nvgCreateGL3()出现segment fault
The text was updated successfully, but these errors were encountered: