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

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。我修改的如下:

基于itop4412在Linux最小系统下的USB摄像头采集视频的H264编码_第1张图片

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

#make

#make install

编译成功:

基于itop4412在Linux最小系统下的USB摄像头采集视频的H264编码_第2张图片


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

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

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

视频:

这里写图片描述

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

基于itop4412在Linux最小系统下的USB摄像头采集视频的H264编码_第3张图片

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

 ./x264 -o text_1.h264 test_640x480.yuv 

编码过程:

基于itop4412在Linux最小系统下的USB摄像头采集视频的H264编码_第4张图片

可得到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文件的嵌入式视频监控系统

你可能感兴趣的:(itop4412相关学习)