ffmpeg+x264+NeroAac在linux上实现经典的视频压制

来源:互联网 发布:淘宝客默认佣金是多少 编辑:程序博客网 时间:2024/06/05 14:29

ffmpeg+x264+NeroAac进行视频压制算是最经典的方法,这是我在ubuntu上实现的过程。

参考了各官方文档,网上网友的资料。

第一步,先把之前可能安装失败的卸载掉

sudo apt-get remove ffmpeg x264 libx264-dev yasm

第二步,安装必要的依赖

sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev unzip

第三步,新建一个目录,并进入

mkdir codercd coder

第四步,安装yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar xzvf yasm-1.3.0.tar.gzcd yasm-1.3.0./configuremakesudo make installmake distclean

第五步,安装x264

cd ..wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2tar xjvf last_x264.tar.bz2cd x264-snapshot*./configure --enable-static --enable-shared --enable-visualize --system-libx264 --enable-gprof --enable-strip --enable-pic --enable-debugmakesudo make installmake distclean

第六步,安装libfdk-aac

cd ..wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/masterunzip fdk-aac.zipcd mstorsjo-fdk-aac*autoreconf -fiv./configure --enable-sharedmakesudo make installmake distclean

第七步,安装libmp3lame(>3.98.3)

sudo apt-get install libmp3lame-dev

第八步,安装libopus(>1.1)

sudo apt-get install libopus-dev

第九步,安装libvpx

cd ..wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2tar xjvf libvpx-v1.3.0.tar.bz2cd libvpx-v1.3.0./configuremakesudo make installmake clean

第十步,安装ffmpeg

cd ..wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2tar xjvf ffmpeg-snapshot.tar.bz2cd ffmpeg./configure --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grabmakesudo make installmake distclean

第十一步,编辑/etc/ld.so.conf文件加入如下内容

/usr/local/lib

保存退出后执行

sudo ldconfig

第十二步,安装nacc

sudo cp NeroAACCodec-1.5.1/linux/* /usr/binsudo chmod 777 neroAac*

第十三步,64位系统的

sudo apt-get install lib32stdc++6

第十四步,可选安装crc32校验

sudo apt-get install libarchive-zip-perl

第十五步,将下面内容保存为.sh脚本文件

=============================================
#/bin/bashfunction compress {input="$1"namevl=`echo "$input"|sed -r 's/(.*)(\..*)/\1/g'`output=`echo $namevl`_encassfl=`echo $namevl`.asstimecodefile=`echo $namevl`_timecode.txtecho Now encoding `basename "$input"`x264_option='--preset medium'ffmpeg -i "$input" -f yuv4mpegpipe -vf "ass=$assfl" -pix_fmt yuv420p -an -v 0 - | x264 --tcfile-out "$timecodefile" $x264_option -o "$output.mp4" --demuxer y4m - &&ffmpeg -i "$input" -vn -f wav - | neroAacEnc -q 0.25 -lc -ignorelength -if - -of "$output.m4a" &&ffmpeg -y -i "$output.mp4" -i "$output.m4a" -vcodec copy -acodec copy "$output-mux.mp4" &&rm -f "$output.mp4" &&rm -f "$output.m4a" &&crcvl=`crc32 "$output-mux.mp4"` &&mv `basename "$output-mux.mp4"` "[AWS]`basename $namevl`[$crcvl].mp4"}if [ $# -lt 1 ]thenecho 用法:echo `basename $0` video1 [video2] [video3]...echoecho TIPS:echo 1.注意如果路径中有空格的话需要用引号,如`basename $0` \'/dir 1/1 1.avi\'或`basename $0` \"/dir 2/2 2.flv\"echo 2.“理论上”支持find命令的正则表达式echo 3.支持通配符,如`basename $0` \'/dir 1/*.avi\' `basename $0` \"/dir 2/v*\" 即可匹配/dir 1目录下所有的avi文件以及/dir 2目录下所有的以v开头的文件echo 4.图形化界面下可以在终端输入`basename $0`后,将文件从“资源管理器”中拖拽到终端上松开,选择“粘贴位置”,会自动将文件路径输入到终端,有空格会自动加引号echo 5.字幕文件请按相同的名称放在视频的同一目录(注意,ass文件最好包含字体等,服务器上字体一般没有你想要的)echo 5.本脚本由chobit借鉴晚上资源编写的,一切所引发的不良后果,请自负exitelseIFS_OLD=$IFSIFS=$'\n'for files in $@dofind `dirname $files` -name `basename $files` -type f |for line in `cat`doIFS=$IFS_OLDcompress "$line"IFS=$'\n'donedonefi
=============================================
sud chmod -x x264com.sh./x264com.sh
0 0
原创粉丝点击