Closed yemin82 closed 5 months ago
Custom styles for BR: {color: rgba(255,255,255,0.7) 和这些有关系么,我没就是默认的注册没搞其它
没关系,看日志也挺正常,这感觉得用renderdoc这类工具帮忙了
registerWith 是否可以提供一个方法反注册,或参数,就是不用fvp,相当于一个开关,fvp不行我就用官方的
不调用就是官方的,如果已经调用再切到官方可以这么写
import 'package:video_player_android/video_player_android.dart';
import 'package:video_player_avfoundation/video_player_avfoundation.dart';
if (Platform.isIOS || Platform.isMacOS) {
AVFoundationVideoPlayer.registerWith();
} else if (Platform.isAndroid) {
AndroidVideoPlayer.registerWith();
}
我这边也可以加一下
对,你对比下官方的效果怎么样,我测的一些手机没啥问题,用户也没出现颜色错误
不过官方的应该是直接解码到surfaceview上没经过opengl处理的,性能上也会更好,fvp也支持这种方式,不过还有bug,有时候会黑屏
registerWith(options: {
'tunnel': true
});
试下最新的代码,再调一次registerWith(options: {'platforms': ['windows', 'macos', 'linux']});
就能切回官方实现(platforms里去掉android, ios)
试下最新的代码,再调一次
registerWith(options: {'platforms': ['windows', 'macos', 'linux']});
就能切回官方实现(platforms里去掉android, ios)
我看fvp还是0.18,没有最新打开啊,等会两种方法我都试试
切回官方问题解决了,提个建议不知道现在有实现,就是fvp的video.decoders配置的解码器都失败了,可以自动切回官方videoplayer实现,这样我们就不用搞个人工按钮让用户去切了
网上找到有人同样问题有提到: 解码后还需要经过yuv2rgb和scale,需要注意的是ffmpeg的解码有消隐区的说法,即QCIF的图像其linesize不是176而是192,如果你发现解码后图像呈绿色,需用img_convert()转一下(目的格式也是PIX_FMT_YUV420P)
你试试registerWith(options: {'tunnel', true});
。自动切做不到,这个是全局的,而且必须手动调,flutter就是这么设计的
网上找到有人同样问题有提到: 解码后还需要经过yuv2rgb和scale,需要注意的是ffmpeg的解码有消隐区的说法,即QCIF的图像其linesize不是176而是192,如果你发现解码后图像呈绿色,需用img_convert()转一下(目的格式也是PIX_FMT_YUV420P)
跟这个没关系
你可以装个mpv-android 对比看看画面是否正常
mpv-android正常播放,他界面有个hw/sw,界面显示sw流畅,hw也是刷新率很底,慢动作的效果,不知道显示sw是不是表示软件
sw就是ffmpeg 软解,hw是硬解,mpv sw颜色正常?
你用AMediaCodec:copy=1或者MediaCodec:copy=1也可以试试,性能比软解好,不过输出格式会依赖设备和系统,可能会花屏啥的
tunnel
sw就是ffmpeg 软解,hw是硬解,mpv sw颜色正常?
两种颜色都正常
你用AMediaCodec:copy=1或者MediaCodec:copy=1也可以试试,性能比软解好,不过输出格式会依赖设备和系统,可能会花屏啥的
:copy=1 一样刷新率低,感觉安卓平台可以放弃了,安卓9的设备也不算太差了,用系统的安卓5的设备都还是很流畅
安卓差异化很大,有的设备有奇怪的问题,一般都正常
苹果可以作为首选方案,安卓只能做备选方案,硬件比较好的可以用
安卓差异化很大,有的设备有奇怪的问题,一般都正常
问题2个设备刷新率都很低,这个属于不一般了,按当前市场价格千元以下的基本不能用了。
不能排除系统或硬解问题,可以让exoplayer或media3使用opengl渲染试试(我不熟没用过exo和media3),如果流畅说明是mpv和我这边代码有问题。系统播放器是因为直接解码输出到surface的,这个是效率最高的
你可以试下vlc,设置->高级里强制开启opengl es2,如果也卡说明不是程序问题了