-
Notifications
You must be signed in to change notification settings - Fork 8.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
解决ijk第一次初始化时异步线程调用主线程造成的线程卡顿问题 #4683
base: master
Are you sure you want to change the base?
Conversation
poholo
commented
Apr 10, 2019
- 修正IJKSDLGLView view调用方式
- 编译方式去除armv7 armv7s
- 编译方式用openssl
it works! Thanks. |
Does it fix the memory leak? |
It hasn't happened yet.
It hasn't happened yet. |
能说的详细一下吗?谢谢 |
这个问题,主要原因是xcode版本升级导致的,UIKit以前非必须主线程调用的(比如.layer ), 现在必须主线程调用,异步线程调用会导致线程检查等待,故本次的修改主要是对IJKSDLGLView中被检查到的UIKit调用全部用主线程调用。 |
ios/IJKMediaPlayer/IJKMediaPlayer/ijkmedia/ijksdl/ios/IJKSDLGLView.m
Outdated
Show resolved
Hide resolved
观看的时候 快速seek多次会崩溃 , ...我用官方的没事 |
什么机型? 用我编译好的framework看看呢 ? |
...用不了. 你确认没发错?IJKMediaFramework.framework |
|
100%复现了, .... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hope this will help someone
// do not lock AudioQueueStop, or may be run into deadlock | ||
AudioQueueStop(_audioQueueRef, true); | ||
AudioQueueDispose(_audioQueueRef, true); | ||
IJKMainThredExecute(^{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里会导致野指针崩溃,因AudioQuueueDispose 在主队列的执行时间不确定,可能IJKSDLAudioQueueController的实例已经被释放,但AudioQueueDispose还没执行,导致IJKSDLAudioQueueOuptutCallback回调时访问已释放的IJKSDLAudioQueueController的实例,引起崩溃;
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
测试场景:
播放资源切换,因为ijkffmoviecontroller的设计,实际上每次播放一个新的资源都是创建一个新的ijkffmoviecontroller的实例
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
试一试
[self.player stop];
[self.player shutdown];
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
我也遇到这个问题了,请问解决了么
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
我今天遇到了这个问题,有解决的吗?
是的, 我是两个 url 之间切换 循环, 创建 释放 ijk......
是的, 我是两个 url 之间切换 循环, 创建 释放 ijk...... |
https://git.dev.tencent.com/lp_mr/MCIJKPlayer.git |
我这边遇到一个问题是播放本地的视频时没有声音,播放进度一直是0 |
多找几个视频地址试一下(看看你手机的媒体音量设置模式等。。),我没发现这个问题。 |
https://i.loli.net/2019/08/03/dTqfU9hI6riv1Bg.png 显示模式改了?上面是你的 下面的默认的 |
你好 你这个显示模式有问题啊 视频变得很小 |
麻烦贴一下视频地址 感谢
| |
马建成
邮箱:[email protected]
|
签名由 网易邮箱大师 定制
在2019年08月31日 10:29,BinHuang 写道:
图1是默认框架的IJKMPMovieScalingModeAspectFit 会延伸到屏幕宽度
图2是你的框架IJKMPMovieScalingModeAspectFit 视频缩小了
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
|
这块的问题是子view没有随着父view的frame变化而自适应,源码是demo层做了autoresizingMask,现在我把这句直接提到IJKFFMovieController中。命中语句
@YellBinn @chaocharleswang 当然也可以直接用我打的pod
|
@chaocharleswang 麻烦贴一下视频地址 |
@poholo 将才测试时替换出现错误,问题解决了,谢谢! |
@poholo 我观察到另外一个问题:视图变小的版本在xcode 10和xcode 11都能正常运行。
或者
错误都出现在下面的语句:
错误出现的操作是缩放移动视频播放界面,操作都是在iPhone X上进行的 |
@chaocharleswang 你试试把IJKSDLGLView中304行注释掉看看
其他我没有变动什么 |
@poholo 注释后问题确实消失了,只不过视图又变回小视图了 |
@chaocharleswang 帮忙验证一下,感谢! |
@poholo 视图正常,移动播放窗口xcode 11还是会出现同样的错误,而xcode 10却一切正常 |
@chaocharleswang 我去下个测试版的xcode |
@poholo 我把你改过的code整合到我的项目中,用户反馈最多的crash是下面这一个:
这是通过xcode 10提交的,和xcode 11无关
|
嗯,多少的崩溃率 ?
在 2019-09-06 00:25:27,"Charles" <[email protected]> 写道:
@poholo 我把你改过的code整合到我的项目中,用户反馈最多的错误是下面这一个:
Thread 21 name:
Thread 21 Crashed:
0 libGPUSupportMercury.dylib 0x0000000212b0ffe4 gpus_ReturnNotPermittedKillClient + 12 (gpui_client_io.c:78)
1 AGXGLDriver 0x00000002171bced8 glrKillClient + 468 (agxu_kill_client.cpp:175)
2 libGPUSupportMercury.dylib 0x0000000212b10fac gpusSubmitDataBuffers + 176 (gpui_context.c:0)
3 AGXGLDriver 0x00000002171be404 SubmitPackets(AGXContextRec*) + 292 (agxu_gl_command.cpp:93)
4 GLEngine 0x00000002183cd234 gliPresentViewES_Exec + 184 (gli_drawable_es.c:526)
5 OpenGLES 0x00000001f9d10aa4 -[EAGLContext presentRenderbuffer:] + 80 (eagl_context.m:594)
6 TubePlayer 0x0000000100a5da20 -[IJKSDLGLView displayInternal:] + 456 (IJKSDLGLView.m:378)
7 TubePlayer 0x0000000100a5d7c0 -[IJKSDLGLView display:] + 204 (IJKSDLGLView.m:340)
8 TubePlayer 0x0000000100a6e9b8 vout_display_overlay + 300 (ijksdl_vout_ios_gles2.m:0)
9 TubePlayer 0x0000000100a58d30 video_display2 + 348 (ff_ffplay.c:911)
10 TubePlayer 0x0000000100a56ec4 video_refresh_thread + 1868 (ff_ffplay.c:1416)
11 TubePlayer 0x0000000100a5b130 SDL_RunThread + 40 (ijksdl_thread_ios.m:32)
12 libsystem_pthread.dylib 0x00000001f67242c0 _pthread_body + 128 (pthread.c:857)
13 libsystem_pthread.dylib 0x00000001f6724220 _pthread_start + 44 (pthread.c:884)
14 libsystem_pthread.dylib 0x00000001f6727cdc thread_start + 4
这是通过xcode 10提交的,和xcode 11无关
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
@poholo 现在有的数据是前者和后者之间相比为15:1 |
请问作者 这个能支持播放https 和MP4格式的么 |
支持,编译加了openssl库
在 2019-09-06 11:51:58,"mengzhe360" <[email protected]> 写道:
https://git.dev.tencent.com/lp_mr/MCIJKPlayer.git
已做优化,看看是否还是有同样的问题。
请问作者 这个能支持播放https 和MP4格式的么
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
感谢回复
| |
mengzhe360
|
|
[email protected]
|
签名由网易邮箱大师定制
在2019年09月6日 11:57,littleplayer<[email protected]> 写道:
支持,编译加了openssl库
在 2019-09-06 11:51:58,"mengzhe360" <[email protected]> 写道:
https://git.dev.tencent.com/lp_mr/MCIJKPlayer.git
已做优化,看看是否还是有同样的问题。
请问作者 这个能支持播放https 和MP4格式的么
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
请问只要滑动一点播放屏幕直接就停止播放了,上面的是打印的日志,直接关闭播放器了,请问这个情况遇到怎么解
| |
mengzhe360
|
|
[email protected]
|
签名由网易邮箱大师定制
在2019年09月6日 11:57,littleplayer<[email protected]> 写道:
支持,编译加了openssl库
在 2019-09-06 11:51:58,"mengzhe360" <[email protected]> 写道:
https://git.dev.tencent.com/lp_mr/MCIJKPlayer.git
已做优化,看看是否还是有同样的问题。
请问作者 这个能支持播放https 和MP4格式的么
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
更改player的frame 会crash
謝謝回復,非常感謝啊
| |
mengzhe360
|
|
[email protected]
|
签名由网易邮箱大师定制
在2019年12月3日 15:52,littleplayer<[email protected]> 写道:
https://github.com/poholo/MCPlayerKit 用这个测试一下
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|