基于h.264编码的视频监控(软编码)

基于H.264(x.264)编码的视频监控

大概流程为:

开发板:

            1.读取摄像头

            2.进行rtsp传输(live555)

            3.不断的进行2和3.

pc机:

           利用vlc进行接收到板子发送过来的数据并显示。

第一步移植x264到开发板:(当然我们可以交叉编译为静态链接,然后把可执行程序拷贝到开发板就可以)

参考别人的步骤:

http://blog.csdn.net/liuzongming1988/article/details/8234893

第二部移植live555到开发板:

      参考别人的步骤:

http://blog.csdn.net/lawishere/article/details/8182952

注:第一步和第二步已经是很早之前完成的好像是这么回事。

        第二步主要是把Live555MediaServer这个可执行文件拷贝到开发板。

第三步就是主要工作了:

这里主要是用了一个小技巧,在目录下创建一个有名fifo把读取摄像头数据的数据可以发送到live555MediaServer这个程序。

fifo就起到一个桥梁的作用。

在工作录下有两个程序(3个文件)

1.读取摄像头程序

2.live555MediaServer

3.fifo文件。

假设我们所创建的fifo名称为test.264

在pc机(我的为ubuntu)下安装vlc

打开vlc

选择Open NetWork Stream...

如上所设置,IP则开发板的IP,至于端口8000 默认的Live555MedisServer是8000的

test.264就是刚才开发板所创建的fifo文件名称。

我擦、这么晚了。。回宿舍睡觉去了。。等有空了在把代码和开发板的一些相关情况发出来。

今天也在6410上进行了硬编码的了,在pc机则用ffmpeg进行解码 opencv显示。

到时候在一起发上来。~~~~

学生党 伤不起啊!

继续!!!!!

我所用的摄像头采集的图像为yuv422(交叉YUVYUVYUV)格式,所以需要进行

格式的转换,代码里面有个函数为

yuv422Toyuv420I

作用就是格式的转换,至于怎么读取摄像头数据的话就不多说了(v4l2)。。。

软件编码的话可以详细的看代码里面,需要说明的是一个函数

x264_param_default_preset(param, "ultrafast", "zerolantency");

参数"ulrtafast"和"zerolantency"在x264源码包下common目录下有一个文件为common.c

里面有函数

void x264_param_default(x264_param_t *param);

static int x264_param_apply_preset(x264_param_t *param, const char *preset);

此时的const char *preset = "ultrafast";

static int x264_param_apply_tune(x264_param_t *param, const char *tune);

此时的const char *tune = "zerolantency";

可以到此源代码下观察还会有其他选项,对于实时监控则用此两个参数即可。

#  ./live555Server 

输入rtsp://172.19.69.80/test.264

IP为pc机上的IP  test.264就是fifo

效果图就是如下所示:

看到它的窗口名称就是刚才vlc上所设置的。

流格式:rtsp

开发板IP:172.19.69.50

端口:  8000

文件名: test.264

附上开发板上运行的客户端程序:

http://download.csdn.net/detail/darling54454/7439873

发布了21 篇原创文章 · 获赞 1 · 访问量 6096

猜你喜欢

转载自blog.csdn.net/darling54454/article/details/28145591