标签:
整体框架:
一、发送端
1、摄像头通过V4L2接口得到YUV视频格式,可以在win7上用yuvplayer播放
2、使用4412硬件编码模块MFC提供的接口进行硬件编码,得到.264文件,可以在win7上用VLC播放。
3、将.264文件通过live555进行流化。
二、接收端
1、使用live555与发送端连接接收.264文件。
2、用用4412硬件编码模块MFC提供的接口进行硬件解码,得到yuv格式。
3、使用QT显示视频。
注意要点:
要使用三星硬件编码模块,在4412提供的linux3.0版本里,不但要求开发板上的系统要在开机后加载MFC固件,在使用MFC提供的API时也需要MFC的头文件和源文件才能使用API,这些文件不在板上提供的linux内核原文件里,而在该内核对应的安卓代码中,可以用linux中的find指令在其中进行查找,注意选择正确的源文件。要在本工程中使用MFC模块,有两种方法一种是将mfc模块头文件,源文件均放置在本工程文件夹中,在工程中进行包含。另一种是将头文件放在编译器默认的查找路径上,比如如果是本地开发,那么本地编译器会到/usr/include目录下查找,而如果是交叉编译,则交叉编译器也需要一个根文件系统,在根文件系统的/usr/include目录下去查找头文件,用buildroot创建的交叉编译工具链的根文件系统目录就是buildroot-2014.05/output/host/usr/arm-gainuo-linux-gnueabihf/sysroot/,当然还可以在编译时给GCC添加额外参数I,指定头文件查找路径。而如果因为商业性问题没有源文件只提供了链接库文件,那么同头文件一样,可以将链接库文件放置连接器默认的查找路径上,或者给GCC添加L参数指定库路径。而一般板商提供的编译器是找不到根文件系统路径的(我是不知道怎么弄的,如果交叉编译工具链和本地工具链共用主机的根文件系统路径,那么是很有可能因为版本问题导致头文件不兼容问题的,比较麻烦)。
然后是如何以上步骤中的发送端和接收端其实是集于一体的,但他们相互之间是没有依赖关系的,并行的两个进程就是了。
还有就是如何将发送端的三个步骤和接收端的三个步骤分别串起来,不要用文件作为中转而是直接使用内存数据,不要读写文件,浪费时间。
而串起的各个步骤中会有速率匹配的问题。
最后要将所用C语言尽可能改写成C++接口
标签:
原文地址:http://www.cnblogs.com/cenglinjinran/p/4663544.html