基于IJKPlayer(兼容系统MediaPlayer与EXOPlayer2),实现了多功能的视频播放器

Overview

基于IJKPlayer(兼容系统MediaPlayer与EXOPlayer2),实现了多功能的视频播放器。 (请仔细阅读下方各项说明,大多数问题可在下方找到解答)。

如果克隆太慢或者图片看不到,可尝试从码云地址下载

类型 功能
缓存 边播边缓存,使用了AndroidVideoCache;ExoPlayer使用SimpleCache。
协议 h263\4\5、Https、concat、rtsp、hls、rtmp、crypto、mpeg等等。(ijk模式格式支持)
滤镜 简单滤镜(马赛克、黑白、色彩过滤、高斯、模糊、模糊等等20多种)、动画、(水印、画面多重播放等)。
帧图 视频第一帧、视频帧截图功能,视频生成gif功能。
播放 列表播放、列表连续播放、重力旋转与手动旋转、视频本身rotation旋转属性、快播和慢播、网络视频加载速度。
画面 调整显示比例:默认、16:9、4:3、填充;播放时旋转画面角度(0,90,180,270);镜像旋转。
内核 IJKPlayer、EXOPlayer、MediaPlayer切换、自定义内核
布局 全屏与非全屏两套布局切换、没有任何操作控件的纯播放支持、弹幕功能、继承自定义任何布局。
播放 单例播放、多个同时播放、视频列表滑动自动播放、列表切换详情页面无缝播放。
窗口 小窗口、多窗体下(包括桌面)的小窗口播放。
广告 片头广告、跳过广告支持、中间插入广告功能。
字幕 exo2模式下支持自定增加外挂字幕
dash exo2 模式支持dash
更多 暂停前后台切换不黑屏;调整不同清晰度的支持;无缝切换支持;锁定/解锁全屏点击功能;进度条小窗口预览(测试)。
自定义 可自定义渲染层、自定义管理层、自定义播放层(控制层)、自定义缓存层。

Build Status Github Actions

GitHub stars GitHub forks GitHub issues GitHub license

公众号 掘金 知乎 CSDN 简书
GSYTech 点我 点我 点我 点我

--------------Demo APK 下载地址---------------

一、使用依赖

7.0 版本开始使用了anndroidx,support版本请看6.x.x,请查看:--- 版本更新说明 - 入口

1、Jitpack 引入方法(推荐, JCenter 即将关闭)

First、在project下的build.gradle添加

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
        maven { url "https://maven.aliyun.com/repository/public" }
	}
}

你可以选择下面三种的其中一种,在module下的build.gradle添加。

A、直接引入

 //完整版引入
 implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.1.7-release-jitpack'

B、添加java和你想要的so支持:

 implementation 'com.github.carguo.GSYvideoplayer:gsyVideoPlayer-java:v8.1.7-release-jitpack'

 //是否需要ExoPlayer模式
 implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.1.7-release-jitpack'

 //根据你的需求ijk模式的so
 implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-arm64:v8.1.7-release-jitpack'
 implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-armv7a:v8.1.7-release-jitpack'
 implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-armv5:v8.1.7-release-jitpack'
 implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-x86:v8.1.7-release-jitpack'
 implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-x64:v8.1.7-release-jitpack'

C、支持其他格式协议的(mpeg,rtsp, concat、crypto协议)

A、B普通版本支持263/264/265等,对于mpeg编码会有声音无画面情况。 C 引入的so支持mpeg编码和其他补充协议,但是so包相对变大。

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

 //是否需要ExoPlayer模式
 implementation 'com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer-exo2:v8.1.7-release-jitpack'

 //更多ijk的编码支持
 implementation 'com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-ex_so:v8.1.7-release-jitpack'

代码中的全局切换支持(更多请参看下方文档和demo)


//EXOPlayer内核,支持格式更多
PlayerFactory.setPlayManager(Exo2PlayerManager.class);
//系统内核模式
PlayerFactory.setPlayManager(SystemPlayerManager.class);
//ijk内核,默认模式
PlayerFactory.setPlayManager(IjkPlayerManager.class);


//exo缓存模式,支持m3u8,只支持exo
CacheFactory.setCacheManager(ExoPlayerCacheManager.class);
//代理缓存模式,支持所有模式,不支持m3u8等,默认
CacheFactory.setCacheManager(ProxyCacheManager.class);



//切换渲染模式
GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);
//默认显示比例
GSYVideoType.SCREEN_TYPE_DEFAULT = 0;
//16:9
GSYVideoType.SCREEN_TYPE_16_9 = 1;
//4:3
GSYVideoType.SCREEN_TYPE_4_3 = 2;
//全屏裁减显示,为了显示正常 CoverImageView 建议使用FrameLayout作为父布局
GSYVideoType.SCREEN_TYPE_FULL = 4;
//全屏拉伸显示,使用这个属性时,surface_container建议使用FrameLayout
GSYVideoType.SCREEN_MATCH_FULL = -4;
/***
 * SCREEN_TYPE_CUSTOM 下自定义显示比例
 * @param screenScaleRatio  高宽比,如 16:9
 */
public static void setScreenScaleRatio(float screenScaleRatio)


//切换绘制模式
GSYVideoType.setRenderType(GSYVideoType.SUFRACE);
GSYVideoType.setRenderType(GSYVideoType.GLSURFACE);
GSYVideoType.setRenderType(GSYVideoType.TEXTURE);


//ijk关闭log
IjkPlayerManager.setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT);


//exoplayer自定义MediaSource
ExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() {
    @Override
    public MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) {
        //可自定义MediaSource
        return null;
    }
});

--- 更多依赖方式请点击 -

二、其他推荐

* QQ群,有兴趣的欢迎(平时吹水吐槽多,因为人数饱和,就是日常瞎扯):174815284 。

* Flutter Github客户端React Native Github客户端Weex Github客户端原生 Kotlin Github客户端

* RxFFmpeg Android 的音视频编辑工具

* oarplayer Rtmp播放器,基于MediaCodec与srs-librtmp,不依赖ffmpeg

* RickText

* LazyRecyclerAdapter

三、文档Wiki

文档 传送门
使用说明 --- 简单使用,快速上手文档
建议阅读 --- 移动开发者必知的音视频基础知识
项目解析说明 --- 项目解析说明、包含项目架构和解析
接口文档入口 --- 使用说明、接口文档 - 入口
问题集锦入口 --- 问题集锦 - 入口(大部分你遇到的问题都在这里解决)
编码格式 --- IJK so文件配置格式说明
编译自定义SO --- IJKPlayer编译自定义SO - 入口
版本更新说明 --- 版本更新说明 - 入口

框架图

四、运行效果

  • 1、打开一个播放(旋转、镜像、填充)

  • 2、列表/详情模式(动画、旋转、小窗体)

  • 3、弹幕

  • 4、滤镜和GL动画

  • 6、背景铺满模糊播放

  • 7、进度条小窗口预览

五、近期版本

v8.1.7-release-jitpack(2020-11-12)

  • update something

v8.1.6-jitpack(2020-09-13)

  • 增加支持横屏幕全屏和竖屏变化,屏幕不旋转,SimpleActivity SimpleDetailActivityMode2
  • 修复设置了超时,重试后失效的问题
  • 增加针对某些dataBinding的场景, 当context detach activity被回收会出现。
  • exo player 2.14.2
  • fix DataSource error

非 androidx 版本为 6.0.3 以下版本。更多兼容版本请查阅版本更新。

更多版本请查阅:版本更新说明

六、关于Issues

提问题前可先查阅上方文档和说明,请在Demo中复现问题。

问题说明:

1、说明那个Demo中哪个页面。
2、问题显现和重现步骤。
3、补充问题的视频流url,截图。
4、补充问题的机型,android版本。

七、混淆

-keep class com.shuyu.gsyvideoplayer.video.** { *; }
-dontwarn com.shuyu.gsyvideoplayer.video.**
-keep class com.shuyu.gsyvideoplayer.video.base.** { *; }
-dontwarn com.shuyu.gsyvideoplayer.video.base.**
-keep class com.shuyu.gsyvideoplayer.utils.** { *; }
-dontwarn com.shuyu.gsyvideoplayer.utils.**
-keep class tv.danmaku.ijk.** { *; }
-dontwarn tv.danmaku.ijk.**

-keep public class * extends android.view.View{
    *** get*();
    void set*(***);
    public 
   
    (android.content.Context);
    public 
    
     (android.content.Context, java.lang.Boolean);
    public 
     
      (android.content.Context, android.util.AttributeSet);
    public 
      
       (android.content.Context, android.util.AttributeSet, int);
}

      
     
    
   

温馨提示

如果克隆太慢,可尝试从码云地址下载

关于自定义和出现问题的请先看问题集锦、demo、issue。

多了解一些音视频的基础常识,对容器,音视频编码,ffmpeg先做一些了解,以及mediacodec等的不同。
尽量少出现为什么别的能播的问题哟。

播放器的可自定义还是挺高的,定制请参考demo,多看源码。现在的功能有些多,demo也在不断的更新。

一些新功能和项目结构也在不断的调整。

欢迎提出问题,谢谢。

依赖大小参考

建议使用ndk过滤,详细参考 参考第四条 : 4、NDK的so支持

非常感谢您的支持

撸码不易,如果对你有所帮助,欢迎您的赞赏

GSY新书:《Flutter开发实战详解》上架啦:京东 / 当当

License

请参看IJKPlayer和AndroidVideoCache相关协议。
项目最开始是从jiecao过来的,改着改着直接重构了。
偶尔有一变量和方法名可能还有点jiaozi的影子,但是基本是一个新项目。
Comments
  • 自动播放隐藏

    自动播放隐藏

    我的播放器写在了viewpager中,点击界面跳转到viewpager 我直接让他自动播放 调用startPlay之后 播放按钮和底部栏都显示 我想让他不显示怎么办 我重写了一下两个方法 @Override protected void changeUiToPreparingShow() { super.changeUiToPreparingShow(); setViewShowState(mStartButton, INVISIBLE); setViewShowState(mBottomContainer, INVISIBLE); }

    @Override
    public void startAfterPrepared() {
        super.startAfterPrepared();
        setViewShowState(mStartButton, INVISIBLE);
        setViewShowState(mBottomContainer, INVISIBLE);
    }
    

    但是有的时候好使,有的时候还是会显示 为什么

    opened by darkrevier 37
  • 通过 IJKEXOPLAYER2 播放视频 横竖屏切换 黑屏 播放错误

    通过 IJKEXOPLAYER2 播放视频 横竖屏切换 黑屏 播放错误

    小米手机问题

     1.  红米 系统版本4.4    黑屏
     2.  小米4  6.0.1  反复几次横竖屏切换 黑屏
    

    E/GSYVideoPlayer: onConfigurationChanged 2 02-02 16:09:19.450 15241-20423/com.example.gsyvideoplayer E/BufferQueueProducer: [SurfaceTexture-0-15241-43] queueBuffer: BufferQueue has been abandoned 02-02 16:09:19.450 15241-20423/com.example.gsyvideoplayer E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19 02-02 16:09:19.450 15241-20423/com.example.gsyvideoplayer E/ACodec: queueBuffer failed in onOutputBufferDrained: -19 02-02 16:09:19.450 15241-20423/com.example.gsyvideoplayer E/ACodec: signalError(omxError 0x80001001, internalError -19) 02-02 16:09:19.453 15241-20422/com.example.gsyvideoplayer E/MediaCodec: Codec reported err 0xffffffed, actionCode 0, while in state 6 02-02 16:09:19.457 15241-20414/com.example.gsyvideoplayer E/ExoPlayerImplInternal: Internal runtime error. java.lang.IllegalStateException at android.media.MediaCodec.native_setSurface(Native Method) at android.media.MediaCodec.setOutputSurface(MediaCodec.java:1797) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:841) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setSurface(MediaCodecVideoRenderer.java:369) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:336) at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessagesInternal(ExoPlayerImplInternal.java:839) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:342) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:148) at android.os.HandlerThread.run(HandlerThread.java:61) 02-02 16:09:19.458 15241-15256/com.example.gsyvideoplayer E/EventLogger: playerFailed [20.71] com.google.android.exoplayer2.ExoPlaybackException at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:360) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:148) at android.os.HandlerThread.run(HandlerThread.java:61) Caused by: java.lang.IllegalStateException at android.media.MediaCodec.native_setSurface(Native Method) at android.media.MediaCodec.setOutputSurface(MediaCodec.java:1797) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:841) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setSurface(MediaCodecVideoRenderer.java:369) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:336) at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessagesInternal(ExoPlayerImplInternal.java:839) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:342) at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:148)  at android.os.HandlerThread.run(HandlerThread.java:61)  02-02 16:09:19.466 15241-20423/com.example.gsyvideoplayer E/Surface: getSlotFromBufferLocked: unknown buffer: 0x96e03720

    怎么排查问题呢,感谢

    opened by yiShanXin 33
  • 偶先视频无效,资源无效。CURRENT_STATE_ERROR = 7;

    偶先视频无效,资源无效。CURRENT_STATE_ERROR = 7;

    请假一个问题

    问题描述:

    代码走到: CURRENT_STATE_ERROR = 7;

    问题机型/系统:

    例如 真机 三星s6

    GSY依赖版本

    例如 implementation 'com.shuyu:gsyVideoPlayer-java:7.1.0' 问题代码:(如果有)

    我的视频资源中,某个视频资源报这个问题,.m3u8的视频,请问是什么原因导致的。ios可以播放。

    opened by alanzyz 31
  • 使用onPause后再使用onResume视频不会播放,ui状态处于播放状态(CURRENT_STATE_PLAYING)

    使用onPause后再使用onResume视频不会播放,ui状态处于播放状态(CURRENT_STATE_PLAYING)

    (!!!!请务必务必按照issue模板,修改 后提交问题!!!!,不按模板提Isuue删除处理)

    (ps 首页问题集锦和demo请先了解一下!)

    提问前建议先看看: https://mp.weixin.qq.com/s/HjSdmAsHuvixCH_EWdvk3Q

    问题描述:

    首先调用 GSYVideoManager.onPause() 暂停,再使用 GSYVideoManager.onResume() 恢复播放,这时候UI状态处于播放状态,但是视频没有播放

    问题机型/系统:

    真机 小米note3 Android9.0

    GSY依赖版本

    例如 implementation 'com.shuyu:gsyVideoPlayer-java:7.1.5'

    Demo中的复现步骤

    问题代码:(如果有)

    GSYVideoView中onVideoPause
    if (getGSYVideoManager() != null &&
                        getGSYVideoManager().isPlaying()) { 
    判断不成立,但是 mCurrentState ==  CURRENT_STATE_PLAYING
    导致 onVideoResume 也不能进行播放
    
    opened by BaiShou 28
  • 从后台恢复后画面静止,音乐继续播放

    从后台恢复后画面静止,音乐继续播放

    (!!!!请务必务必按照issue模板,修改 后提交问题!!!!,不按模板提Isuue删除处理)

    (ps 首页问题集锦和demo请先了解一下!)

    从后台恢复后画面静止,音乐继续播放

    问题机型/系统:

    真机 红米 Pro

    GSY依赖版本

    implementation 'com.shuyu:gsyVideoPlayer-java:7.1.0'

    Demo中的复现步骤

    Demo中打开简单播放->简单直接播放 开始播放视频,按Home将demo放置到后台,再次点击demo图标打开demo,声音恢复播放,但是画面保持静止不动

    opened by kennir 28
  • 引用编译冲突

    引用编译冲突

    问题描述:

    编译冲突

    问题机型/系统:

    GSY依赖版本

    //完整版引入 播放器 compile('com.shuyu:GSYVideoPlayer:6.0.1') { exclude module: 'support-v4' exclude group: 'com.android.support' }

    Demo中的复现步骤

    • What went wrong: Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForAliDebug'.

    com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK lib/armeabi-v7a/libijkplayer.so File1: C:\Users\Dudo.android\build-cache\2da8fdd3bd3878c69c025bd1fde9c4e33dea1c3e\output\jni File2: C:\Users\Dudo.android\build-cache\4f2e3240fba2eb886a0ebe15bf7e1d9ba44877e3\output\jni

    opened by dujingxue1997 27
  • 列表,详情切换功能

    列表,详情切换功能

    按照Demo中定义的SwitchVideo方式,可以实现从列表到详情Activity的无缝续播

    有个需求,从列表进入到详情的activity中,然后再从activity退出,返回列表,这时候需要让列表中的视频也继续播,Demo中,返回列表就自动停止了

    按照进入activity续播的思路,在activity的onBackPressed方法中

    SwitchUtil.sSwitchVideo.cloneState(video_detail_player) SwitchUtil.sSwitchVideo.setSurfaceToPlay() video_detail_player.gsyVideoManager.setLastListener(null)

    把当前播放器的状态同步到列表中的播放器中 SwitchVideo 的saveState()直接返回了当前实例(Demo中是新建了SwitchVideo,然后cloneParams了)

    问题出现了,列表的视频有声音,视频进度(时间text、进度progress)显示正常,但是画面不会动,卡在退出的那一帧了 如果此时在列表中,进入视频全屏,再退出全屏,这样列表的视频就正常播放了

    已经确保详情的activity的生命周期回调方法中未出现其他视频控制代码 列表中GsyVideoPlayer也调用了addTextureView(); setListener(this); checkoutState();方法

    非常期待大神能给解答从详情返回列表后,列表视频无声音的问题

    opened by missu263 27
  • 画面显示不全,出现黑边

    画面显示不全,出现黑边

    问题描述:

    我使用GSYVideoPlayer5.0.1在一个Android4.2的盒子上播放视频时,遇到video画面显示不全的问题,画面上边和右边都是黑边(视频源本身没有任何问题),我找了很久都没找到原因(在其他盒子及手机上都正常),显示比例之类的参数都试遍了也没解决,望不吝赐教

    问题机型/系统:

    中国电信IPTV盒子 Android4.2

    Demo中的复现步骤

    Demo中的detailPlayer页面打开后XXXX会出现这个问题。

    问题代码:(如果有)

    GSYVideoManager.instance().setVideoType(this, GSYVideoType.SYSTEMPLAYER);
                    GSYVideoType.setRenderType(GSYVideoType.SUFRACE);
                    GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);
    mLiveVideoPlayer.setIsTouchWigetFull(true);
            mLiveVideoPlayer.setVideoAllCallBack(new SimpleVideoCallBack() {
                @Override
                public void onPrepared(String url, Object... objects) {
                    super.onPrepared(url, objects);
                    if (mProgressBarLoadingVideo.getVisibility() == View.VISIBLE) {
                        mProgressBarLoadingVideo.setVisibility(View.GONE);
                    }
                }
    
                @Override
                public void onAutoComplete(String url, Object... objects) {
                    super.onAutoComplete(url, objects);
                }
    
                @Override
                public void onPlayError(String url, Object... objects) {
                    super.onPlayError(url, objects);
                    Logger.d("节目无法播放");
                    Toast.makeText(LiveActivity.this, R.string.the_program_cannot_be_played, Toast.LENGTH_LONG).show();
                }
    
                @Override
                public void onClickBlank(String url, Object... objects) {
                    super.onClickBlank(url, objects);
                }
            });
    mLiveVideoPlayer.setUp(newurl, false, "");
                mLiveVideoPlayer.startPlayLogic();
    

    问题log(如果有)

    issues上不能传图,用下面的符号代替(整个符号区域代表屏幕(包括o和x),x区域代表video画面)
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooo
    
    
    opened by lingchen52 26
  • 协议解析错误

    协议解析错误

    问题描述:

    APP通过wifi从摄像头(我司称布控球)拉取rtsp视频流,出现视频播放不连续,时间2秒3秒等作为间隔播放(叫跳帧?)同事认为是协议解析错误,说视频不需要解码,视频播放越久出现概率越大。可能是因为wifi不稳定导致,但是WiFi不可控,希望能实现出现协议解析错误时底层能处理,或者提供接口检测APP重新拉流。部分日志:

    ##出现问题的视频流:因为是我司内部摄像头:暂没想到如何提供视频流

    问题机型/系统:测试用多部机器均出现小米A2、华为手机、华为平板

    GSY依赖版本

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

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

    Demo中的复现步骤

    播放久大概率出现 问题代码:(如果有) 无

    问题log(如果有)

    2021-12-22 17:07:19.547 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f595 expected=82e3 2021-12-22 17:07:19.633 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82e4 expected=f597 2021-12-22 17:07:19.787 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f598 expected=82e6 2021-12-22 17:07:19.894 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82e7 expected=f59a 2021-12-22 17:07:20.024 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f59b expected=82e9 2021-12-22 17:07:20.104 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82ea expected=f59d 2021-12-22 17:07:20.264 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f59e expected=82ec 2021-12-22 17:07:20.349 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82ed expected=f5a0 2021-12-22 17:07:20.545 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f5a1 expected=82ef 2021-12-22 17:07:20.625 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82f0 expected=f5a6 2021-12-22 17:07:20.709 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f5a6 expected=82f4 2021-12-22 17:07:20.710 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82f4 expected=f5ab 2021-12-22 17:07:20.789 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f5ab expected=82f9 2021-12-22 17:07:20.792 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82f9 expected=f5b1 2021-12-22 17:07:20.881 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f5b1 expected=82ff 2021-12-22 17:07:20.883 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 82ff expected=f5ba 2021-12-22 17:07:20.945 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq f5ba expected=8308 2021-12-22 17:07:20.971 19805-20058/com.benliu.ptv3 E/IJKMEDIA: RTP: PT=60: bad cseq 8308 expected=f5f0

    opened by baikimi 25
  • oppo A59手机,切换全屏或者从全屏切换回来,画面不动

    oppo A59手机,切换全屏或者从全屏切换回来,画面不动

    问题描述:

    oppo A59手机,切换全屏或者从全屏切换回来,画面不动,五秒后才会继续播放,但是,这期间五秒过程中,进度条一直会动,其他手机没有发现这个问题

    问题机型/系统:

    oppo a59

    问题录像

    http://dev.wangrunxiang.com/device-2020-07-13-220307.mp4

    opened by wangrunxiang 25
  • 在线视频3个内核都播放不了,点击可以播放

    在线视频3个内核都播放不了,点击可以播放

    问题描述:

    http://whb.xietuw.com/uploads/video/20211013/a55616f6f2325c90f10a99aa54545cbb.mp4 这个在线视频播放不了,使用缓存和不使用缓存都播放不了。直接点开用浏览器可以播放。换了3个内核都播放不了。

    问题机型/系统:

    例如 真机 小米Redmi7A Android9 华为mate40 pro 鸿蒙2.0

    GSY依赖版本

    com.shuyu:GSYVideoPlayer:8.1.2 升级到8.1.6也是播放不了

    问题log(如果有)

    2021-10-14 09:04:22.853 14147-14147/com.fjsy.whb W/MediaPlayer: Couldn't open http://whb.xietuw.com/uploads/video/20211013/a55616f6f2325c90f10a99aa54545cbb.mp4: java.io.FileNotFoundException: No content provider: http://whb.xietuw.com/uploads/video/20211013/a55616f6f2325c90f10a99aa54545cbb.mp4 2021-10-14 09:04:22.853 14147-14147/com.fjsy.whb V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@d399b68): Cookies: null 2021-10-14 09:04:22.862 14147-14514/com.fjsy.whb V/MediaHTTPService: makeHTTPConnection: CookieHandler (java.net.CookieManager@d7be554) exists. 2021-10-14 09:04:22.862 14147-14514/com.fjsy.whb V/MediaHTTPService: makeHTTPConnection(android.media.MediaHTTPService@d399b68): cookieHandler: java.net.CookieManager@d7be554 Cookies: null 2021-10-14 09:04:23.416 14147-14458/com.fjsy.whb W/MediaHTTPConnection: readAt 1400271 / 32768 => java.net.ProtocolException 2021-10-14 09:04:23.893 14147-14458/com.fjsy.whb W/MediaHTTPConnection: readAt 1400271 / 32768 => java.net.ProtocolException 2021-10-14 09:04:23.973 14147-14436/com.fjsy.whb E/MediaPlayerNative: error (1, -2147483648) 2021-10-14 09:04:23.987 14147-14147/com.fjsy.whb E/MediaPlayer: Error (1,-2147483648) 2021-10-14 09:04:23.987 14147-14147/com.fjsy.whb D/VideoView: Error: 1,-2147483648

    opened by jimdaxu 23
  • MeasureHelper可能的一个逻辑error

    MeasureHelper可能的一个逻辑error

    (!!!!请务必务必按照issue模板,修改 后提交问题!!!!,不按模板提Isuue删除处理)

    (ps 首页问题集锦和demo请先了解一下!)

    ⚠️提问前建议先看看: https://mp.weixin.qq.com/s/HjSdmAsHuvixCH_EWdvk3Q

    问题描述:

    image 这块displayAspectRatio是不是sar计算重复了?

    出现问题的视频流

    ❗❗❗⚠️⚠️⚠️这个很重要!!!!没有问题流的问题无法处理复现⚠️⚠️⚠️❗❗❗

    问题机型/系统:

    例如 真机 小米note2 Android7.0

    GSY依赖版本

    例如 implementation 'com.shuyu:gsyVideoPlayer-java:7.0.1'

    Demo中的复现步骤

    Demo中的detailPlayer页面打开后XXXX会出现这个问题。

    问题代码:(如果有)

      default:
                            displayAspectRatio = (float) realWidth / (float) mVideoHeight;
                            if (mVideoSarNum > 0 && mVideoSarDen > 0)
                                displayAspectRatio = displayAspectRatio * mVideoSarNum / mVideoSarDen;
                            break;
    

    问题log(如果有)

    
    xxxxxxx
    
    
    opened by may7be 0
  • 提一个小bug

    提一个小bug

    GSYVideoView 类中的 setUp(String url, boolean cacheWithPlay, File cachePath, Map<String, String> mapHeadData, String title) 方法,是播放点击时,prepareVideo()自动触发的,但是在 prepareVideo()方法中,将 this.mMapHeadData 传入了setUp 方法中, setUp 方法中,将this.mMapHeadData.clear(),同时又操作 this.mMapHeadData.addAll(mapHeadData),这样做没有任何意义,因为他们是持有的同一个对象引用,导致 head必然被清空,代码改动很小,我已经在本地改动了。

    opened by panzhenglian 0
  • 关于进度条跳动的问题

    关于进度条跳动的问题

    val videoOptionModel = VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1) val list: MutableList<VideoOptionModel> = ArrayList() list.add(videoOptionModel) GSYVideoManager.instance().optionModelList = list

    我是默认的ijkplayer,并且这个代码我是设置了,但是在拖动进度条的时候,还是会往后回退一帧左右,但是在surfaceview滑动修改进度的时候,为什么就没有这个回退的问题?照理说,这是同样都是通过seekTo方法来修改视频进度的?

    opened by lybill 3
  • SystemPlayerManager 全屏和常规窗口切换出现短暂声音播放

    SystemPlayerManager 全屏和常规窗口切换出现短暂声音播放

    问题描述:

    使用 SystemPlayerManager 系统播放器,播放过程中暂停,暂停后进行全屏与常规窗口切换,会出现短暂的声音播放; 使用其他内核不会出现该问题

    出现问题的视频流

    Demo 简单播放->简单列表1->第二个视频

    其实第一个视频也会,但因为第一个视频没有背景声音、持续声音不长,刚好暂时的时间点没声音,就听不出

    问题机型/系统:

    例如 真机 Oppo FindX Android10

    GSY依赖版本

    例如 com.github.CarGuo.GSYVideoPlayer:GSYVideoPlayer:v8.3.1-release-jitpack

    Demo中的复现步骤

    1、进入 demo 后切换为系统内核; 2、打开 Demo 简单播放->简单列表1->第二个视频 3、点击播放,在声音比较频密的位置暂停(背景声音比较大、声音持续时间比较长的位置) 4、暂停后进行全屏与常规窗口切换,切换过程中会出现短暂声音播放;

    opened by ZDZN 1
  •  AndroidX Media3 will be the new home for ExoPlayer

    AndroidX Media3 will be the new home for ExoPlayer

    https://github.com/androidx/media https://developer.android.com/jetpack/androidx/releases/media3?hl=zh-cn

    Media3 是面向媒体支持库(包括 ExoPlayer)的新平台。首个 Alpha 版包含用于实现媒体用例的库的早期功能实现,包括: - ExoPlayer,适用于 Android 且易于自定义和扩展的应用级媒体播放器。- 用于公开和控制播放的媒体会话功能。这一新的会话模块使用与 ExoPlayer 相同的 Player 接口。- 用于构建媒体播放界面的界面组件。- 其他库中用于 ExoPlayer 的模块封装功能,例如通过 IMA SDK 插入广告。

    如需了解详情,请参阅 Media3 GitHub 项目。

    之前,ExoPlayer 托管在单独的 ExoPlayer GitHub 项目中。在 Media3 中,其软件包名称为 androidx.media3.exoplayer。我们计划在一段时间内继续维护和发布 ExoPlayer GitHub 项目,以便让应用有时间迁移到 Media3。Media3 取代了所有 ExoPlayer 模块,但旧版 media2 和 mediasession 扩展程序除外,后者已被新的 media3-session 模块取代。这可以实现播放器和媒体会话之间的直接集成,而无需使用适配器/连接器类。

    opened by ag2s20150909 1
Releases(v8.3.4-release-jitpack)
Owner
Shuyu Guo
《Flutter开发实战详解》作者,公众号 GSYTech,一个爱猫的程序猿老司机。一个兴趣使然的攻城喵,超级护发使者。Android、React Native、Flutter、Weex、Cordova、小程序。 偶尔撸下SpringBoot、vue。 码云同步地址:https://gitee.com/CarGuo
Shuyu Guo