meui8.2怎么recme录屏官网

最近自己在搞全局截屏,抓取屏幕的方法很多,但是大多都是抓取UIView的,或者只能抓取应用window的,当程序进入后台的时候就没法抓取手机桌面的,搜了很多也没有抓取全局屏幕的,只有一个利用硬件缓冲区的方式来抓取全局屏幕的方法,需要用到苹果的私有API。主要是IOKIT IOMobileFramebuffer IOSurface 三个framework、因为需要修改一些地方才可以用使用。下面我就把我整理的代码写上来,供大家参考使用#import &IOMobileFramebuffer.h&
#import &IOKit/IOKitLib.h&
#import &IOSurface/IOSurface.h&
#import &QuartzCore/QuartzCore.h&
IOReturn IOSurfaceLock(IOSurfaceRef buffer, uint32_t options, uint32_t *seed);
IOReturn IOSurfaceUnlock(IOSurfaceRef buffer, uint32_t options, uint32_t *seed);
size_t IOSurfaceGetWidth(IOSurfaceRef buffer);
size_t IOSurfaceGetHeight(IOSurfaceRef buffer);
IOSurfaceRef IOSurfaceCreate(CFDictionaryRef properties);
void *IOSurfaceGetBaseAddress(IOSurfaceRef buffer);
size_t IOSurfaceGetBytesPerRow(IOSurfaceRef buffer);
extern const CFStringRef kIOSurfaceAllocS
extern const CFStringRef kIOSurfaceW
extern const CFStringRef kIOSurfaceH
extern const CFStringRef kIOSurfaceIsG
extern const CFStringRef kIOSurfaceBytesPerR
extern const CFStringRef kIOSurfaceBytesPerE
extern const CFStringRef kIOSurfacePixelF
kIOSurfaceLockReadOnly
kIOSurfaceLockAvoidSync =0x
UIImage * screenshot(void);
UIImage * screenshot(){
IOMobileFramebufferConnection
kern_return_t
CoreSurfaceBufferRef screenSurface = NULL;
io_service_t framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault,IOServiceMatching("AppleH1CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault,IOServiceMatching("AppleM2CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault,IOServiceMatching("AppleCLCD"));
result = IOMobileFramebufferOpen(framebufferService, mach_task_self(), 0, &connect);
result = IOMobileFramebufferGetLayerDefaultSurface(connect, 0, &screenSurface);
IOSurfaceLock((IOSurfaceRef)screenSurface, 0x, &aseed);
size_t width = IOSurfaceGetWidth((IOSurfaceRef)screenSurface);
size_t height = IOSurfaceGetHeight((IOSurfaceRef)screenSurface);
CFMutableDictionaryRef
size_t pitch = width*4, size = width*height*4;
int bPE=4;
char pixelFormat[4] = {'A','R','G','B'};
dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(dict, kIOSurfaceIsGlobal, kCFBooleanTrue);
CFDictionarySetValue(dict, kIOSurfaceBytesPerRow, CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt32Type,
CFDictionarySetValue(dict, kIOSurfaceBytesPerElement, CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt32Type,
CFDictionarySetValue(dict, kIOSurfaceWidth, CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt32Type,
CFDictionarySetValue(dict, kIOSurfaceHeight, CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt32Type,
&height));
CFDictionarySetValue(dict, kIOSurfacePixelFormat, CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt32Type,
pixelFormat));
CFDictionarySetValue(dict, kIOSurfaceAllocSize, CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt32Type,
IOSurfaceRef destSurf = IOSurfaceCreate(dict);
IOSurfaceAcceleratorRef outA
IOSurfaceAcceleratorCreate(NULL, 0, &outAcc);
IOSurfaceAcceleratorTransferSurface(outAcc, (IOSurfaceRef)screenSurface, destSurf, dict,NULL);
IOSurfaceUnlock((IOSurfaceRef)screenSurface, kIOSurfaceLockReadOnly, &aseed);
CFRelease(outAcc);
CGDataProviderRef provider =
CGDataProviderCreateWithData(NULL,
IOSurfaceGetBaseAddress(destSurf),
(width * height *4), NULL);
CGImageRef cgImage = CGImageCreate(width, height, 8,
8*4, IOSurfaceGetBytesPerRow(destSurf),
CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipFirst |kCGBitmapByteOrder32Little,provider,NULL, YES, kCGRenderingIntentDefault);
UIImage *image = [UIImage imageWithCGImage:cgImage];
上面的这段代码有个问题也许大家会发现,就是IOSurfaceRef(destSurf)的释放问题,这个东西释放早了录不下屏,晚了内存会在几秒内崩溃,所以需要在用完用
CFRelease立即释放。血的教训。
编译时你会发现,编译出错了,因为IOSurfaceAcceleratorRef这个定义和IOSurfaceAcceleratorCreate,IOSurfaceAcceleratorTransferSurface这个两个函数你找不到,是因为最初的编辑者少上传了一个头文件导致的,下面我就把这个头文件给贴上来:
// IOSurfaceAccelerator.h
#ifndef _IOSURFACE_ACCELERATOR_H
#define _IOSURFACE_ACCELERATOR_H 1
#include &IOSurface/IOSurfaceAPI.h&
#include &IOKit/IOReturn.h&
#if __cplusplus
extern "C" {
typedef IOReturn IOSurfaceAcceleratorR
kIOSurfaceAcceleratorSuccess = 0,
typedef struct __IOSurfaceAccelerator *IOSurfaceAcceleratorR
IOSurfaceAcceleratorReturn IOSurfaceAcceleratorCreate(CFAllocatorRef allocator, uint32_t type, IOSurfaceAcceleratorRef *outAccelerator);
IOSurfaceAcceleratorReturn IOSurfaceAcceleratorTransferSurface(IOSurfaceAcceleratorRef accelerator, IOSurfaceRef sourceSurface, IOSurfaceRef destSurface, CFDictionaryRef dict, void *unknown);
#if __cplusplus
就是它了,把它拷贝下去,写到IOSurfaceAccelerator.h中,并且放到headers/IOSurface目录下,修改一下IOSurface.h文件,在文件最后添加上,
#include &IOSurface/IOSurfaceAccelerator.h&
就算完工了。剩下的就是编译了连接了。
连接的时候,你需要添加IOKit.framework,IOMobileFramebuffer.framework和IOSurface.framework这三个包,才能够顺利的编译过去。
文章前半部分引用了这个shenyi0106文章解决了我的
IOSurfaceAcceleratorRef找不到的问题。代码是我目前正在使用的内容。希望能对你们遇到同样问题的人有点帮助
稍后给上修改过的头文件
&pre name="code" class="html"&&a target=_blank href="http://download.csdn.net/detail/benyoulai5/9058913" target="_blank"&这里给上头文件&/a&
iOS后台抓取全局屏幕的实现
iOS开发-检测用户截屏, 并获取所截图片
iOS11 如何防止用户录屏?
IOS 一个很好的录制屏幕实现IOS功能
iOS捕捉屏幕截屏事件
没有更多推荐了,如何用 Android 手机完美录屏?收下这份「录屏 + 直播」全面指南 - 为程序员服务
如何用 Android 手机完美录屏?收下这份「录屏 + 直播」全面指南
好几年前,手机的性能还不像现在这样「过剩」。录屏一般只是用来办公,或者极少部分玩家用于游戏视频的保存「Android 4.0 以下的手机边录屏边玩游戏那叫一个酸爽」,录屏分辨率和码率连差强人意都说不上。
随着近三年来手游的迅速普及加上已经不是瓶颈的手机性能,越来越多的手机游戏用户也开始从分享图片文字转变为分享自己各种「超神时刻」的精彩小视频,又或者使用自己的手机直播 XX 荣耀,阴 X 师,球球大 XX 等手游,靠着这些游戏成为知名大主播的人也不在少数。
某荣耀主播
手机录屏的大问题
虽然现在有无数人正在使用手机直播,但是手机录屏和直播有一个很奇怪的问题。不像模拟信号时代的烧录和电脑录屏一般都是包含音频原始输出的,手机上,无论是 Android 还是 iOS 都不支持获取系统原始输出的音频,也就是我们常说的「内录」(通过麦克风捕捉声音叫外录)。
对此苹果给出的说法是防止一些恶意 App 通过内录来窃取通话录音,而 Google 的解释则是为了保护唱片协会的利益。不管怎么样,内录不是一个可有可无的功能,它能实实在在影响到录屏和直播最终效果。
看看有多少手游主播用外录直播玩游戏时声音忽大忽小(放技能的时候手会盖住麦克风);为了能录到游戏音效,即使是在宿舍或者车上直播也不能带耳机,声音,游戏音效和背景噪音混在一起,还是收音机音质。
最重要的是,想要加点背景音乐还要用音响播放,那效果简直了……再说即使不直播,你也不想回看自己超神时刻的时候伴随着汽车鸣笛、咳嗽、狗叫、沙沙沙的背景噪声吧。
为了解决内录录屏和直播的问题,今天我就给大家推荐两款好用的支持内录的录屏 App 和一个直播 App。顺便给大家送上两个小教程,解决两个大家用手机录屏和直播时常见的难题。
Android 7.0 以下录屏:SCR Screen Recorder Pro
可以说是 Android 7.0 之前唯一支持内录的录屏应用了。
视频设置上,除了常用的分辨率和帧率调节,它还支持码率「决定同样分辨率下的画面丰富程度,越大越好」,方向和影片速度调节。为了提高录屏性能,它还支持自定义编码器(H264 和 MPEG-4),自定义通过 CPU,GPU 还是软件特有的 GPU+ 来处理屏幕图像。至于显示前置摄像头画面和触摸操作等功能大家都有,就不详细说了。咋们直接上重点!
SCR Screen Recorder Pro 支持内置音源 + 麦克风同时作为音频来源,最高支持内录 48kHz 的立体声并且支持麦克风增益,给你最好的音质。「理所当然的,内录功能需要 root,没有 root 的同学可以散了」,最难得的是,它在录制内置音源和麦克风的同时你自己也能听到正在录制的声音,看完下面的 App 推荐你就知道为什么说它非常难得了。
虽然 SCR Screen Recorder Pro 支持内录让它鹤立鸡群,但是同时也树大招风。传说它的做法遭到了 Google 的封杀,从 Google Play 上永久下架,到底因为什么原因我们无从得知,不过从 1.0.5 版本添加了 Android 6.0 支持之后,官方就停止了对它的支持,在 Android 7.0+ 的设备上打开 SCR Screen Recorder Pro 会显示「该软件不支持您的系统版本」。
对于用着 Android 6.0 以下系统的同学来讲,SCR Screen Recorder Pro 绝对是一个完美的录屏解决方案。
PS:SCR Screen Recorder Pro 在网上有很多被加料的所谓修改 / 破解版,想要下载的同学可以从
上的 slow mirror 下载原版。
Android 7.0 以上录屏:屏幕录像+
SCR Screen Recorder Pro 被封杀了,内录录屏的需求依然在。既然不能上 Google Play 那就干脆不上了。这不酷安的开发者 Tornaco 就给我们带来了 Android 7.0 以上可用的开源内录录屏 App —— 屏幕录像+。
屏幕录像+ 是它的普通录屏 App 兄弟「屏幕录像」的高级版,作为录屏 App 常见的设置它一个不落。除此之外通过 root、Xposed(即将支持)、Magisk(需要在酷安评论区自行下载) 三种模式安装一个音频框架,安装完毕之后即可在录屏时将系统的媒体通道转移到录制通道上实现内录。也是因为这个原理,某些机型可能在录屏的时候听不到声音「实际已经录下来了」。
屏幕录像+ 官方说明只能在 AOSP 系的 ROM 上使用(谷歌官方、魔趣、SudaMod 等),各位国产 ROM 的同学建议做好准备再来尝试。
顺便说一下,Google Play 上有个同类的 APP —— RecMe(这个怎么没被封杀……),不过试用之后发现它的内录同样是在录屏时听不到声音的,然后界面上屏幕录像+ 更胜一筹,所以没有推荐 RecMe。这个 App 倒没有说明哪些 ROM 可以使用,用着国产 ROM 的同学可以自己去 Google Play 下载试用一下。
附录教程一:录制禁止录制的屏幕内容
有一些 App 上的特定内容是不允许我们截图和录制的,比如 XXXXHUB、XXXED、各种银行客户端还有各种阅后即焚的图片和消息(支付宝、TG、某 Q 闪照等)。除了又土又笨效果还很差的治颈椎拍屏幕大法难道就没有一个优雅又简单的方法了吗?答案是有的,那就是一个 Xposed 插件 —— disableflagsecure(启用截图)。
一般 App 禁止截图的方法都是使用 Android 系统 API 来将某个界面的截图权限关掉,disableflagsecure 能在系统层面使这个 API 无效。它并没有提供用户界面,下载安装然后在 Xposed 管理器启用重启即可生效,接下来就是为所欲为的时间啦。
PS:它可以让你突破软件限制,但是有些社交 App 会将截图提示发给对方,这个它就无能为力了,由此模块产生的各种纠纷和法律问题也要自己负责的哦。
附录教程二:手游完美直播教程
上面推荐的 App 都是用来录屏的,那么手游直播怎么办呢?当然,以哔哩哔哩直播为例,你可以粗暴的直接打开哔哩哔哩客户端关掉麦克风开始直播,让观众看默剧。也可以直接用麦克风让观众享受 FM 收音音质。注意观众感受,追求完美的你肯定不会这么干的,这个时候就需要用到俺提供的方法了。
完美版:借助电脑直播
需要工具:路由器,一台 Win10 电脑,哔哩哔哩直播姬(以哔哩哔哩直播为例)。
首先保证手机和电脑连到了同一个 Wifi,然后:
打开 Windows 设置。
点击「系统」。
点击「投影到这台电脑」。
在选项界面,第一个选项选择「所有位置都可用」,当然「在安全的网络中随处可用」也是个不错的选择。
在手机上选择无线投射,不同的 ROM 选项位置也不一样。原生及原生改动的 ROM 是在设置——显示——投射里面(记得勾选右上角选项里面的「开启无线显示」);MIUI 是在设置——更多连接方式——无线显示里面;华为 EMUI 是在设置——进阶设置——多重屏幕里面(繁体中文系统,简体中文可能不一样)。
在无线投射里面选择你的电脑连接,电脑上会出现一个几乎毫无延迟地显示手机画面的窗口。之后用哔哩哔哩直播姬登录你的哔哩哔哩账号直播即可。
这种方法可以说是最完美了,哔哩哔哩直播姬可以支持窗口直播,这样直播的时候可以在屏幕上再开个小窗口看弹幕和礼物,放背景音乐也可以直接用电脑放,和直播电脑游戏没啥区别,这就不用考虑内录的问题,这也是现在大部分主播的做法。
缺点是要有台电脑,而且路由器需要好一点的(因为同时需要串流和推流,最好是千兆路由以上)。
便携版:手机也能完美直播
有的同学可能还没有电脑或者用不了电脑(学习要紧哦),有的派友可能需要在各种室外场合上开游戏或者带背景音乐的个人直播,这种情况下只能录制麦克风吗?不!接下来这个方法只需要手机就可以轻松内录录屏直播。
要做到这点我们需要借助 Screen Stream Mirroring 这款 App,它提供了各种串流的方法,从本地的浏览器,媒体播放器,chromecast 等,到网络的 twitch,youtube 直播,facebook直播等都可以串流。最重要的还是它支持内录,支持内录(重要的事情说两遍)!下面还是以哔哩哔哩直播为例,介绍下如何用它来直播手游。
安装 Screen Stream Mirroring,打开偏好设置——音频偏好设置,按照提示安装 Internal Audio Plugin。
打开 Internal Audio Plugin,点击唯一一个按钮启用它。(需要 ROOT 权限)
重启手机,在音频偏好的设置里面可以选择「内部」或者「混音(麦克风和内部音频)[需要ROOT]」。
打开你的哔哩哔哩直播间,在右上角获取 rtmp 直播地址和串流密钥 key。
在 Screen Stream Mirroring 的偏好设置——串流偏好设置里面填写你的直播网址和串流密钥,顺便还可以设置下倒计时。
在抽屉的网络直播里面选择其他服务器,点击开始镜像传输,就又可以为所欲为啦。
PS:由于它和 RecMe 是同一间公司出品的,所以一样有在某些机型上自己听不到声音的尿性(还是不影响正常直播声音,就自己听不到……)
从人类发明了可以显示内容的设备的那一刻开始,获取各种显示设备输出的内容然后保存或者重放就一直是永恒不变的刚需。在磁带时代,人们通过通过烧录的方式保存不想错过的直播电视节目。在模拟信号时代,可以通过添加中继视频录制卡来拦截保存 S 端子,VGA 等端口的输出。
数字信号和互联网的繁荣发展大大简化了过去获取显示内容的步骤,只需要软件层面即可保存屏幕上所显示的一切。80 年代的通信专家肯定想不到,21世纪的普通人就可以在一台只有 5.5 寸的轻薄移动设备上实时传输 1080p 分辨率的画面。
今天推荐了几款 App 和写了两个小教程,希望能帮到喜欢录制和分享游戏小视频的派友,还有正在或即将用手机直播的派友。
如果你对这篇文章有任何疑问建议,又或者有关于录屏同直播方面的问题(手机电脑都可以),欢迎关注我的少数派和酷安「id:fairyex」后在评论区留言,私信我也是 OK 的哦。
少数派发现优质应用、游戏与设备周边,撰写客观深度的评测,制作实用易懂的教程,以少数人的力量,改变多数人的数字生活。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码在 iOS 8 及以前,第三方 App 如果想要全局录屏,只能使用私有 API,详见非越狱后台录屏。 升级到 iOS 9 后,官方新增了 ReplayKit,并且禁用了录屏的私有 API。ReplayKit 并不算是完美的录屏方案,如果想要把梦幻西游的游戏过程录制下来,需要梦幻西游这个应用本身添加 ReplayKit 的支持,然后再把录制的视频分享出去。对于不支持 ReplayKit 的游戏,怎么录制?答案是,没有办法。试想,又有多少个游戏会内置 ReplayKit 呢?iOS 10 在 iOS 9 的 ReplayKit 保存录屏视频的基础上,增加了视频流实时直播功能(streaming live),官方介绍见
。下面详细说说这个流程。 1. ReplayKit Live 概述从录制到直播,整体流程如下:被录制端需引入 ReplayKit,发起广播请求。广播端需要实现 Broadcast UI 和 Broadcast Upload 两个
,以便出现在被录制端的 App 列表。 被录制端选定广播端 App 后,开始直播。其中, 被录制端 可以是任意一个 App,如梦幻西游, 广播端 是支持 ReplayKit Live 的直播平台,如虎牙直播。 2. 被录制端(游戏或应用)的实现被录制端需要在原有功能的基础上,增加一个唤起广播的入口。代码:
- (IBAction)onLiveButtonPressed:(id)sender {
[RPBroadcastActivityViewController loadBroadcastActivityViewControllerWithHandler:^(RPBroadcastActivityViewController * _Nullable broadcastActivityViewController, NSError * _Nullable error) {
self.broadcastAVC = broadcastActivityViewC
self.broadcastAVC.delegate = self;
[self presentViewController:self.broadcastAVC animated:YES completion:nil];
注意: 唤起广播的入口有两种方式
- (void)broadcastActivityViewController:(RPBroadcastActivityViewController *)broadcastActivityViewController didFinishWithBroadcastController:(nullable RPBroadcastController *)broadcastController error:(nullable NSError *)error {
[self.broadcastAVC dismissViewControllerAnimated:YES completion:nil];
self.broadcastController = broadcastC
[broadcastController startBroadcastWithHandler:^(NSError * _Nullable error) {
if (!error) {
self.liveButton.selected = YES;
NSLog(@"startBroadcastWithHandler error: %@", error);
如下图的右上角就是开始广播的入口按钮。如果手机内没有支持广播的 App,会弹框提示到 App Store 查找一个。如果已经安装支持广播的 App,则会列出,点击后会打开广播端的 Broadcast UI。下面要说的就是怎么实现一个支持广播的 App。3. 广播端(直播平台)的实现很多直播 App 本身已经支持通过摄像头进行视频流上传、直播,新增对 ReplayKit Live 的支持,只需要创建两个扩展的 target,分别是 Broadcast UI Extension 和 Broadcast Upload Extension,在XCode 8 中内置了这两个模板。3.1 Broadcast UIBroadcast UI 负责广播前的一些初始化工作,比如,让用户填写直播平台的账号、密码、直播标题。从被录制端唤起广播请求并选定广播平台后,会显示 Broadcast UI 界面。核心代码:
@interface BroadcastViewController : UIViewController
- (IBAction)onCancelButtonPressed:(id)sender {
[self userDidCancelSetup];
- (IBAction)onOKButtonPressed:(id)sender {
if (self.accountTextField.text.length == 0
|| self.passwordTextField.text.length == 0
|| self.channelIDTextField.text.length == 0) {
[self userDidFinishSetup];
// Called when the user has finished interacting with the view controller and a broadcast stream can start
- (void)userDidFinishSetup {
NSLog(@"userDidFinishSetup");
// Broadcast url that will be returned to the application
NSURL *broadcastURL = [NSURL URLWithString:@"http://broadcastURL_example/stream1"];
// Service specific broadcast data example which will be supplied to the process extension during broadcast
NSDictionary *setupInfo = @{@"account" : self.accountTextField.text,
@"password" : self.passwordTextField.text,
@"channelID" : @(self.channelIDTextField.text.integerValue)};
// Set broadcast settings
RPBroadcastConfiguration *broadcastConfig = [[RPBroadcastConfiguration alloc] init];
broadcastConfig.clipDuration = 5.0; // deliver movie clips every 5 seconds
// Tell ReplayKit that the extension is finished setting up and can begin broadcasting
[self.extensionContext completeRequestWithBroadcastURL:broadcastURL broadcastConfiguration:broadcastConfig setupInfo:setupInfo];
- (void)userDidCancelSetup {
// Tell ReplayKit that the extension was cancelled by the user
[self.extensionContext cancelRequestWithError:[NSError errorWithDomain:@"YourAppDomain" code:-1
userInfo:nil]];
效果:如果用户点击 OK ,则会回调到第二部分中的 RPBroadcastActivityViewControllerDelegate ,开始直播会调用 Broadcast Upload 扩展。 3.2 Broadcast Upload第二部分调用 startBroadcastWithHandler ,会跑到 Broadcast Upload ,本扩展的作用是接收并处理 Broadcast UI 传过来的用户信息,以及处理 RPBroadcastController 传过来的音视频流数据,如编码、上传。 核心代码:#import &ReplayKit/ReplayKit.h&
@interface SampleHandler : RPBroadcastSampleHandler
@implementation SampleHandler
- (void)broadcastStartedWithSetupInfo:(NSDictionary&NSString *,NSObject *& *)setupInfo {
NSLog(@"broadcastStartedWithSetupInfo: %@", setupInfo);
[[ReplayKitUploader sharedObject] setupWithInfo:setupInfo];
- (void)broadcastPaused {
- (void)broadcastResumed {
- (void)broadcastFinished {
- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {
[[ReplayKitUploader sharedObject] handleSampleBuffer:sampleBuffer withType:sampleBufferType];
3.3 注意事项ReplayKitUploader 是自定义的一个类,使用了单例模式,负责广播服务的登录、编码、上传功能。使用单例,而不是直接在 SampleHandler 里面处理,是因为 SampleHandler 并不是 Broadcast Upload Extension 里的唯一一个实例,实际上,Upload Extension 会不断地创建很多个 SampleHandler 来处理 CMSampleBufferRef,而我们为了保存一些内部状态,必须使用一个固定的类实例来实现。 4. App 与 Extension 的代码共用iOS 10 新增了很多种 Extension,包括本文提到的两种 Broadcast Extension。主 App 与 Extension 属于不同的两个进程,代码逻辑也是分离的,而实际情况中,主 App 与 Extension 往往会包含相同的逻辑,需要共用代码。主 App 与 Extension 属于两个不同的 target,共用代码,有以下几种方式:一份代码创建两个副本,分别加到 App 和 Extension 两个 target 中。这种方法简单粗暴而有效,只是,如果需要改动逻辑,则需要改两份代码,想象一下,假如这种改动很频繁,世界上又有几个程序员能受得了?抽离公共代码,放到独立的 framework,然后两个 target 都依赖该 framework,这是标准而方便的做法。使用 CocoaPods,只需要在 Podfile 中分别写两个 target 所依赖的 pod 即可,最简洁。5. 结论在 iOS 环境中,想要共享设备屏幕,无论是录播还是直播,都注定了没有直接方便的方案。ReplayKit Live 是目前最标准的做法,只是,使用 ReplayKit 有两个前提,应用本身支持 ReplayKit,直播平台支持 Broadcast Extension。这两个前提,后者比较容易实现,而前者,就需要靠各个应用开发商的自觉了。
ios ReplayKit RPScreenRecorder获取屏幕录制的每一帧数据startCaptureWithHandler
iOS 10 适配系列-权限Crash问题
ios 10 开发-录屏直播 ReplayKit Live 与 Broadcast UI/Upload Extension
ReplayKit 的屏幕录制功能
iOS9 ReplayKit录制视频
没有更多推荐了,[郁闷的鸡]UI设计特训班(93.45G高清录屏教程+课件)
0.jpg (116.37 KB, 下载次数: 0)
00:25 上传
本视频教程是由AE资源素材社区UI大讲堂整理出品郁闷的鸡UI课程从基础到专业UI特训班视频教程,大小:93.45G,高清视频格式,语言:中文。
链接: 密码:yr3t
解压密码:
游客,如果您要查看本帖隐藏内容请
VIP会员:免回复 免灵感币 独享VIP资源
灵感中国社区-专业CG资源分享平台 - 论坛版权
1.资源加密附件下载需要充值灵感币才能下载或VIP可下载全站资源
2.喜欢本站请支持赞助我们【】【】
3.您的真诚回复是对楼主最大的支持与鼓励,也方便我们了解资源热度;严禁灌水发毫无意义的内容,否则直接禁言;
& & & & & & & & & & & ------------------------------版权申明------------------------------ & & & & & & & & & & & & &
》资源下载链接由会员自发搜集于网络,版权归原作者所有,仅供会员学习与参考,不得以任何方式用于商业用途!
》灵感中国社区非常重视知识产权,如有侵犯任何第三方权益,请发邮件及时联系(
),邮件请附(专利证书、商标注册证、著作权证书,以及知识产权人授权投诉方进行投诉的证明文件),我们将第一时间核实并删除侵权帖子。
width:100%">
回复看看密码
width:100%">
资源很多,慢慢看
width:100%">
资源很多,慢慢看
width:100%">
资源很多,慢慢看
width:100%">
资源很多,慢慢看
width:100%">
width:100%">
width:100%">
回复看看密码
width:100%">
看来还是要开VIP
width:100%">
此脚本包含约1500种包装动画预设,分为16大类(现代时尚、图形遮罩、信号损坏、运
AEscripts 3D Flip Board v1.15是一款字母数字三维翻页动画脚本。脚本可以在AE中
ASquirrel是一款图层层级管理编辑器。脚本可以将图层以层级的方式管理,这可以更
Aescaripts GifGun 1.7 是一款可以直接在AE里一键创建输出GIF动画格式脚本。且操
梦幻仙境瑶池小清新汉服人像预设
WIN,MAC|Lightroom|LRTEMPLATE
Fantasy Wonder
清新淡雅复古胶片情绪青春色调Lr预设
WIN,MAC|Lightroom|LRTEMPLATE|21 KB
Adam Bakay Lightroom Presets
Urban & City Tones for Lightroom
Created by u
200 Lovely Lightroom Presets
200 Lovely Lightroom Presets Description
20 Styled Effects - Photoshop Action
File Included
ATN 20 actions multiple
150 Summer Love Lightroom Presets Description
This Collection was specially
CG综合资源分享
Copyright &&&&&&&Powered by&&&官方合作站:&&nbsp&&&&

我要回帖

更多关于 手机录屏软件 的文章

 

随机推荐