資源簡(jiǎn)介
將mjpeg-streamer流,保存為視頻文件。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include???
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include??
#include?
#include?“jpg.h“
#include?“capture.h“
#include?“h264encoder.h“
struct?buffer?*?buffers?=?NULL;
static?unsigned?int?n_buffers?=?0;
static?char?*video_name=“/dev/video0“;
static?int?video_fd??=?-1;
int?h264_fd;
//static?unsigned?int?number?=?0;
//static?unsigned?long?file_length;
//static?unsigned?char?*file_name;
Encoder?en;
uint8_t?*h264_buf?=?NULL;
int?count_flag?=?1;
void?open_video_device?(void)??????//創(chuàng)建視頻文件,打開(kāi)攝像頭。
{
?????
struct?stat?st;?//store?the?device?information
//get?the?device?information?
if?(-1?==?stat(video_name&st))
{
fprintf(stderr?“?Cannot?identify?‘%s‘:?%d??%s\n“
video_nameerrnostrerror(errno));
exit(EXIT_FAILURE);
}
//?test?the?device?is?or?isn‘t?a?special?character?file?
//?because?the?camera?device?is?a?charcter?file?on?linux
if?(!S_ISCHR(st.st_mode))//if?it?isn‘t?character?file?enter?if
{
fprintf(stderr“%s?is?no?device?\n“video_name);
exit(EXIT_FAILURE);
}
//open?device?on?the?read??write?and?nonblock?mode???
if?(-1?==?(video_fd?=?open(video_nameO_RDWR?|?O_NONBLOCK0)))
{
fprintf(stderr“Cannot?open?‘%s‘?:?‘%d‘%s?\n“
video_nameerrnostrerror(errno));
exit(EXIT_FAILURE);
}
else?
printf(“camera?device?is?open?OK?!?camera?name?is?%s?\n“
video_name);
}
void?query_video_device?(void)
{
struct?v4l2_capability?????cap;
/*?It?is?used?to?identify?kernel?devices?compatible?with?this?specification?and?to?abtain?information?about?driver?and?hardware?capabilities*/
if?(-1?==?ioctl?(video_fd?VIDIOC_QUERYCAP&cap))???/*?獲取設(shè)備支持的操作?*/?
{
perror(“VIDIOC_QUERYCAP:“);
exit?(EXIT_FAILURE);
}
//其中域?capabilities?代表設(shè)備支持的操作模式,
//常見(jiàn)的值有?V4L2_CAP_VIDEO_CAPTURE?|?V4L2_CAP_STREAMING?表示是一個(gè)視頻捕捉設(shè)備并且具有數(shù)據(jù)流控制模式;
//另外?driver?域需要和?struct?video_device?中的?name?匹配。
if?(!(cap.capabilities?&?V4L2_CAP_VIDEO_CAPTURE))????
{
fprintf(stderr?“%s?is?no?video?capture?device\n“video_name);
exit(EXIT_FAILURE);
}
else?
{
printf(“%s?is?a?video?capture?device!\n“video_name);
}
if?(!(cap.capabilities?&?V4L2_CAP_READWRITE))
{
fprintf(stderr?“%s?does?not?support?read?i/o\n“video_name);
}
else?
{
printf(“%s?support?read?i/o?!\n“video_name);
}
if?(!(cap.capabilities?&?V4L2_CAP_STREAMING))
{
fprintf(stderr“%s?does?not?support?streaming?i/o\n“video_name);
}
else
{
printf(“%s?supports?streaming?i/o?method!\n“video_name);
}
printf(“The?driver?name?is?%s\n“cap.driver);
printf(“The?device?name?is?%s\n“cap.card);
printf(“The?device?bus?is?%s\n“cap.bus_info);
}
void?change_video_properties(void)????//?設(shè)置特性
{
struct?v4l2_cropcap?cropcap;
struct?v4l2_crop??crop;
CLEAR(cropcap);
cropcap.type?=?V4L2_
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????1069831??2013-12-13?16:10??farsight_camera_arm\bin\cl_camera
?????文件??????12408??2013-12-09?14:03??farsight_camera_arm\capture.c
?????文件????????575??2013-12-02?11:45??farsight_camera_arm\capture.h
?????文件??????40212??2013-12-13?16:10??farsight_camera_arm\capture.o
?????文件???????3045??2013-12-01?16:14??farsight_camera_arm\h264encoder.c
?????文件????????574??2012-11-13?20:51??farsight_camera_arm\h264encoder.h
?????文件??????17104??2013-12-13?16:10??farsight_camera_arm\h264encoder.o
?????文件???????1616??2013-11-23?16:02??farsight_camera_arm\include\jconfig.h
?????文件??????12714??2009-11-20?16:01??farsight_camera_arm\include\jmorecfg.h
?????文件??????48475??2009-11-16?19:44??farsight_camera_arm\include\jpeglib.h
?????文件??????40915??2013-12-02?13:23??farsight_camera_arm\include\x264.h
?????文件????????245??2012-04-17?13:43??farsight_camera_arm\include\x264_config.h
?????文件???????3583??2013-12-02?09:42??farsight_camera_arm\jpg.c
?????文件????????940??2013-12-13?16:10??farsight_camera_arm\jpg.h
?????文件??????19024??2013-12-13?16:10??farsight_camera_arm\jpg.o
?????文件????1096477??2013-11-23?16:07??farsight_camera_arm\lib\libjpeg.so
?????文件????1115908??2012-11-15?15:27??farsight_camera_arm\lib\libx264.a
?????文件????1046287??2012-11-15?15:27??farsight_camera_arm\lib\libx264.so.120
?????文件????1115908??2012-11-15?15:27??farsight_camera_arm\lib\pkgconfig\libx264.a
?????文件????1046287??2012-11-15?15:27??farsight_camera_arm\lib\pkgconfig\libx264.so
?????文件????1046287??2012-11-15?15:27??farsight_camera_arm\lib\pkgconfig\libx264.so.120
?????文件????????278??2012-11-15?15:27??farsight_camera_arm\lib\pkgconfig\x264.pc
?????文件???????1533??2013-12-02?11:37??farsight_camera_arm\main.c
?????文件???????5624??2013-12-13?16:10??farsight_camera_arm\main.o
?????文件????????315??2013-12-02?13:34??farsight_camera_arm\Makefile
?????文件??????34381??2013-11-26?21:00??farsight_camera_arm\tags
?????目錄??????????0??2013-12-18?18:41??farsight_camera_arm\lib\pkgconfig
?????目錄??????????0??2013-12-18?18:41??farsight_camera_arm\bin
?????目錄??????????0??2013-12-18?18:41??farsight_camera_arm\include
?????目錄??????????0??2013-12-18?18:41??farsight_camera_arm\lib
............此處省略4個(gè)文件信息
評(píng)論
共有 條評(píng)論