如何实现win10录屏功能怎么用能

最简单的录屏工具,居然是——PPT!
我的图书馆
最简单的录屏工具,居然是——PPT!
普通老师要想学习制作微课,首先要过的就是工具关。而对于以PPT、电脑软件操作为主的微课来说,离不开“录屏软件”的支持。王珏老师一直认为:camtasia(喀秋莎)算是一个相对比较简单的、而且功能还非常强大的录屏+编辑加工一体的工具了。不过,还是有一些老师受限于电脑硬件配置、软件安装能力等原因,感觉比较繁琐和困难。在前一阵的摸索中,我意外地发现在PPT2016中,居然就提供了屏幕录制的功能,而且使用起来非常简单,值得向大家推荐!如果您已经安装了PPT2016版软件的话,只需按如下步骤操作即可:1、点击“插入”菜单中的“屏幕录制”按钮。2、用鼠标拖动红色虚线框,选择你需要录制的屏幕区域(比如全屏),如下图。3、点击上图中的“录制”按钮。倒数3下后,就会开始录制屏幕区域的所有内容了。4、同时按住Windows键+Shift+Q,即可停止录制。录制成的视频就会自动被插入到PPT中了(如下图)5、如果想把录屏文件单独拿出来的话,只需在视频上点右键->“将媒体另存为……”即可(如上图)。这种方法非常方便、快捷,所以建议大家即使是录制PPT,也使用这种方法(纯PPT录制的方法局限性比较多、生成视频速度极慢)不过显然,想享受这种简便的录屏方法,您需要具备PPT2016软件(操作系统为Win7或以上)。您可到本公众号左下角第一个菜单中找到PPT2016的下载地址。最后,此种方法虽然非常简单,但也有两个缺点:1、不能对视频中的错误进行剪裁,更不能进行其它加工;——好在,可以用其它方式弥补。1、电脑中的camtasia;2、手机中的小影app。尤其是后者,可以傻瓜式地对录制好的视频进行剪切、加片头、背景音乐、甚至为视频配音、重新组合等各种处理,详见2、不能录制系统声音(比如在电脑中的视频的声音),只能录制麦克风中的声音。——这个问题目前貌似还只能用camtasia出马才行。我相信,PPT2016录屏+小影App剪辑加工这一对组合,目前看应该算是录屏式微课中门槛最低的了吧!如果您对此方法动心的话,可到如下地址下载PPT2016:(感谢陕西詹大平老师的分享!)/s/1bpDq9ER 密码:u1jq注意事项:以上地址建议采用复制粘贴的方式,避免手工输入发生错误。PPT2016只能安装在Win7及以上操作系统中,并要求计算机的性能较好以上地址中提供了32位、64位两个安装包,请先判断自己的电脑操作系统是32位的、还是64位的。具体方法请百度搜“如何判断电脑是32位还是64位”。“王珏微课设计与制作”公众号提供全面、深度的微课设计思想与制作技术!到本公众号首页输入代码:yhq:王珏《微课设计与制作》68元优惠券,查看抢券攻略cs &:查看camtasia全套操作视频ppt:查看ppt微课录制视频操作教程、以及ppt使用技巧集(pptN)
TA的最新馆藏iOS录屏(屏幕录制功能)
最新的DEMO&
/Blazeice/ScreenAndAudioRecordDemoScreenAndAudioRecordDemo
最近要做个demo,是有关屏幕录制成视频流,然后将视频流分发出去的功能,在时时分发这块遇到了些问题,绊住了,就写个blog,让脑子休息下,这几天头已经大了,人已经被折磨的没有战斗力了……
鉴于时时分发没有完成,就先写个有关于屏幕录制的 给大家分享下,熟练地勿喷,仅供不会的参考
demo下载地址
思路如下:截屏---合成视频---保存本地 &
&iphone提供了AVFoundation,其中AVAssetWriter这个类可以方便的将图像和音频写成一个完整的视频文件。甚至将整个应用的操作录制下来。而这也是录屏的一个关键所在(我的方法中)。
具体实现:先利用NSInvocationOperation
和NSOperationQueue来开启一个新的线程,而这个线程的主要任务就是截屏。然后自定义一个类似于缓冲区性质的一个NSMutableArray
,用来缓存截出来的图,而在主线程中,就要实用到AVAssetWriter来完成视频流的合成和保存
具体代码如下
"LZXViewController.h"
@implementation
LZXViewController
& NSMutableArray&
& UIWebView & &
& NSTimer & &
-(void) viewDidLoad
& isVideo = YES;
& UIButton * button1 = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
& [button1 setFrame:CGRectMake(100, 0, 150,
& [button1 setTitle:@"start recording"
forState:UIControlStateNormal];
& [button1 addTarget:self
action:@selector(testCompressionSession)
forControlEvents:UIControlEventTouchUpInside];
& UIButton * button2 = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
& [button2 setFrame:CGRectMake(600, 0, 150,
& [button2 setTitle:@"show Video"
forState:UIControlStateNormal];
& [button2 addTarget:self
action:@selector(movieShow:)
forControlEvents:UIControlEventTouchUpInside];
& UIButton * button3 = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
& [button3 setFrame:CGRectMake(300, 0, 150,
& [button3 setTitle:@"stop recording"
forState:UIControlStateNormal];
& [button3 addTarget:self action:@selector(stop)
forControlEvents:UIControlEventTouchUpInside];
& [self.view addSubview:button1];
& [self.view addSubview:button2];
& [self.view addSubview:button3];
-(void)stop
& if ([timer isValid] == YES) {
& & & [timer
invalidate];
& & & timer =
& & & isVideo =
-(void)addImageData
& timer = [[NSTimer alloc]
initWithFireDate:[NSDate new] interval:0.09 target:self
selector:@selector(getImageDataTimer:) userInfo:nil
repeats:YES];
& [[NSRunLoop currentRunLoop] addTimer:timer
forMode:NSDefaultRunLoopMode];
& [[NSRunLoop currentRunLoop] run];
-(void)getImageDataTimer:(NSTimer
UIGraphicsBeginImageContext(self.view.bounds.size);
& [self.view.layer
renderInContext:UIGraphicsGetCurrentContext()];
& UIImage *image=
UIGraphicsGetImageFromCurrentImageContext();
& [imageArr addObject:image];
& UIGraphicsEndImageContext();
-(IBAction)movieShow:(id)sender
& movieShow = [[UIWebView alloc]
initWithFrame:CGRectMake(0, 50, 768, 900)];
& [movieShow setBackgroundColor:[UIColor
redColor]];
& [self.view addSubview:movieShow];
& NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
& NSString *moviePath = [[paths objectAtIndex:0]
stringByAppendingPathComponent:[NSString
stringWithFormat:@"%@.mp4",@"test"]];
& NSURLRequest *request =[NSURLRequest
requestWithURL:[NSURL URLWithString:[moviePath
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
& [movieShow loadRequest:request];
- (CVPixelBufferRef
)pixelBufferFromCGImage:(CGImageRef)image
size:(CGSize)size
& NSDictionary *options = [NSDictionary
dictionaryWithObjectsAndKeys:
& & & [NSNumber
numberWithBool:YES],
kCVPixelBufferCGImageCompatibilityKey,
& & & [NSNumber
numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
& CVPixelBufferRef pxbuffer = NULL;
& CVReturn status =
CVPixelBufferCreate(kCFAllocatorDefault, size.width, size.height,
kCVPixelFormatType_32ARGB, (CFDictionaryRef) options,
&pxbuffer);
& NSParameterAssert(status == kCVReturnSuccess
&& pxbuffer != NULL);
& CVPixelBufferLockBaseAddress(pxbuffer,
& void *pxdata =
CVPixelBufferGetBaseAddress(pxbuffer);
& NSParameterAssert(pxdata != NULL);
& CGColorSpaceRef rgbColorSpace =
CGColorSpaceCreateDeviceRGB();
& CGContextRef context =
CGBitmapContextCreate(pxdata, size.width, size.height, 8,
4*size.width, rgbColorSpace,
kCGImageAlphaPremultipliedFirst);
& NSParameterAssert(context);
& CGContextDrawImage(context, CGRectMake(0, 0,
CGImageGetWidth(image), CGImageGetHeight(image)),
& CGColorSpaceRelease(rgbColorSpace);
& CGContextRelease(context);
& CVPixelBufferUnlockBaseAddress(pxbuffer,
(IBAction)testCompressionSession
& if ([imageArr count] == 0 && isVideo ==
& & & imageArr =
[[NSMutableArray alloc] initWithObjects:nil];
NSInvocationOperation *operation = [[NSInvocationOperation
alloc]initWithTarget:self & &
selector:@selector(addImageData) object:nil];
NSOperationQueue *queue = [[NSOperationQueue
alloc]init];
& & & [queue
addOperation:operation];
& & & [NSThread
sleepForTimeInterval:0.1];
& & & NSArray
*paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
& & & NSString
*moviePath = [[paths objectAtIndex:0]
stringByAppendingPathComponent:[NSString
stringWithFormat:@"%@.mp4",@"test"]];
& & & CGSize
size = CGSizeMake(768,1024);
& & & NSError
unlink([moviePath UTF8String]);
AVAssetWriter *videoWriter = [[AVAssetWriter alloc]
initWithURL:[NSURL fileURLWithPath:moviePath]
fileType:AVFileTypeQuickTimeMovie
& & error:&error];
NSParameterAssert(videoWriter);
& & NSLog(@"error = %@", [error
localizedDescription]);
NSDictionary *videoSettings = [NSDictionary
dictionaryWithObjectsAndKeys:AVVideoCodecH264,
AVVideoCodecKey,
& & [NSNumber
numberWithInt:size.width], AVVideoWidthKey,
& & [NSNumber
numberWithInt:size.height], AVVideoHeightKey, nil];
AVAssetWriterInput *writerInput = [AVAssetWriterInput
assetWriterInputWithMediaType:AVMediaTypeVideo
outputSettings:videoSettings];
NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary
dictionaryWithObjectsAndKeys:[NSNumber
numberWithInt:kCVPixelFormatType_32ARGB],
kCVPixelBufferPixelFormatTypeKey, nil];
AVAssetWriterInputPixelBufferAdaptor *adaptor =
[AVAssetWriterInputPixelBufferAdaptor
assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput
sourcePixelBufferAttributes:sourcePixelBufferAttributesDictionary];
NSParameterAssert(writerInput);
NSParameterAssert([videoWriter
canAddInput:writerInput]);
([videoWriter canAddInput:writerInput])
& & NSLog(@"ok");
& & NSLog(@"……");
[videoWriter addInput:writerInput];
[videoWriter startWriting];
[videoWriter startSessionAtSourceTime:kCMTimeZero];
dispatch_queue_t dispatchQueue =
dispatch_queue_create("mediaInputQueue", NULL);
__block frame = 0;
[writerInput requestMediaDataWhenReadyOnQueue:dispatchQueue
usingBlock:^{
& & NSLog(@"wrierInput
is-&&&&&&&&&%i",[writerInput
isReadyForMoreMediaData]);
& & while ([writerInput
isReadyForMoreMediaData])
& NSLog(@"imageArr-&%d,isVieo
----&%i",[imageArr count],isVideo);
& if([imageArr count] == 0&&isVideo ==
& & isVideo = YES;
& & [writerInput
markAsFinished];
& & [videoWriter
finishWritingWithCompletionHandler:^{}];
& & [videoWriter
& & [operation
& & [queue release];
& if ([imageArr count] == 0&&isVideo ==
CVPixelBufferRef buffer = NULL;
& & & buffer =
(CVPixelBufferRef)[self pixelBufferFromCGImage:[[imageArr
objectAtIndex:0] CGImage] size:size];
(++frame == 0) {
& & [imageArr
removeObjectAtIndex:0];
& & if(![adaptor
appendPixelBuffer:buffer withPresentationTime:CMTimeMake(frame,
& NSLog(@"FAIL");
& NSLog(@"doing……");
& CFRelease(buffer);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看: 1762|回复: 0
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID阅读权限10帖子积分33金币64 注册时间
A1.安卓人工智能, 积分 33, 距离下一级还需 17 积分
积分33金币64 注册时间
附件有软件。前提一定要ROOT。
华为网盘附件:
【华为网盘】
安卓论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
Powered by

我要回帖

更多关于 小米录屏功能 的文章

 

随机推荐