您的位置:首页 > 运维架构 > Linux

基于itop4412在Linux最小系统下的USB摄像头采集视频的H264编码

2017-01-11 00:09 513 查看
1.实验目的:实现linux系统下的H264编码(Linux最小系统)

2.实验平台:迅为4412开发板。

3.实验流程:

(1)编码代码:

V4L2视频采集与H.264编码源码大放送:Linux视频采集与编码(三)

(2) x264库编译:

我是参考前面代码的博主实现的,所以我在下载x264库的版本也相同。

为:x264-snapshot-20120101-2245

下载地址:(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/)

解压: #tar -vxf x264-snapshot-20120101-2245

#cd x264-snapshot-20120101-2245
# ./configure --host=arm-linux --prefix=/opt/wecam/ffmpeg --enable-shared --disable-asm


配置选项中已经添加了host的选项,makefile就不用再修改,但是要修改config.mak。我修改的如下:



这个配置比较关键,如果没有正确修改,后面的操作就会出错!

#make

#make install


编译成功:



编译完成后,在目标路径下(/opt/wecam/ffmpeg)可以得到三个文件夹:



分别是可以执行的文件:x264 ; 头文件;x264库文件。至此,x264库的编译就完成了。

(3)编译源文件,从(1)得到的代码,根据自己的开发板经过修改后,将x264库中编译出来的 lib 和 include 两个文件夹拷贝到源代码文件中替换掉。



将Makefile文件中的编译器替换如下:



执行 make 编译,在路径下的 bin 文件夹中可以得到可执行文件。

(4) 测试

将可执行文件和编译得到库文件通过tftp服务器方式下载到开发板上,chmod 修改权限后执行,可在当前路径下得到采集的 yuv 格式的视频和经过编码的 h264 两个视频文件。

库文件:放到开发板的 /lib/目录下



视频:



可以明显的看到经过编码后的视频减小了很多。拷贝到电脑,用 VLC media player 播放器播放 h264 文件,发现视频的色彩变成了黑白,继续解决。至少已经实现了视频的编码了,嘿嘿。



(5)直接使用编译得到的 x264 文件编码采集到的 yuv 视频文件。将采集到的视频文件先通过 mv 重新命名 cam_usb_test.yuv –> test_640x480.yuv ,分辨率是可以选择的。(必须先重新进行文件名的修改,否则在运行x264编码的时候会出错)

./x264 -o text_1.h264 test_640x480.yuv


编码过程:



可得到text_1.h264文件。用 VLC 可进行播放,但是出现花屏,我想是不是分辨率的问题呢?

x264输出统计值含义(http://blog.csdn.net/dancing_night/article/details/44852649)

参考:

1.mini2440下UVC摄像头采集视频并且用H264压缩

2.linux编译x86和arm平台的x264

3.远程监控系统项目总结

4.arm mini2440 基于v4l2 ffmpeg x264的视频远程监控

5.s5pv210+v4l2+h264硬件编码+RTP协议传输+SDP文件的嵌入式视频监控系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: