zoukankan      html  css  js  c++  java
  • iTOP-iMX6ULL 开发板-FFmpeg 移植实现视频采集

    本文转自迅为i.MX6ULL开发板使用教程第九十八章

    FFmpeg(Fast Forward Mpeg)是一种可以用来记录、转换数字音频、视频,并能将其转化为流的多媒体视频处理工具,拥有视频采集功能、视频格式转换、视频抓图等功能。本文档介绍如何将 ffmpeg 移植到 ARM 平台。

    硬件平台:使用迅为 i.MX6ULL 开发板;USB 免驱摄像头

     

    软件工具:交叉编译工具为arm-linux-gnueabihfyocto Qt5文件系统。

     

    98.1 编译 x264

    获取 x264 源码,可以从网站 http://www.videolan.org/developers/x264.htm 下载,进入如图 98.1.1

    面,点击下载;或者用我们已经下载压缩包(与文档同一目录下的 x264-master.tar.bz2);

    将压缩包放到 ubuntu 并解压,tar -vxf x264-master.tar.bz2 ,创建文件夹_x264_install 用来存放编译后

    生成的文件,mkdir _x264_install

     

    进入解压后的路径 x264-master,执行以下命令:

    ./configure --enable-shared --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ --host=arm-linux-gnueabihf

    --disable-asm

    参数说明:

    --prefix=/home/ubuntu/work/ffmpeg/_x264_install/ :指定编译后存放路径

    --host=arm-linux-gnueabihf :指定交叉编译链,用户需要修改为自己的交叉编译器

    --enable-shared :允许共享

    --disable-asm:跳过汇编

     

    config.mak vi config.mak (

    arm-linux-gnueabihf-gcc)

    SYS_ARCH=ARM

    SYS=LINUX

    CC= arm-linux-gnueabihf-gcc

    LD=arm-linux-gnueabihf-gcc -o

    AR= arm-linux-gnueabihf-ar rc

    RANLIB= arm-linux-gnueabihf-ranlib

     

    执行 make,成功后如图 98.1.5:

     

    执行 make install,成功后如图 98.1.6:

     

    查看文件夹_x264_install,发现生成的库文件已经在此目录下:

     

    98.2 编译 FFmpeg

    FFmpeg 下载地址:http://ffmpeg.org/download.html,已经把下载好的压缩包放在了文档同一目录下。

     

    下载后解压:tar -vxf ffmpeg-snapshot.tar.bz2 ,创建文件夹_ffmpeg_install 存放生成的文件:

     

    进入解压后的 ffmpeg 文件夹,修改 Makefile,添加编译选项:CFLAGS += -fPIC

     

    配置编译选项,执行以下命令:

    ./configure

    --cross-prefix=arm-linux-gnueabihf-

    --enable-cross-compile

    --target-os=linux

    --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_install --enable-shared

    --disable-static

    --enable-gpl

    --enable-nonfree

    --disable-ffplay

    --enable-swscale

    --enable-pthreads

    --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-x86asm

    --disable-stripping --enable-libx264

    --extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include

    --extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib --extra-libs=-ldl

    参数说明:

    --cross-prefix=arm-linux-gnueabihf-:配置为自己的交叉编译工具

    --cc=arm-linux-gnueabihf-gcc:配置为自己的交叉编译工具

    --arch=arm --prefix=/home/ubuntu/work/ffmpeg/_ffmpeg_install:

     

    --extra-cflags=-I/home/ubuntu/work/ffmpeg/_x264_install/include :改为

     

    --extra-ldflags=-L/home/ubuntu/work/ffmpeg/_x264_install/lib

    配置成功后如图 98.2.6

     

    执行 make 开始编译,完成后如图 98.2.7:

    执行 make install,成功后生成的文件在我们创建好的_ffmpeg_install 目录下:

     

    98.3 移植到 ARM 开发板

    将_x264_install 下的库文件拷贝到开发板的/lib/目录下, cp *x264* /lib/;

     

    将_ffmpeg_install/lib 下的 so 库文件全部拷贝到开发板的/lib/目录下,如有警告可忽略;

     

    将_ffmpeg_install/bin/目录下的 ffmpeg 拷贝到开发板的/bin/目录下:

     

    98.4 测试

    插上 USB 免驱摄像头,设备节点为/dev/video2,在开发板终端执行以下命令:

    ffmpeg -f video4linux2 -s 320x240 -i /dev/video2 /mnt/topeet.avi

    会出现如下所示:

     

    开发板的/mnt/目录下会出现 topeet.avi 文件,

     

    将此文件拷贝到 windows 上,用视频播放设备打开:

     

    能看到录像说明移植成功。

    转自:http://topeetboard.com

     

  • 相关阅读:
    SQL学习笔记 where子句用法,like关键字 嵌套查询
    Mvc视图构建辅助方法
    EXtjs 解决ie9 不支持extjs对象的 “createContextualFragment”属性或方法
    认识MVC
    Mvc基本切入及controller认识
    Extjs4.0 下载文件的说明
    Extjs4 Panel中使用autoload无法加载页面文件
    Mvc视图表单辅助方法
    js倒计时方法
    web confing 处理全局编码方式
  • 原文地址:https://www.cnblogs.com/topeet/p/13633513.html
Copyright © 2011-2022 走看看