话说很久之前,人人影视放出来了一个压片工具,总共有192M的样子,而且只能在Windows上运行。对于我等Linux党,这可怎么行呢?于是我就想到了ffmpeg这个万能的神器。当然了ffmpeg作为自由软件,你从包管理器里安装的、直接configure编译的,是不会带libx264
这类非自由软件,自然想要压制影片就不是那么好玩了……
那既然酱紫,我们就只好手动编译一个non-free的ffmpeg,然后再来使用嘛!
懒虫们,假如你们真的懒得看这么长的文章,并且你确定你的发行版是比较新的发行版,那么请直接翻到本文最后看"一键式编译教程"吧!
准备特效字体
有很多字幕都是用了自定义字体,请记得给你的发行版安装对应的字体呀!桌面版直接双击安装即可。如果是服务器版,把字体复制到/usr/share/fonts/truetype和原来字体一样的位置,或者新建个winFonts目录便于区分也可以。
之后运行
sudo apt install fontconfig sudo fc-cache –fv
运行fc-list可以看到已安装字体列表
查看中文字体,可以使用
sudo fc-list :lang=zh
并且请注意编码格式的问题,Linux一般使用UTF-8而Windows则是GB2312
编译安装ffmpeg
我使用的是Ubuntu,所以这里我就按照官网提供的教程编译啦!
安装必备依赖
sudo apt-get update sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
注意,如果是服务器版Ubuntu,可以把第二步替换成如下(你装原来的也行,反正是ffplay和X11的依赖……)
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \
libtheora-dev libtool libvorbis-dev pkg-config texinfo zlib1g-dev
创建一个用来下载源码的目录
mkdir ~/ffmpeg_sources
编译与安装
yasm
如果你的包管理器里的yasm版本号>=1.2.0,那就可以用包管理器安装
(使用sudo apt search yasm查看版本号,就想编译的,我也没意见)
sudo apt-get install yasm
否则请编译安装
cd ~/ffmpeg_sources wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean
libx264
如果你的包管理器里的libx264版本号>=0.118,那就是用包管理器安装
sudo apt-get install libx264-dev
否则需要编译安装
cd ~/ffmpeg_sources wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar xjvf last_x264.tar.bz2 cd x264-snapshot* PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --disable-opencl PATH="$HOME/bin:$PATH" make make install make distclean
libx265
只能选择编译安装啦。
sudo apt-get install cmake mercurial cd ~/ffmpeg_sources hg clone https://bitbucket.org/multicoreware/x265 cd ~/ffmpeg_sources/x265/build/linux PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make make install
libfdk-aac
如果你的包管理器中有libfdk-aac-dev,那就可以使用包管理器安装(没有版本需求)
sudo apt-get install libfdk-aac-dev
否则需要编译安装
cd ~/ffmpeg_sources 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 --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean
ibmp3lame
如果你的包管理器中有ibmp3lame,版本号>=3.98.3,那么你可以使用包管理器安装
sudo apt-get install libmp3lame-dev
否则需要编译安装
sudo apt-get install nasm cd ~/ffmpeg_sources wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared make make install make distclean
libopus
如果你的包管理中有libopus,版本号>=1.1,那你可以使用包管理器安装
sudo apt-get install libopus-dev
否则需要编译安装。
cd ~/ffmpeg_sources wget http://downloads.xiph.org/releases/opus/opus-1.1.2.tar.gz tar xzvf opus-1.1.2.tar.gz cd opus-1.1.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make clean
libvpx
只能编译安装(注意,这个链接是在Google的服务器上,如果服务器在国内下载不回来,就自己翻墙下载然后上传到服务器吧)
cd ~/ffmpeg_sources wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.5.0.tar.bz2 tar xjvf libvpx-1.5.0.tar.bz2 cd libvpx-1.5.0 PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests PATH="$HOME/bin:$PATH" make make install make clean
编译ffmpeg
耗时可能会比较长
cd ~/ffmpeg_sources wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xjvf ffmpeg-snapshot.tar.bz2 cd ffmpeg PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ --bindir="$HOME/bin" \ --enable-gpl \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree PATH="$HOME/bin:$PATH" make make install make distclean hash –r
1.如果你直接运行configure,将会是没有non-free软件的ffmpeg;官方的configure配置会在~下生成一个bin(编译之后安装就会在~/bin下)、ffmpeg_build目录;如果不喜欢,那就照猫画虎的改掉$HOME(记得都要改哦),make install的时候就到/bin啦! 2.在Ubuntu中,~/bin默认是被包含到PATH中的,所以当你注销-登录或者 之后可以从任何目录运行~/bin中的程序的。再不济,咱把~/bin里的拷贝到/bin里总可以吧? 3.如果需要安装man page,请运行source ~/.profile
echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath
我假设你已经编译好了ffmpeg,并且准备好了你的视频和字幕。
前面提过了,如果你的字幕中使用了自定义字体,请记得同时安装对应的字体!
并且,请注意字幕文件的编码格式,Linux通常会使用UTF-8无BOM,而Windows则是GB2312这类。为了避免出乱码,还是老老实实转换成UTF-8吧!
下一页我会介绍一些压片的方法,关于ffmpeg的更多方法,大家伙就自己搜索、看官方的文档、man page啦!
注意,压制过程中可能会出现这样的警告
Glyph 0x36C not found, selecting one more font for (YouYuan, 700, 0)
不要管他啦……只要是UTF-8编码的,会压出来的!
该看下一页啦~~