Skip to content
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

淦,到底IJKSDLGLView主线程崩溃问题怎么才能够解决呀,网上说的都试过 #5339

Open
libinok opened this issue Oct 15, 2021 · 18 comments

Comments

@libinok
Copy link

libinok commented Oct 15, 2021

ijk现在又不怎么更新了,每次上线崩溃率第一就是这个ijk定位在的IJKSDLGLView里面,真是烦死,想弃用了,真够拉的

@leeway1208
Copy link

哈哈哈 是isApplicationActive这个方法吗?

@libinok
Copy link
Author

libinok commented Oct 18, 2021

哈哈哈 是isApplicationActive这个方法吗?

就是ijk在非主线程操作了UI导致的崩溃,但是网上没有具体全面修复的案例,总会有这方面的问题,我在几个sdlview里面强制在主线程了,但是又会造成卡死,真拿

@leeway1208
Copy link

改成这个试试

- (void)isApplicationActive:(void(^)(BOOL isActive)) completion
{

    dispatch_async(dispatch_get_main_queue(), ^{
        switch (self->_applicationState) {
            case IJKSDLGLViewApplicationForegroundState:
                completion(YES);
            case IJKSDLGLViewApplicationBackgroundState:
                completion(NO);
            default: {
                UIApplicationState appState = [UIApplication sharedApplication].applicationState;

                switch (appState) {
                    case UIApplicationStateActive:
                        completion(YES);
                    case UIApplicationStateInactive:
                    case UIApplicationStateBackground:
                    default:
                        completion(NO);
                }
            }
        }

    });
}

@libinok
Copy link
Author

libinok commented Oct 18, 2021

改成这个试试

- (void)isApplicationActive:(void(^)(BOOL isActive)) completion
{

    dispatch_async(dispatch_get_main_queue(), ^{
        switch (self->_applicationState) {
            case IJKSDLGLViewApplicationForegroundState:
                completion(YES);
            case IJKSDLGLViewApplicationBackgroundState:
                completion(NO);
            default: {
                UIApplicationState appState = [UIApplication sharedApplication].applicationState;

                switch (appState) {
                    case UIApplicationStateActive:
                        completion(YES);
                    case UIApplicationStateInactive:
                    case UIApplicationStateBackground:
                    default:
                        completion(NO);
                }
            }
        }

    });
}
  • (void)isApplicationActive:(void(^)(BOOL isActive)) completion
    {

      switch (self->_applicationState) {
          case IJKSDLGLViewApplicationForegroundState:
              completion(YES);
          case IJKSDLGLViewApplicationBackgroundState:
              completion(NO);
          default: {
    

    dispatch_async(dispatch_get_main_queue(), ^{
    UIApplicationState appState = [UIApplication sharedApplication].applicationState;

    });
    switch (appState) {
    case UIApplicationStateActive:
    completion(YES);
    case UIApplicationStateInactive:
    case UIApplicationStateBackground:
    default:
    completion(NO);
    }
    }
    }

}

这里只需要加这个就行了,早就试过了

@poholo
Copy link

poholo commented Oct 18, 2021

#4683

jkplayer目前维护感觉比较慢,估计开源方已倦于5-7年的无休止的更新迭代。MCIJKPlayer是解决xcode 9.0后,系统对于UIKit某些方法必须主线程检查,造成的线程等待问题。

如果你的项目使用的IJKPlayer, 你也遇到线程卡顿问题,那请使用MCIJKPlayer, 集成方法
已经编译好的IJKMediaFramework.framework MCIJKPlayer

@m3u8playlist
Copy link

感觉比较慢,估计

kpi产物,内部用的ijk版本都好新了,这个开源版已经荒废了

@libinok
Copy link
Author

libinok commented Nov 2, 2021

#4683

jkplayer目前维护感觉比较慢,估计开源方已倦于5-7年的无休止的更新迭代。MCIJKPlayer是解决xcode 9.0后,系统对于UIKit某些方法必须主线程检查,造成的线程等待问题。

如果你的项目使用的IJKPlayer, 你也遇到线程卡顿问题,那请使用MCIJKPlayer, 集成方法 已经编译好的IJKMediaFramework.framework MCIJKPlayer

我改了FFmpeg的源码,适配我们自己的拉流解析,所以估计不好使用你这个

@libinok
Copy link
Author

libinok commented Nov 2, 2021

感觉比较慢,估计

kpi产物,内部用的ijk版本都好新了,这个开源版已经荒废了

估计是,内部肯定一直在更新,不然这么大的视频网站,不可能遗留这么多问题不修复,但是开源的这个,最近几年都基本不动了。

@freyzou
Copy link

freyzou commented Dec 22, 2021

经常卡死在 【IJKSDLGLView lockGLActive】,怎么解?

@poholo
Copy link

poholo commented Jan 6, 2022

#4683
jkplayer目前维护感觉比较慢,估计开源方已倦于5-7年的无休止的更新迭代。MCIJKPlayer是解决xcode 9.0后,系统对于UIKit某些方法必须主线程检查,造成的线程等待问题。
如果你的项目使用的IJKPlayer, 你也遇到线程卡顿问题,那请使用MCIJKPlayer, 集成方法 已经编译好的IJKMediaFramework.framework MCIJKPlayer

我改了FFmpeg的源码,适配我们自己的拉流解析,所以估计不好使用你这个

这块代码修改只是IJKSDLGLView, 并未涉及到FFmpeg底层, 不要使用 IJKMediaFramework.framework MCIJKPlayer这个打包好的库, 而是将我修改IJKSDLGLView替换你的IJKSDLGLView,

@poholo
Copy link

poholo commented Jan 6, 2022

经常卡死在 【IJKSDLGLView lockGLActive】,怎么解?

#4683
pod 'MCIJKPlayer'

@luoshuai-123
Copy link

卡死在【IJKSDLGLView lockGLActive】,怎么解?

卡死在【IJKSDLGLView lockGLActive】,怎么解?

大佬,这个问题解决了吗?

@poholo
Copy link

poholo commented Mar 14, 2022

卡死在【IJKSDLGLView lockGLActive】,怎么解?

卡死在【IJKSDLGLView lockGLActive】,怎么解?

大佬,这个问题解决了吗?

#4683

https://github.com/poholo/MCIJKPlayer
pod 'MCIJKPlayer'

@lucking
Copy link

lucking commented Mar 27, 2023

#4683
jkplayer目前维护感觉比较慢,估计开源方已倦于5-7年的无休止的更新迭代。MCIJKPlayer是解决xcode 9.0后,系统对于UIKit某些方法必须主线程检查,造成的线程等待问题。
如果你的项目使用的IJKPlayer, 你也遇到线程卡顿问题,那请使用MCIJKPlayer, 集成方法 已经编译好的IJKMediaFramework.framework MCIJKPlayer

我改了FFmpeg的源码,适配我们自己的拉流解析,所以估计不好使用你这个

这块代码修改只是IJKSDLGLView, 并未涉及到FFmpeg底层, 不要使用 IJKMediaFramework.framework MCIJKPlayer这个打包好的库, 而是将我修改

IJKSDLGLView替换你的IJKSDLGLView,
IJKHanleInMainThread
目前这两种方式我都试过,静态直接播放没问题,一旦有其他操作,对线程有影响,还是有问题

@lucking
Copy link

lucking commented Mar 27, 2023

ijk现在又不怎么更新了,每次上线崩溃率第一就是这个ijk定位在的IJKSDLGLView里面,真是烦死,想弃用了,真够拉的

IJKSDLGLView-Thread
这样改不会崩,不会卡(但是在2处,首次播放依然显示要在主线程)

IJK sdk 编译 和 问题讨论,加微信群 13022155071

@poholo
Copy link

poholo commented Mar 28, 2023

ijk现在又不怎么更新了,每次上线崩溃率第一就是这个ijk定位在的IJKSDLGLView里面,真是烦死,想弃用了,真够拉的

IJKSDLGLView-Thread 这样改不会崩,不会卡(但是在2处,首次播放依然显示要在主线程)

IJK sdk 编译 和 问题讨论,加微信群 13022155071

见仁见智,我提供的一种解决方式,在本人项目中表现良好。
ijkplayer源码修改见:https://github.com/poholo/ijkplayer (源码修改见几个commit)
ijkplayer打包好的库:https://github.com/poholo/MCIJKPlayer pod 'MCIJKPlayer'
MCPlayerKit通用测试库:https://github.com/poholo/MCPlayerKit (里面有现成的Demo)
有问题提pr,本人有时间会和大家探讨,感谢

@cikichen
Copy link

ijk现在又不怎么更新了,每次上线崩溃率第一就是这个ijk定位在的IJKSDLGLView里面,真是烦死,想弃用了,真够拉的

IJKSDLGLView-Thread 这样改不会崩,不会卡(但是在2处,首次播放依然显示要在主线程)
IJK sdk 编译 和 问题讨论,加微信群 13022155071

见仁见智,我提供的一种解决方式,在本人项目中表现良好。 ijkplayer源码修改见:https://github.com/poholo/ijkplayer (源码修改见几个commit) ijkplayer打包好的库:https://github.com/poholo/MCIJKPlayer pod 'MCIJKPlayer' MCPlayerKit通用测试库:https://github.com/poholo/MCPlayerKit (里面有现成的Demo) 有问题提pr,本人有时间会和大家探讨,感谢

可以,我直接用你的IJKSDLGLView替换了官方的,没有卡主线程问题了,但是我只是播放rtsp流,没有拖动的操作

@poholo
Copy link

poholo commented May 21, 2024

ijk现在又不怎么更新了,每次上线崩溃率第一就是这个ijk定位在的IJKSDLGLView里面,真是烦死,想弃用了,真够拉的

IJKSDLGLView-Thread 这样改不会崩,不会卡(但是在2处,首次播放依然显示要在主线程)
IJK sdk 编译 和 问题讨论,加微信群 13022155071

见仁见智,我提供的一种解决方式,在本人项目中表现良好。 ijkplayer源码修改见:https://github.com/poholo/ijkplayer (源码修改见几个commit) ijkplayer打包好的库:https://github.com/poholo/MCIJKPlayer pod 'MCIJKPlayer' MCPlayerKit通用测试库:https://github.com/poholo/MCPlayerKit (里面有现成的Demo) 有问题提pr,本人有时间会和大家探讨,感谢

可以,我直接用你的IJKSDLGLView替换了官方的,没有卡主线程问题了,但是我只是播放rtsp流,没有拖动的操作

RTSP 是直播流吧,直播流就没法seek了,还是你们的RTSP支持seek?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants