• 大小: 485KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C/C++
  • 标签: socket  V4L2  X264  SDL2  C/C++  

资源简介

安装好需要的库以后,可直接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个文件信息

评论

共有 条评论