资源简介
安装好需要的库以后,可直接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语言版
相关资源
- Windows+Sockets网络开发——基于Visual+
- MFC 用SOCKET实现图片分包传送和接收并
- socket多人聊天程序C语言版(一)
- MFC下CSocket编程详解代码
- Linux下C语言编写服务端、客户端程序
- 基于SOCKET的文件传输服务端+客户端
- MFC socket通信,socket通讯
- socket通信MFC版本
- C语言socket编程指南(讲解+)
- C实现基于Socket实现自定义协议通信
- MFC:Socket编程—TCP服务端和多个客户
- ABB机器人的socket通信UDPRapid代码
- C++ IOCP socket完成端口视频教程及源码
- p2p的C语言编写,LINUX可执行程序+运行
- socket模拟工具
- WebsocketPP C++构建Web服务器源代码
- v4l2 mfc 视频解码
- vc网络聊天室源代码mfc聊天器VC网络编
- c++ builder socket
- mfc聊天程序,利用TCP/IP完成双向数据
- 基于socket和opencv在linux中实现摄像头实
- HJ212TCPServerMFC.rar(MFC HJ212TCP Socket服务
- HJ212TCPServerC.rar(TCP Socket多线程服务端
- C++ 纯SOCKET实现FTP客户端类
- MFC网络编程源代码vc网络编程mfc sock
- VC6.0下的socket编程 实现了UDP数据传输
- ABB机械臂与PC通讯(socket),附RAPID和
- C++多线程SOCKET收发
- c++ websocket服务器和html客户端
- vc++ socket编程(服务器/客户端)
评论
共有 条评论