资源简介
安装好需要的库以后,可直接make编译(相关库的安装在博客:http://blog.csdn.net/xushan239/article/details/78719839有提到,或者根据makefile也可以知道)
实现功能:此源码是linux平台C语言实现的采集摄像头数据并压缩成H264或者MJPEG的数据流上传到服务器,由服务器分发到各个客户端;
如有不详尽之处可以联系qq:294050476欢迎交流

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//--------variable defined here-------
static pthread_t pid;
static unsigned char state = 0;
//--------SDL2----------
static unsigned char inited = 0;
static SDL_Window * win = NULL;
static SDL_Renderer * renderer = NULL;
static SDL_Texture * texture = NULL;
static SDL_CommonEvent comm;
static SDL_Event event;
static int sdl2_init(int wint h)
{
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) == -1)
{
printf(“SDL_Init fail!“);
return -1;
}
else
printf(“SDL_Init success\n“);
/*
title :窗口标题
x :窗口位置x坐标。也可以设置为SDL_WINDOWPOS_CENTERED或SDL_WINDOWPOS_UNDEFINED。
y :窗口位置y坐标。同上。
w :窗口的宽
h :窗口的高
flags :支持下列标识。包括了窗口的是否最大化、最小化,能否调整边界等等属性。
::SDL_WINDOW_FULLSCREEN ::SDL_WINDOW_OPENGL
::SDL_WINDOW_HIDDEN ::SDL_WINDOW_BORDERLESS
::SDL_WINDOW_RESIZABLE ::SDL_WINDOW_MAXIMIZED
::SDL_WINDOW_MINIMIZED ::SDL_WINDOW_INPUT_GRABBED
::SDL_WINDOW_ALLOW_HIGHDPI.
*/
win = SDL_CreateWindow(“Sam“00whSDL_WINDOW_SHOWN|SDL_WINDOW_RESIZABLE);
if(win == NULL)
{
printf(“SDL_CreateWindow fail\n“);
return -1;
}
else
{
printf(“SDL_CreateWindow success\n“);
}
//创建渲染器
/*
window : 渲染的目标窗口。
index :打算初始化的渲染设备的索引。设置“-1”则初始化默认的渲染设备。
flags :支持以下值(位于SDL_RendererFlags定义中)
SDL_RENDERER_SOFTWARE :使用软件渲染
SDL_RENDERER_ACCELERATED :使用硬件加速
SDL_RENDERER_PRESENTVSYNC:和显示器的刷新率同步
SDL_RENDERER_TARGETTEXTURE :不太懂
*/
renderer = SDL_CreateRenderer(win-1SDL_RENDERER_SOFTWARE);
if(renderer == NULL)
{
printf(“SDL_CreateRenderer fail\n“);
return -1;
}
else
{
printf(“SDL_CreateRenderer success\n“);
}
/*
参数的含义如下。
renderer:目标渲染器。
format :纹理的格式。后面会详述。
access :可以取以下值(定义位于SDL_TextureAccess中)
SDL_TEXTUREACCESS_STATIC :变化极少
SDL_TEXTUREACCESS_STREAMING :变化频繁
SDL_TEXTUREACCESS_TARGET :暂时没有理解
w :纹理的宽
h :纹理的高
*/
texture = SDL_CreateTexture(rendererSDL_PIXELFORMAT_YUY2SDL_TEXTUREACCESS_STREAMINGwh);
if(texture == NULL)
{
printf(“SDL_CreateTexture fail\n“);
return -1;
}
else
{
printf(“SDL_CreateTexture success\n“);
}
return 0;
}
static void *event_loop(void *param)
{
printf(“%s begin time:%d\n“__func__SDL_GetTicks());
while(1)
{
if(SDL_PollEvent(&event) > 0 &&
(comm.type != event.common.type || comm.timestamp != event.common.timestamp))
{
comm.type = event.common.type;
comm.timestamp = event.common.timestamp;
switch(event.type)
{
case SDL_QUIT:
printf(“SDL_WINDOWEVENT\n“);state = 1;return NULL;
case SDL_WINDOWEVENT:
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5220 2018-01-05 11:36 CAM\sdl2lib.c
文件 6665 2017-11-29 11:45 CAM\sdl2lib\SDL_mutex.h
文件 4612 2017-11-29 11:45 CAM\sdl2lib\SDL_test_harness.h
文件 45216 2017-11-29 11:45 CAM\sdl2lib\SDL_video.h
文件 3385 2017-11-29 11:45 CAM\sdl2lib\SDL_test_crc32.h
文件 17031 2017-11-29 11:45 CAM\sdl2lib\SDL_pixels.h
文件 82593 2017-11-29 11:45 CAM\sdl2lib\SDL_opengl.h
文件 19399 2017-11-29 11:45 CAM\sdl2lib\SDL_surface.h
文件 2335 2017-11-29 11:45 CAM\sdl2lib\SDL_touch.h
文件 7951 2017-11-29 11:45 CAM\sdl2lib\SDL_rwops.h
文件 9793 2017-11-29 11:45 CAM\sdl2lib\SDL_vulkan.h
文件 3156 2017-11-29 11:45 CAM\sdl2lib\SDL_test_random.h
文件 4538 2017-11-29 11:45 CAM\sdl2lib\SDL_cpuinfo.h
文件 6437 2017-11-29 11:45 CAM\sdl2lib\SDL_keyboard.h
文件 731497 2017-11-29 11:45 CAM\sdl2lib\SDL_opengl_glext.h
文件 3243 2017-11-29 11:45 CAM\sdl2lib\SDL_test_assert.h
文件 5681 2017-11-29 11:45 CAM\sdl2lib\SDL_shape.h
文件 2866 2017-11-29 11:45 CAM\sdl2lib\SDL_loadso.h
文件 73555 2017-11-29 11:45 CAM\sdl2lib\SDL_egl.h
文件 7603 2017-11-29 11:45 CAM\sdl2lib\SDL_system.h
文件 5153 2017-11-29 11:45 CAM\sdl2lib\SDL_platform.h
文件 34720 2017-11-29 11:45 CAM\sdl2lib\SDL_render.h
文件 9813 2017-11-29 11:45 CAM\sdl2lib\SDL_atomic.h
文件 4445 2017-11-29 11:45 CAM\sdl2lib\SDL_rect.h
文件 12620 2017-11-29 11:45 CAM\sdl2lib\SDL_joystick.h
文件 33865 2017-11-29 11:45 CAM\sdl2lib\SDL_audio.h
文件 5255 2017-11-29 11:45 CAM\sdl2lib\SDL_filesystem.h
文件 1254 2017-11-29 11:45 CAM\sdl2lib\SDL_opengles.h
文件 1779 2017-11-29 11:45 CAM\sdl2lib\SDL_test_memory.h
文件 1552 2017-11-29 11:45 CAM\sdl2lib\SDL_opengles2.h
............此处省略82个文件信息
- 上一篇:蒙特卡洛法的程序代码
- 下一篇:时间轮 C语言版
相关资源
- C++多线程网络编程Socket
- 人脸识别(opencv_facedetect_v4l2)
- socket客户端.c
- socket服务端.c
- socket tcp应用
- socket通讯c++源码(客户端+服务端)
- MFC的异步网络通讯应用程序
- 各种关于CAsyncSocketCSocket内幕及其用法
- MFC多人聊天室
- 使用socket套接字发送udp数据包
- CAsyncSocket异步实现服务器与客户端
- 基于socket文件传输的实现源码[C++]
- C语言实现TCP/IP协议通信和UDP协议通信
- c语言+UDP+DES加密+socket编程
- 局域网下,手机可以和电脑通过sock
- 计算机网络课程设计之Ping程序含C++原
- 基于c++和winsocket的局域网聊天源代码
- 基于udp的socket编程
- VC++,CSocket实现网络聊天,可发文件,
- 基于TCP协议的文件传输编程
- Socket编写的一个基于MFC的聊天程序源
- C++写的网络共享白板
- 基于TCP/IP socket的局域网聊天系统
- C++编写的多线程C/S模式仿QQ软件
- c++ socket 实现 语音 通信 双工
- MFC Csocket实现点对点文件传输
- CSocket端口扫描源代码MFC、VC++耿网出品
- 简单的基于MFC的Socket点对点对话客户
- MFC简单的客户端服务器通信软件
- 网络五子棋双人对弈系统
评论
共有 条评论