摘要
通过移植ffmpeg来实现从视频中提取音频并保持为MP3格式其中ffmpeg默认只包含MP3格式解码器,不包含MP3格式编码器,为提取音频需要额外下载mp3编码库。若不需要次功能可略过。
1.下载ffmpeg安装包
本人采用版本号为ffmpeg-0.8.15.tar.bz2, 下载官网为 http://ffmpeg.org/download.html)
2下载MP3音频编码库
下载libmp3lame源码其官网为http://lame.sourceforge.net/download.php (我的版本:lame-3.99.5.tar.gz)
3编译lame库(如果不需要提取音频功能可以跳过)
$ mkdir /home/lame 建立安装目录/home/lame
$ tar -zxvf lame-3.99.5.tar.gz 解压lame-3.99.5.tar.gz
$cd lame-3.99.5 进入解压后目录
$./configure --enable-shared
--enable-static #1 静态编译
- -prefix=/home/lame # 2 安装目录
CC=arm-none-linux-gnueabi-gcc #3 交叉编译工具gcc
AR=arm-none-linux-gnueabi-ar #4 交叉编译工具ar
--host=arm #5 在arm架构开发板执行
注:3.4项可在配置文件confgure中查看得知为编译所需要的编译工具,且必须在配置时赋予
$make && make install #编译及安装
4编译ffmpeg库
$mkdir /home/ffmpeg #建立安装目录
$tar -xvf ffmpeg-0.8.15.tar #解压
$cd ffmpeg-0.8.15 #进入解压目录
$./configure --cross-prefix=arm- #指定交叉编译工具arm-none-linux-gnueabi-ar
--enable-cross-compile
--target-os=linux #运行在linux操作系统中
--cc=arm-linux-gcc #指定编译工具arm-none-linux-gnueabi-gcc
--arch=arm #在arm架构开发板上运行
--prefix=/usr/local/ffmpeg #生成可执行文件及其相关库保存路径
--enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver--enable-swscale --enable-pthreads --disable-armv5te --disable-armv6
--disable-armv6t2 --disable-yasm --disable-stripping
--enable-libmp3lame #使能MP3格式编码器
--extra-cflags=-I/home/lame/include #指定编译lame时生成的相关头文件路径(编译ffmpeg库)
--extra-ldflags=-L/home/lame/lib #指定编译lame时生成相关库文件路径(编译ffmpeg库)
$make && make install #编译文件及安装
5:将生成的可执行文件及其相关库迁移到arm开发板中
通过NFS挂载的方式arm开发板与PC端实现交互,本文nfs挂载点目录为/root/rootfs/rootfs
<1>:将编译ffmpeg时生成的库文件复制到开发板目录下
$cd /home/ffmpeg/lib #进入ffmpeg 相关库文件目录中
$cp *so* /root/rootfs/rootfs/usr/local/lib #将所有库文件复制到开发板挂在目录中去
<2>:将生成的可执行文件复制到开发板中
$cd /home/ffmpeg
$chmod -R 777 bin #将bin文件内三个可执行文件赋予执行权限
$cp * /root/rootfs/rootfs/bin #将生成的三个可执行文件复制到开发板目录中去
#注:开发板目录目录要在环境变量范围内,否则找不到可执行文件
6:实例:提取00.MP4视频文件中音频并保存为01.mp3
<1>
$ffmpeg -i 00.mp4 -f mp3 -vn 01.mp3 #
<2>如果开发板支持还可以链接摄像头进行视频录制
$ffmpeg -f video4linux2 -s 1024*600 -r 10 -i /dev/video0 output.mp4 #录制视频保存为output.mp4