yangchaojiang / yjPlay

一个支持自定义UI布局,流式API, 加密,直播 ,亮度,音量,快进等手势 ,广告视频预览,多种加载模式 ,多种分辨率切换 ,多种封面图, 自定义数据源,列表播放,倍数播放,边播变缓存<font color="red">不是使用AndroidVideoCache</font>,离线播放,神奇的播放器
Apache License 2.0
1.73k stars 301 forks source link

为什么只有一个音频时,上一首音频一直是亮的 #272

Open leeyushi opened 5 years ago

leeyushi commented 5 years ago

为什么只有一个音频时,上一首音频一直是亮的,下一首音频一直是暗的,ID为R.id.exo_prev,上一首音频一直是亮的还不可点击,这样不统一啊,版本是2.3.50

yangchaojiang commented 5 years ago

ui控制自己没控制?

leeyushi commented 5 years ago

是的,我用的内置的,现在改成自己空置,可以了,但是有一个很严重的问题啊,慢速播放设置成0.5f(我 用的是音频)音调和声音完全就变了,快速播放没有问题

leeyushi commented 5 years ago

好像是我把音高也放小的原因,现在应该已经可以了

yangchaojiang commented 5 years ago

不建议使用内置的 有的时事件有我的处理的

leeyushi commented 5 years ago

多线路设置里面,有好多个重载方法,感觉好混乱,demo里面在这一块,好像也基本没有什么介绍

leeyushi commented 5 years ago
   /***
     * 设置多线路播放
     * @param switchIndex 选中播放线路索引
     * @param videoUri 视频地址
     * @param name 清清晰度显示名称
     *@return Builder
     */
    public Builder setPlaySwitchUri(int switchIndex, @NonNull List<String> videoUri, @NonNull List<String> name) {
        initMediaSourceBuilder();
        mediaSourceBuilder.setMediaSwitchUri(videoUri, switchIndex);
        mVideoPlayerView.setSwitchName(name, switchIndex);
        return this;
    }

mVideoPlayerView.setSwitchName(name, switchIndex);执行到第三句就是Null了 我流式调用的 //开启多线路设置,默认关闭 .setShowVideoSwitch(true) .setPlaySwitchUri(0,mMultilinePlays, mMultilineNames) .create() .startPlayer();

yangchaojiang commented 5 years ago

重置跟你的uri的类型 决定的哦

leeyushi commented 5 years ago
                    switch (position) {
                        case 0:
                            //极高音质
                            exoPlayerManager.setPlaySwitchUri(0, mMultilinePlays, mMultilineNames);
                            break;
                        case 1:
                            //较高音质
                            exoPlayerManager.setPlaySwitchUri(1, mMultilinePlays, mMultilineNames);
                            break;
                        case 2:
                            //标准音质
                            exoPlayerManager.setPlaySwitchUri(2, mMultilinePlays, mMultilineNames);
                            break;
                    }

怎么无缝更改音质链接啊,这样设置不起作用

leeyushi commented 5 years ago

你的"超清", "高清", "标清" 点击事件 是内置处理的吗,不能对外开放设置超清高清标清吗

yangchaojiang commented 5 years ago

超清", "高清", "标清“ 和链接对应一下就行。 点击事件都是内容处理好的,无需要自己处理的

leeyushi commented 5 years ago

那我如果是自定义的“超清”“高清“”标清“样式的话 就无法实现相应功能事件了,如果是内置处理好的话,单纯的音频播放也有增加处理吗?

yangchaojiang commented 5 years ago

本来就是自定义的 。 “超清”“高清“”标清“ 超清链接 高清链接 ”标清链接 或者 标清“ 高清“” “超清”“ ”标清链接 高清链接 超清链接

你只要对应号就行了。名称和链接

leeyushi commented 5 years ago

你说的一个names,一个对应的播放链接,这两个List要相对应我懂,我的意思是提供了这两个选项以后,但是我自己写了一个UI样式,分别为 ”超清“”高清“”标清“按钮,我点击我自己编写的按钮,然后通过调用API 可不可以切换对应的播放链接 和播放进度 达到无缝切换清晰度?

yangchaojiang commented 5 years ago

图片 图片

yangchaojiang commented 5 years ago

用你的自己点击处理 然后调 ···· if (mExoPlayerListener != null) { mExoPlayerListener.switchUri(position); } ···

leeyushi commented 5 years ago

好的,谢谢,我去看看,我应该是要去继承这个类,然后重载到这个属性,然后我再自定义一个切换方法?

yangchaojiang commented 5 years ago

是的 ui效果需要自己处理了

leeyushi commented 5 years ago

那这样的话,我好像需要改动源码,才能达到我想要的效果,因为源码里的 private VideoPlayerView mVideoPlayerView 这个属性是私有的,无法继承到这个属性,修改源码就得本地依赖 我先试试,在视频回调里记录下当前播放进度,然后在点击不同的清晰度时,exoPlayerManager.setPosition(索引链接,当前播放位置); 这样好像从理论上也能达到无缝衔接

yangchaojiang commented 5 years ago

有get的方法的 控制类 图片

leeyushi commented 5 years ago

ok,非常感谢!

leeyushi commented 5 years ago

继承不了,VideoPlayerView是因为常量,BaseView因为是默认修饰符,其它包无法继承,而且继承的话我得改写继承好多个类,你那边能提供一下这个方法的外部调用吗

leeyushi commented 5 years ago

不过我顺着这个方法: 在视频回调里记录下当前播放进度,然后在点击不同的清晰度时, exoPlayerManager.setPosition(索引链接,当前播放位置); exoPlayerManager.startPlayer(); 可以衔接上去,作者有空能提供一个外部调用切换就更好了

yangchaojiang commented 5 years ago

剋以

yangchaojiang commented 5 years ago

我final去掉

leeyushi commented 5 years ago

好的,谢谢作者

leeyushi commented 4 years ago

您好,设置多线路播放,可以封装一个对外设置当前线路的方法吗 我继承由于是一个类嵌套一个类的,这样改一个类,下来要分层继承好多个类,才有可能嵌套进去

leeyushi commented 4 years ago

我final去掉

你更新过的在哪里能看到,我在这里文档看到的一直是2.3.50,VideoPlayerView还是常量,无法继承,没办法处理自己定义的多线路切换

leeyushi commented 4 years ago

要不然算啦,我自己改改源码, 从新上传到另一个github里,自己维护吧。。。

yangchaojiang commented 4 years ago

我写代码哦

yangchaojiang commented 4 years ago

随你。本身开源的

leeyushi commented 4 years ago

你那边改好的话也给我说一声

yangchaojiang commented 4 years ago

2.2.52 看看

leeyushi commented 4 years ago

是2.3.52,版本号打错了 好像只是把final去掉了,没有增加对应的设置方法 我发现音频播放是PlayerControlView 里面有private VideoPlayerView videoPlayerView;这个属性 虽然有提供get方法可以获取到这个属性,但是我通过继承以后,是要把PlayerControlView类里面的VideoPlayerView类型更改为我自己继承得到的类

leeyushi commented 4 years ago

所以这样我好像处理不了,除非把PlayerControlView类的所有方法赋值黏贴到新类,但是赋值黏贴会出问题的

yangchaojiang commented 4 years ago

getPlaybackControlView()