使用live555作视频监控
1 代码目录
.
├── main.cpp
├── Makefile
├── videoMonitor.cpp
├── videoMonitor.h
├── x264Encoder.cpp
└── x264Encoder.h
2 代码结构
结构很简单,我将所有工作封装到class VideoMonitor中,该类对外提供简单工作接口,包括类初始化、开始视频监控、停止视频监控,总共用到了两个子线程,一个用来读取摄象头数据,编码写入到FIFO;另外一个线程用来启动live555,实现推流工作。

3主要源码
main.cpp
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <stdlib.h>
4
5 #include "videoMonitor.h"
6
7 VideoMonitor VM;
8
9 int main()
10 {
11 VM.init();
12
13 int fun;
14 while(1){
15 scanf("%d", &fun);
16
17 switch(fun){
18 case 0:
19 if(VM.startMonitor() == 0){
20 printf("start monitor!\n");
21 }
22 break;
23 case 1:
24 if(VM.stopMonitor() == 0){
25 printf("stop monitor!\n");
26 }
27 break;
28 default:
29 break;
30 }
31 }
32
33 return 0;
34 }
main.cpp
代码很简单,就是实例化VideoMonitor,并通过输入0,1控制监控的起停。
videoMonitor.h
1 #ifndef _VIDEO_MONITOR_H_
2 #define _VIDEO_MONITOR_H_
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <unistd.h>
7 #include <pthread.h>
8
9 //file
10 #include <sys/types.h>
11 #include <sys/stat.h>
12 #include <fcntl.h>
13
14 //opencv
15 #include <cxcore.h>
16 #include <highgui.h>
17 #include <cv.h>
18
19
20 //live555
21 #include <liveMedia.hh>
22 #include <BasicUsageEnvironment.hh>
23 #include <GroupsockHelper.hh>
24 #include <sys/types.h>
25 #include <sys/stat.h>
26
27 #include "x264Encoder.h"
28
29 #define FIFO "/tmp/fifo"
30
31 class VideoMonitor
32 {
33 public:
34 VideoMonitor();
35 ~VideoMonitor();
36 int init();
37 int startMonitor();
38 int stopMonitor()

最低0.47元/天 解锁文章
2913

被折叠的 条评论
为什么被折叠?



