SDL2的安装可以参考博客:https://blog.csdn.net/u011734326/article/details/90346495
在使用SDL2显示摄像头影像时,遇到了一个不可思议的问题,log如下:
SDL_Init failed:-1
No available video device
SDL_Init返回-1, 原因是:No available video device.
本人采用的运行环境是基于mac笔记本virtualBox的ununtu 16.04,出现以上低级问题, 第一感觉就是怀疑是不是缺少什么库导致SDL不具备发现video device的能力了。于是登录SDL官网http://wiki.libsdl.org/FrontPage,查找相关资料,看到以下说明:
于是查询: ldconfig -p | grep X11
应该是缺少libX11.so,执行命令:
sudo apt-get install libx11-dev
sudo apt-get install xorg-dev
然后写了一个简单的测试程序来验证SDL是否正常,代码如下:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <linux/videodev2.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <SDL2/SDL.h>
void SDL2_init()
{
int rc;
//SDL_SetMainReady();
if( (rc=SDL_Init( SDL_INIT_VIDEO )) !=0){
printf("SDL_Init failed:%d\n",rc);
printf("%s\n",SDL_GetError());
return;
}
SDL_Window * screen;
screen = SDL_CreateWindow("SDL2 title", SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,screen_w, screen_h, SDL_WINDOW_OPENGL);
if(!screen){
printf("SDL2: could not create widow\n");
return ;
}
}
int main(void)
{
SDL2_init();
return 0;
}
编译: gcc main.c -lSDL2
执行后依然出现: No available video device.
抱着怀疑的态度,重新编译安装了SDL2, 程序运行成功,在Ubuntu窗口中出现了我们创建的窗口: