电脑录屏软件源码录好后屏上的子怎么改掉

Runtime Error
Server Error in '/' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a &customErrors& tag within a &web.config& configuration file located in the root directory of the current web application. This &customErrors& tag should then have its &mode& attribute set to &Off&.
&!-- Web.Config Configuration File --&
&configuration&
&system.web&
&customErrors mode=&Off&/&
&/system.web&
&/configuration&
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the &defaultRedirect& attribute of the application's &customErrors& configuration tag to point to a custom error page URL.
&!-- Web.Config Configuration File --&
&configuration&
&system.web&
&customErrors mode=&RemoteOnly& defaultRedirect=&mycustompage.htm&/&
&/system.web&
&/configuration&软件大小:
发布者:admin
Apowersoft免费在线录屏是一款灵活多用的屏幕录制工具,支持多种屏幕录制模式,包括全屏、自定义区域、摄像头、围绕鼠标区域的屏幕画面录制,同时它也支持画面与声音的同步录制。除了能够用于视频录制以外,该工具还附带了屏幕截图功能,用于捕捉任意屏幕画面。
想要使用该工具来实现屏幕录制的可参照以下步骤:
打开该屏幕录制工具所在的网页,点击&开始录制&按钮,待Java程序启动后,同意运行该程序即可。
随后该工具便可成功启动,在开始录制之前,各位可根据个人需求进行一些选项设置。例如:你可选择音频输入来源,录制的视频输出格式、文件夹、比特率、采样率等。
设置完毕后,鼠标单击工具界面左上方的&录制&按钮旁边向下的三角箭头选择录制模式,然后左键单击。若你选择的是&自定义区域&,那么只需鼠标左键单击相应位置并拖拽鼠标至合适位置,单击&开始&即可。
待视频结束后,点击&停止&按钮就可完成录制。接下来,你就可以在软件录制列表里找到刚录制好的视频并右键单击选择播放。
如果您喜欢本软件,请点击下面的按钮分享给您的朋友们,他们会感激您的。
下载栏目导航
本类下载排行
总下载排行3767人阅读
=====================================================最简单的基于FFmpeg的AVDevice例子文章列表:=====================================================FFmpeg中有一个和多媒体设备交互的类库:Libavdevice。使用这个库可以读取电脑的多媒体设备的数据,或者输出数据到指定的多媒体设备上。计划写2个有关FFmpeg的libavdevice类库的例子。上篇文章记录了一个基于FFmpeg的Libavdevice类库读取摄像头数据的例子。本篇文章记录一个基于FFmpeg的Libavdevice类库录制屏幕的例子。本文程序录制当前桌面内容并且解码显示出来。有关解码显示方面的代码本文不再详述,可以参考文章:《》抓屏方法上篇文章记录了libavdevice的使用方法,本文不再重复。在Windows系统使用libavdevice抓取屏幕数据有两种方法:gdigrab和dshow。下文分别介绍。1.&gdigrabgdigrab是FFmpeg专门用于抓取Windows桌面的设备。非常适合用于屏幕录制。它通过不同的输入URL支持两种方式的抓取:(1)“desktop”:抓取整张桌面。或者抓取桌面中的一个特定的区域。(2)“title={窗口名称}”:抓取屏幕中特定的一个窗口(目前中文窗口还有乱码问题)。gdigrab另外还支持一些参数,用于设定抓屏的位置:offset_x:抓屏起始点横坐标。offset_y:抓屏起始点纵坐标。video_size:抓屏的大小。framerate:抓屏的帧率。参考的代码如下://Use gdigrab
AVDictionary* options = NULL;
//Set some options
//grabbing frame rate
//av_dict_set(&options,&framerate&,&5&,0);
//The distance from the left edge of the screen or desktop
//av_dict_set(&options,&offset_x&,&20&,0);
//The distance from the top edge of the screen or desktop
//av_dict_set(&options,&offset_y&,&40&,0);
//Video frame size. The default is to capture the full screen
//av_dict_set(&options,&video_size&,&640x480&,0);
AVInputFormat *ifmt=av_find_input_format(&gdigrab&);
if(avformat_open_input(&pFormatCtx,&desktop&,ifmt,&options)!=0){
printf(&Couldn't open input stream.(无法打开输入流)\n&);
return -1;
}2.&dshow使用dshow抓屏需要安装抓屏软件:screen-capture-recorder软件地址:下载软件安装完成后,可以指定dshow的输入设备为“screen-capture-recorder”即可。有关dshow设备的使用方法在上一篇文章中已经有详细叙述,这里不再重复。参考的代码如下:AVInputFormat *ifmt=av_find_input_format(&dshow&);
if(avformat_open_input(&pFormatCtx,&video=screen-capture-recorder&,ifmt,NULL)!=0){
printf(&Couldn't open input stream.(无法打开输入流)\n&);
return -1;
}注:上述两种抓屏方法也可以直接使用ffmpeg.exe的命令行完成,可以参考文章:在Linux下可以使用x11grab抓屏,在MacOS下可以使用avfoundation抓屏,在这里不再详细叙述。代码下面直接贴上程序代码:/**
* 最简单的基于FFmpeg的AVDevice例子(屏幕录制)
* Simplest FFmpeg Device (Screen Capture)
* 雷霄骅 Lei Xiaohua
* 中国传媒大学/数字电视技术
* Communication University of China / Digital TV Technology
* http://blog.csdn.net/leixiaohua1020
* 本程序实现了屏幕录制功能。可以录制并播放桌面数据。是基于FFmpeg
* 的libavdevice类库最简单的例子。通过该例子,可以学习FFmpeg中
* libavdevice类库的使用方法。
* 本程序在Windows下可以使用2种方式录制屏幕:
1.gdigrab: Win32下的基于GDI的屏幕录制设备。
抓取桌面的时候,输入URL为“desktop”。
2.dshow: 使用Directshow。注意需要安装额外的软件screen-capture-recorder
* 在Linux下可以使用x11grab录制屏幕。
* 在MacOS下可以使用avfoundation录制屏幕。
* This software capture screen of computer. It's the simplest example
* about usage of FFmpeg's libavdevice Library.
* It's suiltable for the beginner of FFmpeg.
* This software support 2 methods to capture screen in Microsoft Windows:
1.gdigrab: Win32 GDI-based screen capture device.
Input URL in avformat_open_input() is &desktop&.
2.dshow: Use Directshow. Need to install screen-capture-recorder.
* It use x11grab to capture screen in Linux.
* It use avfoundation to capture screen in MacOS.
#include &stdio.h&
#define __STDC_CONSTANT_MACROS
#ifdef _WIN32
extern &C&
#include &libavcodec/avcodec.h&
#include &libavformat/avformat.h&
#include &libswscale/swscale.h&
#include &libavdevice/avdevice.h&
#include &SDL/SDL.h&
//Linux...
#ifdef __cplusplus
extern &C&
#include &libavcodec/avcodec.h&
#include &libavformat/avformat.h&
#include &libswscale/swscale.h&
#include &libavdevice/avdevice.h&
#include &SDL/SDL.h&
#ifdef __cplusplus
//Output YUV420P
#define OUTPUT_YUV420P 0
//'1' Use Dshow
//'0' Use GDIgrab
#define USE_DSHOW 0
//Refresh Event
#define SFM_REFRESH_EVENT
(SDL_USEREVENT + 1)
int thread_exit=0;
int sfp_refresh_thread(void *opaque)
while (thread_exit==0) {
event.type = SFM_REFRESH_EVENT;
SDL_PushEvent(&event);
SDL_Delay(40);
//Show Dshow Device
void show_dshow_device(){
AVFormatContext *pFormatCtx = avformat_alloc_context();
AVDictionary* options = NULL;
av_dict_set(&options,&list_devices&,&true&,0);
AVInputFormat *iformat = av_find_input_format(&dshow&);
printf(&========Device Info=============\n&);
avformat_open_input(&pFormatCtx,&video=dummy&,iformat,&options);
printf(&================================\n&);
//Show AVFoundation Device
void show_avfoundation_device(){
AVFormatContext *pFormatCtx = avformat_alloc_context();
AVDictionary* options = NULL;
av_dict_set(&options,&list_devices&,&true&,0);
AVInputFormat *iformat = av_find_input_format(&avfoundation&);
printf(&==AVFoundation Device Info===\n&);
avformat_open_input(&pFormatCtx,&&,iformat,&options);
printf(&=============================\n&);
int main(int argc, char* argv[])
AVFormatContext *pFormatC
AVCodecContext *pCodecC
av_register_all();
avformat_network_init();
pFormatCtx = avformat_alloc_context();
//Open File
//char filepath[]=&src01_480x272_22.h265&;
//avformat_open_input(&pFormatCtx,filepath,NULL,NULL)
//Register Device
avdevice_register_all();
#ifdef _WIN32
#if USE_DSHOW
//Use dshow
//Need to Install screen-capture-recorder
//screen-capture-recorder
//Website: http://sourceforge.net/projects/screencapturer/
AVInputFormat *ifmt=av_find_input_format(&dshow&);
if(avformat_open_input(&pFormatCtx,&video=screen-capture-recorder&,ifmt,NULL)!=0){
printf(&Couldn't open input stream.\n&);
return -1;
//Use gdigrab
AVDictionary* options = NULL;
//Set some options
//grabbing frame rate
//av_dict_set(&options,&framerate&,&5&,0);
//The distance from the left edge of the screen or desktop
//av_dict_set(&options,&offset_x&,&20&,0);
//The distance from the top edge of the screen or desktop
//av_dict_set(&options,&offset_y&,&40&,0);
//Video frame size. The default is to capture the full screen
//av_dict_set(&options,&video_size&,&640x480&,0);
AVInputFormat *ifmt=av_find_input_format(&gdigrab&);
if(avformat_open_input(&pFormatCtx,&desktop&,ifmt,&options)!=0){
printf(&Couldn't open input stream.\n&);
return -1;
#elif defined linux
AVDictionary* options = NULL;
//Set some options
//grabbing frame rate
//av_dict_set(&options,&framerate&,&5&,0);
//Make the grabbed area follow the mouse
//av_dict_set(&options,&follow_mouse&,&centered&,0);
//Video frame size. The default is to capture the full screen
//av_dict_set(&options,&video_size&,&640x480&,0);
AVInputFormat *ifmt=av_find_input_format(&x11grab&);
//Grab at position 10,20
if(avformat_open_input(&pFormatCtx,&:0.0+10,20&,ifmt,&options)!=0){
printf(&Couldn't open input stream.\n&);
return -1;
show_avfoundation_device();
AVInputFormat *ifmt=av_find_input_format(&avfoundation&);
//Avfoundation
//[video]:[audio]
if(avformat_open_input(&pFormatCtx,&1&,ifmt,NULL)!=0){
printf(&Couldn't open input stream.\n&);
return -1;
if(avformat_find_stream_info(pFormatCtx,NULL)&0)
printf(&Couldn't find stream information.\n&);
return -1;
videoindex=-1;
for(i=0; i&pFormatCtx-&nb_ i++)
if(pFormatCtx-&streams[i]-&codec-&codec_type==AVMEDIA_TYPE_VIDEO)
videoindex=i;
if(videoindex==-1)
printf(&Didn't find a video stream.\n&);
return -1;
pCodecCtx=pFormatCtx-&streams[videoindex]-&
pCodec=avcodec_find_decoder(pCodecCtx-&codec_id);
if(pCodec==NULL)
printf(&Codec not found.\n&);
return -1;
if(avcodec_open2(pCodecCtx, pCodec,NULL)&0)
printf(&Could not open codec.\n&);
return -1;
AVFrame *pFrame,*pFrameYUV;
pFrame=av_frame_alloc();
pFrameYUV=av_frame_alloc();
//uint8_t *out_buffer=(uint8_t *)av_malloc(avpicture_get_size(PIX_FMT_YUV420P, pCodecCtx-&width, pCodecCtx-&height));
//avpicture_fill((AVPicture *)pFrameYUV, out_buffer, PIX_FMT_YUV420P, pCodecCtx-&width, pCodecCtx-&height);
//SDL----------------------------
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
printf( &Could not initialize SDL - %s\n&, SDL_GetError());
return -1;
int screen_w=640,screen_h=360;
const SDL_VideoInfo *vi = SDL_GetVideoInfo();
//Half of the Desktop's width and height.
screen_w = vi-&current_w/2;
screen_h = vi-&current_h/2;
SDL_Surface *
screen = SDL_SetVideoMode(screen_w, screen_h, 0,0);
if(!screen) {
printf(&SDL: could not set video mode - exiting:%s\n&,SDL_GetError());
return -1;
SDL_Overlay *
bmp = SDL_CreateYUVOverlay(pCodecCtx-&width, pCodecCtx-&height,SDL_YV12_OVERLAY, screen);
rect.x = 0;
rect.y = 0;
rect.w = screen_w;
rect.h = screen_h;
//SDL End------------------------
int ret, got_
AVPacket *packet=(AVPacket *)av_malloc(sizeof(AVPacket));
#if OUTPUT_YUV420P
FILE *fp_yuv=fopen(&output.yuv&,&wb+&);
struct SwsContext *img_convert_
img_convert_ctx = sws_getContext(pCodecCtx-&width, pCodecCtx-&height, pCodecCtx-&pix_fmt, pCodecCtx-&width, pCodecCtx-&height, PIX_FMT_YUV420P, SWS_BICUBIC, NULL, NULL, NULL);
//------------------------------
SDL_Thread *video_tid = SDL_CreateThread(sfp_refresh_thread,NULL);
SDL_WM_SetCaption(&Simplest FFmpeg Grab Desktop&,NULL);
//Event Loop
for (;;) {
SDL_WaitEvent(&event);
if(event.type==SFM_REFRESH_EVENT){
//------------------------------
if(av_read_frame(pFormatCtx, packet)&=0){
if(packet-&stream_index==videoindex){
ret = avcodec_decode_video2(pCodecCtx, pFrame, &got_picture, packet);
if(ret & 0){
printf(&Decode Error.\n&);
return -1;
if(got_picture){
SDL_LockYUVOverlay(bmp);
pFrameYUV-&data[0]=bmp-&pixels[0];
pFrameYUV-&data[1]=bmp-&pixels[2];
pFrameYUV-&data[2]=bmp-&pixels[1];
pFrameYUV-&linesize[0]=bmp-&pitches[0];
pFrameYUV-&linesize[1]=bmp-&pitches[2];
pFrameYUV-&linesize[2]=bmp-&pitches[1];
sws_scale(img_convert_ctx, (const uint8_t* const*)pFrame-&data, pFrame-&linesize, 0, pCodecCtx-&height, pFrameYUV-&data, pFrameYUV-&linesize);
#if OUTPUT_YUV420P
int y_size=pCodecCtx-&width*pCodecCtx-&
fwrite(pFrameYUV-&data[0],1,y_size,fp_yuv);
fwrite(pFrameYUV-&data[1],1,y_size/4,fp_yuv);
fwrite(pFrameYUV-&data[2],1,y_size/4,fp_yuv);
SDL_UnlockYUVOverlay(bmp);
SDL_DisplayYUVOverlay(bmp, &rect);
av_free_packet(packet);
//Exit Thread
thread_exit=1;
}else if(event.type==SDL_QUIT){
thread_exit=1;
sws_freeContext(img_convert_ctx);
#if OUTPUT_YUV420P
fclose(fp_yuv);
SDL_Quit();
//av_free(out_buffer);
av_free(pFrameYUV);
avcodec_close(pCodecCtx);
avformat_close_input(&pFormatCtx);
结果程序的运行效果如下。这个运行结果还是十分有趣的,会出现一个屏幕“嵌套”在另一个屏幕里面的现象,环环相套。&可以通过代码定义的宏来确定是否将解码后的YUV420P数据输出成文件:#define OUTPUT_YUV420P 0可以通过下面的宏定义来确定使用GDIGrab或者是Dshow打开摄像头://'1' Use Dshow
//'0' Use GDIgrab
#define USE_DSHOW 0下载Simplest FFmpeg Device&项目主页SourceForge:Github:开源中国:CSDN下载地址:注:&本工程包含两个基于FFmpeg的libavdevice的例子:&simplest_ffmpeg_grabdesktop:屏幕录制。&simplest_ffmpeg_readcamera:读取摄像头更新-1.1()=========================================该版本中,修改了SDL的显示方式,弹出的窗口可以移动了。CSDN下载地址:更新-1.2 ()=========================================这次考虑到了跨平台的要求,调整了源代码。经过这次调整之后,源代码可以在以下平台编译通过:VC++:打开sln文件即可编译,无需配置。cl.exe:打开compile_cl.bat即可命令行下使用cl.exe进行编译,注意可能需要按照VC的安装路径调整脚本里面的参数。编译命令如下。::VS2010 Environment
call &D:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat&
@set INCLUDE=%INCLUDE%
@set LIB=%LIB%
::compile and link
cl simplest_ffmpeg_grabdesktop.cpp /MD /link SDL.lib SDLmain.lib avcodec.lib ^
avformat.lib avutil.lib avdevice.lib avfilter.lib postproc.lib swresample.lib swscale.lib ^
/SUBSYSTEM:WINDOWS /OPT:NOREFMinGW:MinGW命令行下运行compile_mingw.sh即可使用MinGW的g++进行编译。编译命令如下。g++ simplest_ffmpeg_grabdesktop.cpp -g -o simplest_ffmpeg_grabdesktop.exe \
-I /usr/local/include -L /usr/local/lib \
-lmingw32 -lSDLmain -lSDL -lavformat -lavcodec -lavutil -lavdevice -lswscaleGCC(Linux):Linux命令行下运行compile_gcc.sh即可使用GCC进行编译。编译命令如下。gcc simplest_ffmpeg_grabdesktop.cpp -g -o simplest_ffmpeg_grabdesktop.out \
-I /usr/local/include -L /usr/local/lib -lSDLmain -lSDL -lavformat -lavcodec -lavutil -lavdevice -lswscaleGCC(MacOS):MacOS命令行下运行compile_gcc_mac.sh即可使用GCC进行编译。Mac的GCC和Linux的GCC差别不大,但是使用SDL1.2的时候,必须加上“-framework Cocoa”参数,否则编译无法通过。编译命令如下。gcc simplest_ffmpeg_grabdesktop.cpp -g -o simplest_ffmpeg_grabdesktop.out \
-framework Cocoa -I /usr/local/include -L /usr/local/lib -lSDLmain -lSDL -lavformat -lavcodec -lavutil -lavdevice -lswscalePS:相关的编译命令已经保存到了工程文件夹中CSDN下载地址:SourceForge上已经更新。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1393920次
积分:20847
积分:20847
排名:第141名
原创:317篇
转载:150篇
译文:28篇
评论:2382条
非常感谢美国微软公司(Microsoft )国内外专家评委们的认可,收到消息。今后我一定会继续加油,认真研究技术,坚持分享经验,努力把知识传播到更远的地方去!
姓名:雷霄骅
网名:leixiaohua1020
中国传媒大学-广播电视工程
中国传媒大学-数字电视技术
中国传媒大学-数字视频技术
[注:消息较多,不一定能一一回复,见谅]
主要从事与广播电视有关的视音频技术的研究。包括视音频质量评价,视音频编解码,流媒体,媒资检索等。
【SourceForge】【主】
【Github】
【开源中国】
欢迎转载本博客原创或翻译文章,但请声明出处,谢谢!
建了一个QQ群,希望把搞视音频技术的人联合起来方便交流,无论是实验室,电视台,互联网视频,安防,播放器,媒体中心等等都可以加入讨论。欢迎新手和大牛,多交流可以更快的进步~
在QQ群1000人的容量即将达到上限的时候,发了一个捐助贴。在不到一个小时的时间里,就凑齐了QQ升级"超级大群"的费用。在此感谢全国各地各位同仁的支持!也让我领会到了自己工作的意义。捐助人员列表已经发在了“群公告”里面。捐助的经费有一些剩余,这部分经费将会保留用于该群未来的续费。我会一直维护下去,争取把这个群建设的更好,和朋友们一起给中国的视音频技术出一份力!
15.04.13-临时通知
关于本群即将满员的通知
首先感谢各位参与本群讨论。最近本群成员人数已经接近2000人上限。为了给新成员入群的机会,我们需要清理一部分不活跃用户以腾出一些空间。我们计划是清除“最后发言”为空,或者“最后发言”日期非常早的用户。希望各位不活跃用户近期至少保证发言一次。谢谢支持!
PS:被清理用户如果需要的话都欢迎重新加入本群。
文章:87篇
阅读:497766
文章:81篇
阅读:241796
文章:41篇
阅读:100711Runtime Error
Server Error in '/' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a &customErrors& tag within a &web.config& configuration file located in the root directory of the current web application. This &customErrors& tag should then have its &mode& attribute set to &Off&.
&!-- Web.Config Configuration File --&
&configuration&
&system.web&
&customErrors mode=&Off&/&
&/system.web&
&/configuration&
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the &defaultRedirect& attribute of the application's &customErrors& configuration tag to point to a custom error page URL.
&!-- Web.Config Configuration File --&
&configuration&
&system.web&
&customErrors mode=&RemoteOnly& defaultRedirect=&mycustompage.htm&/&
&/system.web&
&/configuration&

我要回帖

更多关于 超级录屏 的文章

 

随机推荐