作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前正在编写一个从影片剪辑中提取帧的应用程序。我设计它以便提取将在单独的线程上完成,以防止应用程序卡住。提取过程本身会占用大量资源,但在模拟器中使用时效果很好。但是,在为 iPad 构建它时存在问题。当我执行另一个 Action 时(我告诉我的 AV 播放器在我提取帧的同时播放),线程意外停止工作,我相信它正在被杀死。
我认为这是因为我使用了很多资源,但不完全确定。
这是我的问题:1. 我怎么知道我的线程是否/为什么停止?2. 如果真的是加工过度怎么办?我真的需要执行此操作。
这是我使用的一些代码:创建线程:
[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];
我会发布您需要的任何信息,非常感谢!
更新我现在正在使用 GCD,它会为我填充线程。但是操作系统仍然会杀死线程。
我确切地知道它发生的时间。当我告诉我的 [AVplayer play] 时;它会杀死线程。
这个问题只发生在实际的 iPad 上,而不是模拟器上
最佳答案
在我看来,您正试图同时解码两个视频剪辑。由于 iPad 基于硬件的解码特性,它一次只能支持一个解码过程。当您播放新项目时,旧项目将被取消。这可以解释为什么它在模拟器中有效,但在设备上无效。
至于解决方案,您可以改用像libav这样的纯软件解码器。 (GPL) 或 CoreAVC SDK (商业的)。这样您就不会干扰硬件解码器的播放。
关于iphone - 线程正在被操作系统杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042749/
我是一名优秀的程序员,十分优秀!