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

     

  • 相关阅读:
    DNNClassifier 深度神经网络 分类器
    浏览器对MP4视频 帧宽度 高度的兼容性
    UnicodeEncodeError:'latin-1' codec can't encode character
    文件夹下 文件计数
    the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
    the “identity” of an object
    广告特征 用户特征
    如果一个维度全覆盖,则有效维度应该对该维度全覆盖
    a high-level neural networks AP
    使用 LDA 挖掘的用户喜好主题
  • 原文地址:https://www.cnblogs.com/topeet/p/13633513.html
Copyright © 2011-2022 走看看