linux CentOS怎么设置FFmpeg

一、yum安装FFmpeg

 

1.安装依赖包

  1. 安装autoconf

cd /root/source
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz    
tar xvf autoconf-2.69.tar.xz
cd autoconf-2.69
./configure
make
make install
  1. 安装automake

cd /root/source
wget http://ftp.gnu.org/gnu/automake/automake-1.15.tar.xz  
tar xvf automake-1.15.tar.xz
cd automake-1.15
./configure
make
make install
  1. 安装libtool(FAAC需要)

cd /root/source
wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz
tar xvf libtool-2.4.6.tar.xz
cd libtool-2.4.6
./configure
make
make install
  1. 安装yasm支持汇编优化(FFmpeg需要)

cd /root/source
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
  1. 安装MP3支持库LAME

cd /root/source
wget http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz  
tar xvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
make install
  1. 安装AAC支持库FAAC
    make时报错:mpeg4ip.h:126: 错误:对‘char* strcasestr(const char,
    const char
    )’的新声明
    需要修改common/mp4v2/mpeg4ip.h第123行至129行内容:

#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif

修改为:

#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif

编译

cd /root/source
wget http://jaist.dl.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.bz2 
tar xvf faac-1.28.tar.bz2
cd faac-1.28
./bootstrap
./configure --with-mp4v2 
#按前文修改mpeg4ip.h内容
make
make install

最近,我在Linux Centos
6.6上安装了最新的ffmpeg,本教程会教新手用户如何安装ffmpeg和从源代码编译。我希望这将帮助你。

1.最偷懒的方式就是yum安装了,自动解决依赖。不过CentOS系统默认无FFmpeg源,企业版
Linux
附加软件包EPEL源也不包含,需要手动添加yum源配置/etc/yum.repos.d/dag.repo:

首先当然是需要安装ffmpeg软件包,可以直接从源中进行安装!但我安装后并不能成功执行后面所需要执行的转换命令,所以我只能重新从源码编译安装ffmpeg:

主要提示:可能受限于FFmpeg版本的缘故,安装了AAC库,在ffmpeg-3.2.4版本下编译ffmpeg,使用–enable-libfaac选项时,会报找不到libfaac错误。百度了一番,看了FFmpeg的WiKi百科,发现它使用libfdk-aac库替代libfaac库,安装后测试果然解决问题。
cd /root/source
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --disable-shared --with-pic
#--with-pic 很重要,一定要带上,不然在编译FFmpeg时会报错
make
make install
  1. 安装AMR支持库opencore-amr

cd /root/source
wget http://jaist.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz
tar xvf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
./configure
make
make install
  1. 安装通用音乐音频编码格式支持库libvorbis

1.

打开网页http://www.ffmpeg.org/releases/
,找到最新的版本,然后右击选择复制链接

[dag]
name=Dag RPM Repository for Red
Hat Enterprise Linux
baseurl=
gpgcheck=0
enabled=1

(1)下载ffmpeg源码包,注意版本不能太高,应该与直接从源中安装的版本大抵相当最好;我刚开始下的版本比较高,编译时提示说有一个编译选项找不到,我到网上也没搜出什么结果,所以只能又降低了版本,最后使用的是ffmpeg-0.4.9-p20050906.tbz!

支持库libvorbis需要依赖libogg,先安装libogg库
cd /root/source
wget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.xz
tar xvf libogg-1.3.2.tar.xz
cd libogg-1.3.2
./configure
make
make install

2.

在Linux中输入命令wget https://www.ffmpeg.org/releases/ffmpeg-3.2.2.tar.xz(这里的https://www.ffmpeg.org/releases/ffmpeg-3.2.2.tar.xz
就是刚才复制的链接,其中3.2.2就是2016.11.26最新的版本号,你也可以直接复制我的链接并修改版本号为最新的)以下载最新的版本
你可以在/root目录下看到ffmpeg-3.2.2.tar.xz压缩包。

2.在线安装FFmpeg

(2)参考文档  进行编译安装,在编译的时候可能还会有很多错误提示,但多半是由于某些头文件找不到所致,所以直接从源中安装提供这些头文件的包即可(技巧提示,可以在源中直接搜索头文件*.h去掉后缀.h的名称*即可,一般需要安装其对应的*-dev包)!

再安装libvorbis库
cd /root/source
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz
tar xvf libvorbis-1.3.5.tar.xz
cd libvorbis-1.3.5
./configure
make
make install
  1. 安装x264库支持H.264视频转码

cd /root/source
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-shared
make
make install
  1. 安装Xvid库支持MPEG-4转码

cd /root/source
wget http://downloads.xvid.org/downloads/xvidcore-1.3.3.tar.bz2
tar xvf xvidcore-1.3.3.tar.bz2
cd xvidcore/build/generic
./configure
make
make install
  1. 安装Theora视频压缩支持库

cd /root/source
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.xz
tar xvf libtheora-1.1.1.tar.xz
cd libtheora-1.1.1
./configure
make
make install
  1. 安装NUT支持库

3.

输入命令tar -xvf ffmpeg-3.2.2.tar.xz以解压到当前/root目录下

yum -y install ffmpeg

安装完毕之后就可以进行转码操作了:

该软件需要用svn获取源代码,svn可以直接用yum install svn来装。

安装时64位Linux系统需要修改文件config.mak

# 在最后一个CFLAGS下一行增加:
CFLAGS += -fPIC

否则安装FFmpeg make时报错:

/usr/local/lib/libnut.a: could not read symbols: Bad value

cd /root/source
svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut
cd libnut
./configure
#configure后修改上述的config.mak
make
make install
  1. 安装VP8/VP9编解码支持库

cd /root/source
#git clone http://git.chromium.org/webm/libvpx.git
#直接获取比较好,没装git
wget -O libvpx.zip https://codeload.github.com/webmproject/libvpx/zip/master
unzip libvpx.zip
cd libvpx
./configure --enable-shared
make
make install
  1. 安装FFmpeg最新版

cd /root/source
wget http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2
tar xvf ffmpeg-3.2.4.tar.bz2
cd ffmpeg-3.2.4
#老版本的--enable-libfaac,已替换为--enable-libfdk-aac
./configure --enable-version3 --enable-libvpx --enable-libfdk-aac --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --enable-libnut --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-shared
make
#若出现下述错误,在此修改config.mak文件,然后再make,切记别重新configure
make install

若make的时候,报以下错误

/usr/bin/ld: libavcodec/mqc.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
libavcodec/mqc.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status

解决方法是:

#config.mak L75加入 -fPIC,然后重新编译
#直接替换,顺序可能不一样
HOSTCFLAGS=-O3 -g -std=c99 -Wall -fPIC
  1. 添加动态链接库配置

echo '/usr/local/lib' >> /etc/ld.so.conf.d/local.conf
#更新缓存
ldconfig

4.

输入cd ffmpeg-3.2.2以切换到ffmpeg-3.2.2目录,然后输入./configure创建配置文件

二、编译安装FFmpeg

(1) 对于普通的avi视频文件,可以直接使用命令:
ffmpeg -y -i “tt.avi” -vcodec xvid -s 400×240 -r 29.97 -b 1500 -acodec
aac -ac 2 -ar 48000 -ab 128 -vol 200 -f mp4   “tt.mp4”

安装到这里就大功告成啦,一路安装真心不容易,查看下版本:
[root@localhost djnj]# ffmpeg -version
ffmpeg version 3.2.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --enable-version3 --enable-libvpx --enable-libfdk-aac --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --enable-libnut --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-shared
libavutil      55. 34.101 / 55. 34.101
libavcodec     57. 64.101 / 57. 64.101
libavformat    57. 56.101 / 57. 56.101
libavdevice    57.  1.100 / 57.  1.100
libavfilter     6. 65.100 /  6. 65.100
libswscale      4.  2.100 /  4.  2.100
libswresample   2.  3.100 /  2.  3.100
libpostproc    54.  1.100 / 54.  1.100

看到这个满满的幸福和成就感。


5.

输入make构建FFmpeg

yum安装FFmpeg比源码编译安装省时省力,但缺点也很明显,版本过老,为0.6.5版,最新版已为2.6.3,新旧版很多参数有所差异,旧版支持的格式也没有新版丰富。

参数解释如下:

参考文档:

  • CentOS下yum安装FFmpeg
  • Compile FFmpeg on Ubuntu, Debian, or
    Mint
  • ffmpeg学习—ubuntu14.04源码编译ffmpeg-2.1
  • 在CentOS-4.4
    x86_64安装FFmpeg

6.

输入make install安装

若是遇到“yasm/nasm not found or too old”可以看我的yasm/nasm not found
or too old on linux

本文参考自Sthshare.com

源码编译安装FFmpeg非常需要耐心,每添加一种需要支持的格式就需要有相应的多媒体格式开发库。文中所使用的软件版本皆为最新版。

-y 覆盖输出文件,即如果tt.mp4文件已经存在的话,不经提示就覆盖掉了
-i “tt.avi” 输入文件名,可以自己修改路径和名字
-vcodec xvid 使用XVID编码压缩视频,不能改的
-s 400×240 输出的分辨率,注意片源一定要是16:9的不然会变形
-r 29.97 帧数 (一般用25就可以了)
-b 1500 视频数据流量,用-b
xxx表示使用固定码率,数字可更改;还可以用动态码率如:-qscale 4和-qscale
6,4的质量比6高(一般用800就可以了,否则文件会很大)
-acodec aac 音频编码用AAC
-ac 2 声道数1或2
-ar 48000 声音的采样频率
-ab 128 音频数据流量,一般选择32、64、96、128
-vol 200
200%的音量,可更改(如果源文件声音很小,可以提升10到20倍(1000%~2000%),我试过,效果还行!但不能太大,200000%我也试验过,但嘈杂声太大了)
-f mp4 输出mp4格式
“tt.mp4” 输出文件名,也可以修改路径和名称

1.安装autoconf

至于这些参数的值是如何得到的,那就得看你的播放设备(mp4,psp,手机等等)了!刚买播放设备的时候,里面肯定会预置有一些视频文件,通过查看这些预置文件即可得到你的播放设备所支持视频的各项参数!最简单的方法,可以到windows下用暴风影音或KMP播放器打开一个预置视频文件(KMP列出的比暴风影音还要详细),然后通过查看属性就能得到所有你需要的参数了!

cd /App/src
wget    
tar xvf autoconf-2.69.tar.xz
cd autoconf-2.69
./configure
make
make install

(2)
对于wmv9,rm,rmvb等视频格式,ffmpeg还无法解析,但可以通过两次转换达到目的:

先用mencoder将其转换成avi格式:
mencoder tt.rmvb -ovc lavc -oac mp3lame -o tt.avi 
然后再利用(1)中的命令对该avi文件进行转换即可!

2.    安装automake

参数说明:

cd /App/src
wget  
tar xvf automake-1.15.tar.xz
cd automake-1.15
./configure
make
make install

tt.rmvb 输入文件(可自己修改路径及名称)
-ovc lavc 视频编码格式(mp4视频)
-oac mp3lame 音频编码格式(mp3音频)
-o tt.avi 输出文件(可自己修改路径及名称)

3.    安装libtool(FAAC需要)

mencoder是与mplayer一起安装的,安装了mplayer,系统肯定就会有mencoder!
mencoder与ffmpeg好像都有windows版的!
mencoder的功能也很强大,至于为什么不用mencoder一次性转换到位?这个问题我也还在抽时间研究,因为它的参数使用更加复杂,我现在还没试验成功!

cd /App/src
wget
tar xvf libtool-2.4.6.tar.xz
cd libtool-2.4.6
./configure
make
make install

至于其它的视频文件格式,我用的不多,所以也没测试过,不过应该都能利用(1)中的命令进行搞定!

4.    安装yasm支持汇编优化(FFmpeg需要)

就这样,你喜欢的电影就能与你形影相随了!

cd /App/src
wget
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install

补充一点:

5.    添加动态链接库配置

我个人比较喜欢单个的视频文件,所以如果一个视频文件被分成了两个,也可以通过mencoder对其进行合并(好像仅支持avi视频格式的合并)!

echo ‘/usr/local/lib’ >> /etc/ld.so.conf.d/local.conf

假如有两个rmvb文件cd1.rmvb和cd2.rmvb,反正也是分别需要转换成avi格式的,那么转换到avi之后,就可以通过命令:
mencoder t1.avi t2.avi -ovc copy -oac copy -o all.avi 
对分割的文件进行合并,合并完之后,再将其转换成mp4即可!主要是看个人的爱好了!

6.    安装MP3支持库LAME

参数说明:

cd /App/src
wget
 
tar xvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
make install

t1.avi t2.avi
输入文件(可自己修改路径及名称,还可以更多,空格分开,注意顺序,还有这些输入文件的码流也需要一致)
-ovc copy 表示视频编码格式不变(因为是合并而不是转换,所以没必要变)
-oac copy 表示音频编码格式不变(同上)
-o tt.avi 输出文件(可自己修改路径及名称,按输入文件的顺序进行连接的)

7.    安装AAC支持库FAAC

 

make时报错:mpeg4ip.h:126: 错误:对‘char* strcasestr(const char*,
const char*)’的新声明

  15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)

需要修改common/mp4v2/mpeg4ip.h第123行至129行内容:

可以把它当快速简易参考看,主要的功能有:

#ifdef __cplusplus
extern “C” {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif

  1. 视频格式转换
  2. 音频格式转换
  3. 切割视频及音频
  4. 连接两段视频
  5. 视频音频同步
  6. 将图像系列转换成视频     

修改为:

这里是百鬼丸以前收集的一部分命令行视频音频编辑脚本命令,一直在自己的记事本里随时用,现在觉得新浪编辑器够方便,速度也够快,觉得把它们放在博客上更合适些。这些命令都是基于一些开源免费软件,如mencoder,ffmpeg,
lame, sox,perl,
ffmpeg2theora等,这些软件一般都没有图形界面,需要在命令行窗口输入执行。因此对家庭用户可能并不是太合适,需要花不少时间了解掌握。但对批量处理或者后台处理视频音频很有效。当你不想购买商业软件或者使用linux操作系统时,可以试试。 

1
2
3
4
5
6
7 #ifdef __cplusplus
extern “C++” {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif

 

cd /App/src
wget

tar xvf faac-1.28.tar.bz2
cd faac-1.28
./bootstrap
./configure –with-mp4v2
#按前文修改mpeg4ip.h内容
make
make install

 

8.    安装AMR支持库opencore-amr

 

cd /App/src
wget

tar xvf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
./configure
make
make install

任务1: 延迟视频部分 (对avi文件有效)

9.    安装通用音乐音频编码格式支持库libvorbis

mencoder -delay 0.7 -oac copy -ovc copy input.avi -ooutput.avi

# libvorbis需要libogg,先安装libogg库
cd /App/src
wget
tar xvf libogg-1.3.2.tar.xz
cd libogg-1.3.2
./configure
make
make install
 
cd /App/src
wget

tar xvf libvorbis-1.3.5.tar.xz
cd libvorbis-1.3.5
./configure
make
make install

 

10.    安装x264库支持H.264视频转码

解释:让视频轨比当前的音频轨落后0.7秒钟

cd /App/src
git clone git://git.videolan.org/x264.git
cd x264
./configure –enable-shared
make
make install

 

11.    安装Xvid库支持MPEG-4转码

 

cd /App/src
wget
tar xvf xvidcore-1.3.3.tar.bz2
cd xvidcore/build/generic
./configure
make
make install

 

12.    安装Theora视频压缩支持库

任务2: 延迟音频部分(对avi文件有效)

cd /App/src
wget

tar xvf libtheora-1.1.1.tar.xz
cd libtheora-1.1.1
./configure
make
make install

mencoder -oac copy -ovc copy -audio-delay -0.7 input.avi -ooutput.avi

13.    安装NUT支持库

 

安装时64位Linux系统需要修改文件config.mak

解释:让音频轨比当前的视频轨落后0.7秒钟

在最后一个CFLAGS下一行增加:

 

CFLAGS += -fPIC

 

否则安装FFmpeg make时报错:

 

/usr/local/lib/libnut.a: could not read symbols: Bad value

任务3:切割视频轨

cd /App/src
svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut
cd libnut
./configure
make
make install

mencoder -ss 00:00:10 -endpos 60 -ovc copy -oac copy input.avi-o
output.avi

14.    安装VP8/VP9编解码支持库

 

cd /App/src
git clone
cd libvpx
./configure –enable-shared
make
make install

解释:切割视频部分,从0分10秒开始,到1分10秒,时间长度为60秒。将结果存储为output.avi 

15.    安装FFmpeg最新版

 

cd /App/src
wget
tar xvf ffmpeg-2.6.3.tar.bz2
cd ffmpeg-2.6.3
./configure –enable-version3 –enable-libvpx –enable-libfaac
–enable-libmp3lame –enable-libvorbis –enable-libx264 –enable-libxvid
–enable-gpl –enable-postproc –enable-nonfree –enable-avfilter
–enable-pthreads –enable-libnut –enable-libtheora
–enable-libopencore-amrnb –enable-libopencore-amrwb –enable-shared
make
make install
ldconfig

 

16.    安装segmenter

 

git clone
cd m3u8-segmenter
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
make
make install
ln -s /usr/local/bin/m3u8-segmenter /usr/local/bin/segmenter

任务4: 连接两段视频 (必须比特率相同)

三、    编译安装注意事项

mencoder -oac copy -ovc copy -idx -o output.avi
input1.aviinput2.avi         

1.   
可能发现编译FFmpeg或者其他支持库时,即使相关的所有依赖也编译安装上了,仍然make报错,主要的原因还是由于依赖的库版本冲突,编译时调用的是yum安装时自动下载安装的旧版本依赖库。此时的方法就是卸掉所有yum安装的旧版本FFmpeg和相关的依赖软件包或者重新找台新的纯净的系统重新开始安装,或者使用Ubuntu
Server最新版,一般Ubuntu
Server最新版FFmpeg版本还是比较新的,直接执行命令 sudo apt-get install
ffmpeg 会自动安装FFmpeg和相关依赖。

or(不要求bitrate相同):

2.   
有爱专研的或者受制于手头无多余机器的,只能老老实实得卸载旧软件,从头开始编译安装。如何去除旧版本yum安装的相关软件?我们可以借助yum
deplist命令先找出所有相关依赖软件包,然后卸载除了公共软件包外的所有软件包。此方法也适用于安装其它软件时遇到类似同样的问题。

ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy
-acodec copy test12.avi -newvideo -newaudio

yum deplist ffmpeg | grep -v ffmpeg | grep provider | awk ‘{print $2}’ |
sort -u

 

图示:

 

图片 1

解释

从中挑出非公共软件包的软件包名卸载:

 

rpm -e –nodeps a52dec dirac dirac-libs faac gsm lame libtheora
opencore-amr SDL x264
rpm -e –nodeps $(rpm -qa | grep -i ffmpeg)

任务5: 将一系列静止图像和一个mp3文件转换为AVI视频文件

Linux下编译FFmpeg之下载源文件并编译
http://www.linuxidc.com/Linux/2012-02/54565.htm

mencoder “mf://snap*.bmp” -mf fps=25 -oac mp3lame
-lameoptsabr:br=128:mode=3 -audiofile test.mp3 -ovc lavc
-lavcoptsvcodec=msmpeg4v2:vpass=1:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3-o
leadnull

Linux 编译升级 FFmpeg 步骤
http://www.linuxidc.com/Linux/2013-08/88190.htm

 

CentOS 5.6 上安装 FFMPEG
http://www.linuxidc.com/Linux/2011-09/42793.htm

mencoder “mf://snap*.bmp” -mf fps=25 -oac mp3lame
-lameoptsabr:br=128:mode=3 -audiofile test.mp3 -ovc lavc
-lavcoptsvcodec=msmpeg4v2:vpass=2:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3-o
lead.avi

在Ubuntu下安装FFmpeg
http://www.linuxidc.com/Linux/2012-12/75408.htm

 

Ubuntu 12.04下编译ffmpeg 
http://www.linuxidc.com/Linux/2013-02/78857.htm

解释:mono=3 代表单声道音频输出, mono=0
代表立体声音频输出。上面使用的视频编码是微软的msmpeg4,因此这个AVI文件可以直接在Windows
mediaplayer中播放,不需要另外安装插件。 上面两条命令,表示两遍压缩。
为提高速度,也可以只实用第一条做单次压缩。输出视频的fps为25。

Ubuntu 14.04下PPA安装FFmpeg 2.2.2 
http://www.linuxidc.com/Linux/2014-05/101322.htm

 

FFmpeg
的详细介绍
:请点这里
FFmpeg
的下载地址
:请点这里

 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-10/124649.htm

 

图片 2

任务6: 切割mp3音频文件

 

mplayer -ss 00:01:59 -endpos 102.5 input.mp3 -ao pcm

 

sox audiodump.wav result1.wav fade t 3

 

sox result1.wav result2.wav fade t 0 102.5 3.5

 

lame result2.wav -o fighting.mp3 -b 160

 

解释:这个过程由四条命令组成。 上面的例子中,

第一步:切割部分为1分59秒开始,到3分41.5秒结束,长度102.5秒。用户需自己计算切割部分,设定上述参数。 

第二步:用sox对音频开头3秒钟做一个淡入效果(声音逐渐增强)

第三步:用sox对音频结束3.5秒钟做一个淡出效果(声音逐渐衰减)

第四步:将lame处理好的音频重新编码成160kbps的mp3文件

 

其中,第二、第三步是可以省略的。 

 

 

 

任务7: 将wma文件转换为mp3文件

 

mplayer input.wma -ao pcm

 

lame audiodump.wav -o output.mp3 -b 160

 

解释:一共两条命令。第一条将wma转化为wav文件,第二条再将wav转换为mp3文件,比特率为160kbps. 

 

 

 

任务8: 将一系列图像文件转换为flv视频文件

 

mencoder  “mf://snap*.bmp” -mf fps=25-audiofile test.mp3 -o output.flv
  -afresample=22050:0:0 -sws 9 -vf scale=448:-3,expand=448:336 -of
lavf-ovc lavc
-lavcoptsvcodec=flv:vbitrate=260:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:vpass=1

 

mencoder  “mf://snap*.bmp” -mf fps=25 -ooutput.flv -audiofile test.mp3
 -afresample=22050:0:0 -sws 9 -vf scale=448:-3,expand=448:336 -of
lavf-ovc lavc
-lavcoptsvcodec=flv:vbitrate=260:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:vpass=2

 

解释:两遍压缩,将一系列snap001.bmp,
snap002.bmp,…图像和一个mp3文件”test.mp3″转换成fps=25的录像。音频采样率设定为22050,视频画面大小为448×336,视频的比特率为260kbps。 

如果你希望更改视频中的keyframe,你可以在第一条命令执行后,手动编辑一个divx2pass.log文件。文件中”Type:1″表示关键帧keyframe
(或者叫iframe), “Type:2″表示p-frame,就是只记录相邻帧变化部分的帧。 

 

 

 

任务9: 将一系列图像文件转换为ogg视频文件

 

ffmpeg2theora -f image2 snap%05d.bmp -V 320 -ooutput.ogg

 

解释:ogg录像还是有点用的,wikipedia,
wikimeida都在用。上面的视频比特率为320kbps

 

 

 

任务10: 将一系列图像转化为与NTSCDVD兼容的mpeg2格式文件。 

 

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf
scale=720:480,harddup -srate 48000 -aflavcresample=48000
-lavcoptsvcodec=mpeg2video:vpass=1:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps
30000/1001 -o ntscdvd.mpg “mf://snap*.bmp” -mf fps=25-audiofile
test.mp3

 

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf
scale=720:480,harddup -srate 48000 -aflavcresample=48000
-lavcoptsvcodec=mpeg2video:vpass=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps
30000/1001 -o ntscdvd.mpg “mf://snap*.bmp” -mf fps=25-audiofile
test.mp3

 

解释:两遍压缩,输入图像帧率为25fps,
输出帧率为29.97fps,视频编码mpeg2, 音频编码192kbpsac3.  

 

 

 

任务11: 将一系列图像文件转换为与PALDVD兼容的mpeg2格式视频文件

 

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf
scale=720:576,harddup -srate 48000 -aflavcresample=48000
-lavcoptsvcodec=mpeg2video:vpass=1:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps
25 -o paldvd.mpg “mf://snap*.bmp” -mf fps=25 -audiofiletest.mp3

 

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf
scale=720:576,harddup -srate 48000 -aflavcresample=48000
-lavcoptsvcodec=mpeg2video:vpass=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps
25 -o paldvd.mpg “mf://snap*.bmp” -mf fps=25 -audiofiletest.mp3

 

解释:两遍压缩,输入为snap001.jpg,
snap002.jpg…和test.mp3,图像系列的fps为25, 输出视频文件的fps为25.
视频编码为mpeg2, 音频编码为192kbpsac3. 

 

 

 

任务12: 将视频文件转换为一系列图像

用ffmpeg命令如下

 

ffmpeg -i test.avi snap%05d.bmp

 

也可以用mplayer完成同样功能

 

mplayer video.avi -vo png -ss 00:00:10 -endpos 5.0 -vfcrop=480:360:80:60

 

解释:这里mplayer的例子中,还提供了额外的切割选择功能。切割的部分从0分10秒开始,到0分15秒结束,长达5秒。同时画面也被切割,切割的位置从坐标(80,60)开始,宽度480像素,高度360像素。这里坐标系以屏幕左上角为(0,0). 

 

 

 

任务13: 将midi文件转换为mp3文件

 

timidity input.mid -Ow

 

lame -b 160 -h -k input.wav output.mp3

 

解释:第一条命令使用timidity将midi转换为wav文件,第二条命令用lame将wav转换为160kbpsmp3文件。 

timidity配置和安装还是比较麻烦的。还需要额外安装高品质的sf2声音字体文件,配置sf2文件也异常容易出错。总体效果还可以接受。但无法使用目前流行的vst,因此可能会被慢慢淘汰掉。 

 

 

 

任务14: 将一系列图像转换为swf格式的flash文件(需要perl) 

 

flv2swf  input.flv output.swf

 

解释:有时候可能用swf来保存视频比flv更方便。如果图像数量不多的话,可以采用swftools来进行转换 

如果图像数量很多的话,首先我们用任务8中的命令将图像转换为一个flv文件。然后我们可以用adobe的各种软件很轻松的将flv录像加入一个flash项目里,最后输出为swf. 如果你熟悉perl的话,也可以用一个perl脚本将flv文件转换成swf.CPAN(Perl公共模块库)有一个FLV::info的模块,安装后就可以使用flv2swf命令了。

 

 

 

 

任务15: 将mp3文件转换为wma文件

 

mplayer input.mp3 -ao pcm

 

ffmpeg -i audiodump.wav -acodec wmav2 -ab 128000test.wma1

 

解释:偶尔也需要这个功能的。第一步,将mp3文件转换为wav文件,第二步用ffmpeg将wav文件转换为wma. 

 

 

如果你只需要将单幅图像如某个封面,和一个mp3合并成一个视频文件,请参看前一篇博文。 

将一幅图像和一个mp3文件合并成录像文件的小工具

 

参考链接

上述命令基本上是参考了mplayer的用户手册,videohelp.com的论坛帖子写的。

 

软件主页

mencoder的Windows binary: 

ffmpeg的Windows binary: 

lame的Windows binary: 

sox: 

ffmpeg2theora: 

cpan: 

Active perl的Windows版本:

 

上述软件被广泛使用,其源代码部分没有什么问题,但因为专利和版权的问题,公布其Windows的二进制可执行文件则可能触犯了一些国家的法律,目前合法性这个问题还比较模糊。

 

 

wav转aac命令 可参考

ffmpeg -i soundtrack.wav -acodec aac -ab 128kb output.m4a

相关文章