jzvd / jzvideo Goto Github PK
View Code? Open in Web Editor NEW高度自定义的安卓视频框架 MediaPlayer exoplayer ijkplayer ffmpeg
License: MIT License
高度自定义的安卓视频框架 MediaPlayer exoplayer ijkplayer ffmpeg
License: MIT License
经过测试:当网络不佳视频中断直到恢复网络视频继续播放onStatePause、onStatePreparing、onStatePlaying、onStateError均没有调用
jzvd版本:'cn.jzvd:jiaozivideoplayer:6.4.1'
安卓版本:9.0
相关log:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.widget.FrameLayout.getContext()' on a null object reference
at xx.xxxx.xx.video.JZExoPlayer.void prepare()(JZExoPlayer.java:65)
at cn.jzvd.JZMediaManager$MediaHandler.void handleMessage(android.os.Message)(JZMediaManager.java:152)
at android.os.Handler.null dispatchMessage(null)(Handler.java:112)
at android.os.Looper.null loop(null)(Looper.java:216)
at android.os.HandlerThread.null run(null)(HandlerThread.java:65)
**需求描述
继承JzvdStd之后,不需要的控件要隐藏,如果删除,父类找不到空间id会闪退,这样做很不合理。目标是,删除父类引用的布局,不闪退。
需要思考研究是否有隐患,其他的地方有什么牵连。
**需求描述
在播放中如果wifi切换到流量,暂停视频,用dialog提醒用户,可以继续,可以release。如果继续播放调用start函数即可,播放内核会自动重新连接。
**其他app是否实现
头条
**截图或者小视频说明
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
at cn.jzvd.Jzvd.gotoScreenNormal(Jzvd.java:765)
at cn.jzvd.Jzvd.onAutoCompletion(Jzvd.java:451)
at cn.jzvd.JzvdStd.onAutoCompletion(JzvdStd.java:811)
at cn.jzvd.JZMediaSystem.lambda$onCompletion$7$JZMediaSystem(JZMediaSystem.java:144)
at cn.jzvd.JZMediaSystem$$Lambda$7.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)
**需求描述
这个需求本质上是对列表的操作。
如果需要缓存多个视频实现秒开,需要播放内核的支持。
**其他app是否实现
**截图或者小视频说明
**什么jzvd版本
7.2.0
**相关log是什么
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
at cn.jzvd.Jzvd.gotoScreenFullscreen(Jzvd.java:752)
at cn.jzvd.Jzvd.onClick(Jzvd.java:210)
at cn.jzvd.JzvdStd.onClick(JzvdStd.java:250)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
**demo是否有这个问题
**如何操作复现
ActivityListViewMultiHolder页面点击退出全屏按钮崩溃
**什么安卓版本,什么机型
**最好有截图或者视频说明情况
在播放竖屏视频的时候播放器容器两边留白部分,在小米手机上是黑色 在华为上是白色 有没有方法统一设置这个背景
**7.1.0版本
**log日志:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference
at cn.jzvd.JZMediaSystem.pause(JZMediaSystem.java:67)
**我的代码里调用如下:
是在全屏的dialog里播放的,弹出弹窗的时候就crash
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
video?.mediaInterface?.pause()
}
**安卓版本:9.0,华为手机
**需求描述
希望大神实现ijkplayer 硬解码失败后切换软解解码,这个功能还是挺不错的
https://github.com/pili-engineering/PLDroidPlayer
这个框架实现了这个功能,希望大神也可以实现一下
播放短视频时正常 但是播放长视频 大概十几分钟 之后就会报如下异常,测试视频地址:
http://img3.chouti.com/4cedb8d9-7e17-4971-a755-22378d711d90.mp4
2020-01-09 12:47:24.004 30553-30804/com.example.myapplication E/MediaPlayer: Error (1,-1004)
2020-01-09 12:47:24.009 30553-30553/com.example.myapplication E/JZVD: onError 1 - -1004 [72638395]
2020-01-09 12:47:26.816 30553-31050/com.example.myapplication E/ExtMediaPlayer-JNI: env->IsInstanceOf fails
2020-01-09 12:47:26.816 30553-31050/com.example.myapplication E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
**需求描述
checkout代码到4.*或者5.*版本,把播放中的loading加回来。
**需求描述
播放器有时候会播放期间播放错误或者画面静止,这时候能自动重新尝试播放吗?而不是手动点击播放失败按钮
**其他app是否实现
是
**截图或者小视频说明
**需求描述
列表滑动到时播放适当位置的视频。
**其他app是否实现
**截图或者小视频说明
There are two problems:
**需求描述
真实链接
http://tx2play1.douyucdn.cn/live/263824rvckg2QDjU.flv?uuid=
手机上就是显示加载的小圈不停加载
播放页面情况
其他格式h264可以播放
RecyclerView添加划出屏幕释放JZ 后,RecyclerView中的视频全屏播放返回也会释放掉JZ.
Z.
添加的代码:
rv_featured_video.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
@OverRide
public void onChildViewAttachedToWindow(View view) {
Log.e("initFeatureVideo", "setFeaturedVideo: 事件监听,可见播放");
}
@Override
public void onChildViewDetachedFromWindow(View view) {
JZVideoPlayer jzVideoPlayer = view.findViewById(R.id.jz_video);
if (jzVideoPlayer != null && JZVideoPlayer.CURRENT_JZVD != null &&
jzVideoPlayer.jzDataSource.containsTheUrl(JZVideoPlayer.CURRENT_JZVD.jzDataSource.getCurrentUrl())) {
if (JZVideoPlayer.CURRENT_JZVD != null && JZVideoPlayer.CURRENT_JZVD.screen != JZVideoPlayer.SCREEN_FULLSCREEN) {
Log.e("initFeatureVideo", "setFeaturedVideo: 事件监听,不可见停止播放"+JZVideoPlayer.CURRENT_JZVD.screen );
JZVideoPlayer.releaseAllVideos();
//JZVideoPlayer.goOnPlayOnPause();
//Jzvd.releaseAllVideos();
}
}
}
});
全屏返回后不能继续播放问题
**需求描述
当前实现自动循环播放,当服务器发送更新指令后,使用新的列表播放,使用新的列表播放时,第一次会一直显示加载,貌似等第一个视频播放完(界面上没有视频)的时间后,第二个视频才能显示,这时加载消失
**截图或者小视频说明
**什么jzvd版本
7.0.5
**相关log是什么
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.lyc.player/com.lyc.player.ui.activity.SplashActivity}: java.lang.ClassNotFoundException: Didn't find class "com.lyc.player.ui.activity.SplashActivity" on path: DexPathList[[zip file "/data/app/com.lyc.player-GRewxizQR5yKctqqjYrhqA==/base.apk"]
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.lyc.player.ui.activity.SplashActivity" on path: DexPathList[[zip file "/data/app/com.lyc.player-GRewxizQR5yKctqqjYrhqA==/base.apk"],nativeLibraryDirectories=[/data/app/com.lyc.player-GRewxizQR5yKctqqjYrhqA==/lib/arm64, /system/lib64, /system/vendor/lib64]]
//只加了implementation 'cn.jzvd:jiaozivideoplayer:7.0.5'
大致就是不能打开原来的闪屏页面(也就是启动页面),本来可以
**demo是否有这个问题
毫无问题
**如何操作复现
https://gitee.com/wayne0928/myvideo
直接安装会报错
**什么安卓版本,什么机型
android8.0
三星s7国行
**最好有截图或者视频说明情况
部署好直接就是"xxx已停止",具体情况就这些
老哥麻烦看下,谢了
**需求描述
**其他app是否实现
**截图或者小视频说明
**什么jzvd版本
**是否和安卓版本有关系,什么版本
**是否和特定品牌的手机机型有关系,什么机型
**相关log是什么
**复现流程
**最好有截图或者视频说明情况
**需求描述
本地视频是通过ACTION_VIEW的方式将Uri传递过来的,但是在Jzvd中并未找到Uri相关的接口,直接将intent.getData().getPath()或者intent.getData().toString()传递过去无法播放。
**其他app是否实现
**截图或者小视频说明
**需求描述
在jzvd的onTouch函数中写逻辑。
**其他app是否实现
**截图或者小视频说明
**什么jzvd版本
**相关log是什么
**demo是否有这个问题
**如何操作复现
**什么安卓版本,什么机型
**最好有截图或者视频说明情况
Hi and thanks for your amazing work!
I'm looking to play a stream video.
It's working but using startVideo()
the player play the begining of the stream and I would like to play the end of the video to be in the live time.
How can I do that ?
添加依赖和混淆之后在xml中无法使用视频控件
保存进度后继续播放总是会先显示前几帧再跳转,请问如何解决?
敬爱的作者大大,项目引入饺子播放器,播放在线视频超过100M就会一直转圈圈,这种该怎么处理?
现在jzvd外面包一个container,这个原则上是多余的,应该去掉。
**需求描述
Demo首页添加按钮,点击按钮进入新建的Activity,添加两个jzvd,一个播放Assert,一个播放本地文件的视频。
删除ActivityApi中关于播放本地视频的代码,删除customActivity中播放asset的代码。
版本:cn.jzvd:jiaozivideoplayer:6.4.1
手机:Xiaomi Redmi K30
报错一:
ExoPlayerImplInternal: Internal runtime error.
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2726)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:887)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:664)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:536)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:303)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:224)
at android.os.HandlerThread.run(HandlerThread.java:67)
报错二:
E/ExoPlayerImplInternal: Stop failed.
java.lang.IllegalStateException
at android.media.MediaCodec.native_stop(Native Method)
at android.media.MediaCodec.stop(MediaCodec.java:2147)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:608)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.releaseCodec(MediaCodecVideoRenderer.java:508)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:562)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:377)
at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:153)
at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:983)
at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:771)
at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:742)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:358)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:224)
at android.os.HandlerThread.run(HandlerThread.java:67)
**需求描述
如题
需要用到android5.0的动画效果,有代码已经实现的代码参考。
**其他app是否实现
**截图或者小视频说明
怎么从指定位置播放
**什么jzvd版本
7.0.5
**相关log是什么
2019-12-31 18:06:21.766 8330-8699/com.android.benlailife.activity E/CrashReport: java.lang.IllegalArgumentException: surfaceTexture must not be null
at android.view.Surface.(Surface.java:219)
at com.android.benlai.view.video.JZMediaIjk.lambda$prepare$0$JZMediaIjk(JZMediaIjk.java:70)
at com.android.benlai.view.video.-$$Lambda$JZMediaIjk$UI-nD8X_LbpC8ryEPMkSuh36Nqc.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
**demo是否有这个问题
**如何操作复现
播放过程中,调用changeUrl启动更换视频,应用崩溃
**什么安卓版本,什么机型
android 10 , oneplus7pro
**最好有截图或者视频说明情况
**需求描述
设计上一个jzvd只setUp一次,然后需要更换其他url的时候调用changeUrl函数,需要测试在loading状态、播放状态、暂停状态、播放完毕状态、error状态、播放loading状态,下调用changeUrl均能正常播放下一个url。
可以参考切换清晰度的逻辑,切换清晰度本质上就是changeUrl。这个函数有bug。
**需求描述
全屏的时候,添加锁按钮,点击锁按钮屏幕被锁住,无法操作,再次点击解锁。
**其他app是否实现
微信优酷等
**截图或者小视频说明
播放竖屏的视频,切换全屏之后再还回来视频就被拉伸了
合理解答issue的问题,关闭issue之后送2000JZT。
如果写代码解决问题,JZT另算。
**什么jzvd版本
**相关log是什么
**demo是否有这个问题
**如何操作复现
**什么安卓版本,什么机型
**最好有截图或者视频说明情况
是android studio默认的设置,随时cmd+opt+L格式化代码
**什么jzvd版本
**相关log是什么
**demo是否有这个问题
**如何操作复现
**什么安卓版本,什么机型
**最好有截图或者视频说明情况
Hi, I try JzMediaSystem and JZMediaIjk, both can resume to the last position when pause and back to activity. But with JzMediaExo, it restart from the begining.
How can I do that with JzMediaExo ?
Thanks
机顶盒无法实现倍数播放和进度条拖动播放
**需求描述
**其他app是否实现
**截图或者小视频说明
合理提出issue,解答后提出者送2000JZT。
**什么jzvd版本
7.0.5 7.1.0 ---Demo
**相关log是什么
12-25 16:07:58.903 751-20361/? I/NuPlayer: performReset
12-25 16:07:58.903 751-20361/? I/NuPlayer: performReset: mRendererLooper->stop()
12-25 16:07:58.903 751-20361/? I/NuPlayer: performReset: mSource->stop()
12-25 16:07:58.903 751-20361/? I/GenericSource: stop()
12-25 16:07:58.903 19656-20424/cn.jzvd.demo W/MediaPlayer: setScreenOnWhilePlaying(true) is ineffective without a SurfaceHolder
12-25 16:07:58.905 751-1803/? I/NuPlayerDriver: setDataSource(0xf1d695e0) url(http://jzvd.nathen.cn/f07fa9fddd1e45a6ae1570c7fe7967c1/c6db82685b894e25b523b1cb28d79f2e-5287d2089db37e62345123a1be272f8b.mp4)
12-25 16:07:58.905 751-20361/? I/NuPlayer: performReset completed!
12-25 16:07:58.905 751-1803/? I/ExtendedGenericSource: CreatePersistentSource uid 10105 url http://jzvd.nathen.cn/f07fa9fddd1e45a6ae1570c7fe7967c1/c6db82685b894e25b523b1cb28d79f2e-5287d2089db37e62345123a1be272f8b.mp4
12-25 16:07:58.906 751-1803/? I/ExtendedGenericSource: Persistent source creation is disabled by property
12-25 16:07:58.906 751-1803/? I/NuPlayerDriver: setDataSource(url) wait mLock
12-25 16:07:58.906 751-751/? I/NuPlayerDriver: reset(mState = 0) get mLock
12-25 16:07:58.906 751-751/? I/NuPlayerDriver: ~NuPlayerDriver(0xf1d693a0)
12-25 16:07:58.906 751-20425/? I/NuPlayerDriver: notifySetDataSourceCompleted err = 0
12-25 16:07:58.906 751-751/? I/NuPlayerDriver: ~NuPlayerDriver(0xf1d693a0) end
12-25 16:07:58.906 751-1803/? I/NuPlayerDriver: setDataSource(url) get mLock
12-25 16:07:58.907 751-1803/? I/NuPlayerDriver: prepareAsync(0xf1d695e0)
12-25 16:07:58.907 19656-20424/cn.jzvd.demo W/System.err: java.lang.IllegalArgumentException: surfaceTexture must not be null
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at android.view.Surface.(Surface.java:140)
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at cn.jzvd.JZMediaSystem.lambda$prepare$0$JZMediaSystem(JZMediaSystem.java:53)
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at cn.jzvd.-$$Lambda$JZMediaSystem$1SfpWnrQJjBakrZ3K2nGWWoyock.run(lambda)
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at android.os.Looper.loop(Looper.java:179)
12-25 16:07:58.908 19656-20424/cn.jzvd.demo W/System.err: at android.os.HandlerThread.run(HandlerThread.java:61)
**demo是否有这个问题
demo 7.0.5 , 7.1.0 ,切换清晰度后都无法正常播放
**如何操作复现
demo 必现
**什么安卓版本,什么机型
oppoR9S 小米8
**最好有截图或者视频说明情况
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.