CarGuo / GSYVideoPlayer

视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
https://juejin.im/user/582aca2ba22b9d006b59ae68/posts
Apache License 2.0
19.95k stars 4.17k forks source link

横屏竖屏偶尔不能切换问题 #3484

Closed oudengding closed 2 years ago

oudengding commented 2 years ago

问题描述:

参照SimpleDetailActivityMode1,播放m3u8视频,使用Exo2内核

问题机型/系统:

真机 oppo ace2

GSY依赖版本

implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.1.7-release-jitpack'

Demo中的复现步骤

进入播放页点击播放,然后点击全屏按钮(或退出按钮),偶尔出现屏幕跳动,但视频不横屏的情况

问题代码: 参照 SimpleDetailActivityMode1

CarGuo commented 2 years ago

demo 没有复现,请注意 manifest 配置是否正常,并且代码设置对不对

oudengding commented 2 years ago

demo 没有复现,请注意清单配置是否正常,并且代码设置对不对

我可以加一下你的qq,把录制的视频发给你看一下吗? 2843901270

CarGuo commented 2 years ago

你告诉我 demo 怎么复现更好一些

oudengding commented 2 years ago

public class PlayerVideoActivity extends GSYBaseActivityDetail {

private static final String KEY_CourseVideo = "courseVideo";

private ActivityPlayerVideoBinding binding;
private CourseVideo courseVideo;

@Override
protected void onDestroy() {
    super.onDestroy();
    binding = null;
    courseVideo = null;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    binding = ActivityPlayerVideoBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());

    StatusBarUtil.setDarkMode(this);
    StatusBarUtil.setColor(this, Color.BLACK);

    courseVideo = getIntent().getParcelableExtra(KEY_CourseVideo);

    binding.detailPlayer.getBackButton().setOnClickListener(v -> finish());

    PlayerFactory.setPlayManager(Exo2PlayerManager.class);
    CacheFactory.setCacheManager(ExoPlayerCacheManager.class);

    initVideoBuilderMode();
}

@Override
public StandardGSYVideoPlayer getGSYVideoPlayer() {
    return binding.detailPlayer;
}

@Override
public GSYVideoOptionBuilder getGSYVideoOptionBuilder() {
    File cacheDir = new File(getExternalCacheDir(), AppConstants.VIDEO_CACHE_DIR);
    FileUtils.createDir(cacheDir);

    //封面
    ImageView imageView = new ImageView(this);
    loadCover(imageView, courseVideo.getCoverUrl());

    return new GSYVideoOptionBuilder()
            .setThumbImageView(imageView)
            .setNeedOrientationUtils(false)
            .setUrl(courseVideo.getVideoUrl())
            .setCacheWithPlay(true)
            .setVideoTitle(courseVideo.getTitle())
            .setThumbPlay(false)
            .setIsTouchWiget(true)
            .setRotateViewAuto(false)
            .setLockLand(false)
            .setShowFullAnimation(false)
            .setNeedLockFull(false)
            .setCachePath(cacheDir)
            .setSeekRatio(1);
}

@Override
public void clickForFullScreen() {
}

@Override
public boolean getDetailOrientationRotateAuto() {
    return false;
}

private void loadCover(ImageView imageView, String picUrl) {
    ColorDrawable defaultCover = new ColorDrawable(Color.BLACK);
    Glide.with(getApplicationContext())
            .load(picUrl)
            .error(defaultCover)
            .placeholder(defaultCover)
            .into(imageView);
}

}

oudengding commented 2 years ago
    <activity
        android:name=".ui.video.PlayerVideoActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
        android:screenOrientation="portrait" />
CarGuo commented 2 years ago

我的意思是你告诉我,我在 demo 里如何复现你的问题?

oudengding commented 2 years ago

我的意思是你告诉我,我在 demo 里如何复现你的问题?

这还真不好复现,我摸不着规律

oudengding commented 2 years ago

我的意思是你告诉我,我在 demo 里如何复现你的问题?

这还真不好复现,我摸不着规律

时有时无,最开始我以为是缓存的问题,但缓存完了也会偶尔出现

oudengding commented 2 years ago

https://user-images.githubusercontent.com/54766076/147438182-c78322a6-d3af-491c-9342-faaaad94364d.mp4

CarGuo commented 2 years ago

我主要是在 demo 没发现这个的问题,你看看你测试demo能不能出现,如果 demo 不出现就可能是其他问题

CarGuo commented 2 years ago

修改已经提交,下个版本发布~应该最近会更新