1.视频压制的概念
很多人会把视频压制与视频转换混为一谈。视频压制是一种入门简单,但有点深奥的视频压缩技术,用最少的码率压制出最高的画质是视频压制的宗旨。任何有电脑基础的人都可以入门视频压制技术,但想要压制出好作品,需要深入学习和大量实践;
而视频转换则是一种傻瓜的视频格式转换、压缩方法,没有电脑基础的人都可以做到,这类傻瓜软件很多,格式工厂之类都是傻瓜式的,转换过程极其简单快捷,但效果往往不尽如人意。所以,视频压制比视频转转难度高一点,效果好一点。
2.视频压制的对象
(1)MPG视频。因为工业标准等因素,AVC编码现在都没彻底普及,以至于TS、TP、VOB、MPG等已经很落后的封装、编码方式依然流行,这些格式的视频体积巨大,及其占用我们的硬盘空间。所以,压制的对象主要为mpeg2编码的高清、标清视频。
(2)大分辨率视频。随着移动终端设备视频解码能力的日益完善,在手机等移动设备上观看高清晰画面也十分必要。由于移动设备的内存有限,一部1080P的高清电影几乎可以填满所有内存空间,播放1080P的视频也非常考验解码能力,所以大分辨率视频让移动终端颇感压力巨大。而视频压制就可以解决这个问题,大家所熟知的PSP,已经有了相当丰富的PSP专版电影资源,都是压制爱好者的作品,体积小,画质高,这是移动终端压制的典型代表。
3.视频压制的方法
不同的视频,其压制方法(参数运用)是不同的。电影有电影的压制方法,动画有动画的压制方法。Doom9论坛上有很多牛人都会分享他们自己的心得,建议去查阅。但我们不是专业做这个的,我们的目的是以较少的码率,压制出画面好一点的视频就行了,参数方面,我们可以借鉴高人。
于是,我们需要好一点的工具,megui是被公认的最强压制工具,这个工具第一次使用的时候比较麻烦,需要部署很多东西。但megui是很稳定的,不会像mediacoder那样莫名其妙地出错,而且对于x264参数的设置也比较直观。最重要的是,自动反交错、去重复帧功能是别的软件没有集成的,这对TP和VOB的压制十分重要,可以大量节约帧数、节约码率,除掉拉丝画面。
至于压制思路,一般就是拿片源,然后处片源(降噪、去交错、加字幕等),然后设置参数,然后编码压制。
4.关于两类片源
(1)隔行扫描的视频。TP、VOD等视频因为是在电视机上播放的,所以很多是隔行扫描,是交错的,肉眼看不见,如果你不做反交错处理直接去压制的话,结果你会发现画面上有一条一条的拉丝。所以,对于交错的片源要进行反交错或去重复帧处理,megui自带本功能。
(2)逐行扫描的视频。这类视频不需要做处理,可以直接压制。
5.关于视频编码
x264编码,mp4或mkv封装,目前来说没有什么异议。
6.关于x264参数
这个比较复杂,暂不做讨论,下面是我经常用到的参数模板,适用于megui:
7.关于视频码率
(1)在上面的x264参数代码中,我使用了”–crf 18″,意思是质量模式18,最终码率的多少主要取决于片源的画面水平和目标压制分辨率。我强烈建议大家采用crf模式压制视频,虽然最终码率不能确定,但质量可以保障,而且往往很节约码率。
crf18的画面指令已经非常高,数值越小,画质越高,相应的码率就越大,0是无损压制;反之,数值越大,画面越差,相应的码率就越小,最高取值为64。一般常用范围是15~23。如果你压制画面柔和的抒情MV,crf18是最好的选择;如果你压制韩国高清live,建议采用crf20~22,或者干脆换一种编码模式,如下。
(2)如果你要压制画面非常复杂的韩国高清live,crf模式可能不适合,建议使用2-pass模式。crf之所以可以节约很多码率,是因为它在处理高动态画面的时候,会根据人眼对高动态画面不敏感这一原理,节省了一些码率。然而,音乐现场一般都是从始自终火爆至极,全是高动态画面,于是crf的理念便失去意义。
2-pass顾名思义,两遍编码,码率的分布会更均衡,浪费码率的问题相对较小,换句话就是说画质会更好,当然,采用2-pass模式,画质取决于你的给值。好的,接下来讨论码率给值。
经常看youtube的同学会注意到,youtube的音乐mv非常清晰,是的,因为mv本身画面柔和,不需要过高的码率,但是,youtube的exo的音乐现场的画面则一般般,这是因为音乐现场的画面太复杂,youtube给的码率不足,所以画面会模糊,甚至形成马赛克!所以,我们在压制音乐现场视频的时候,码率一定要给足了,少了不行,多了浪费,如何取舍,我给定如下几个公式:
①360P以内,码率(Kbps)=长(px)*(px)宽*帧率(fps)*0.35/1024
②480P左右,码率(Kbps)=长(px)*(px)宽*帧率(fps)*0.3/1024
③720P左右,码率(Kbps)=长(px)*(px)宽*帧率(fps)*0.25/1024
④1080P左右,码率(Kbps)=长(px)*(px)宽*帧率(fps)*0.2/1024
上面的公式只适合音乐现场,是我压制日韩现场的经验,不一定科学,因为每个视频的特性不同。蓝色数字为数据密度,分辨率不同,维持画质所需要的数据密度也不通,分辨率越大,需要的数据密度就越少,我在这里给定的都是参考值,大家可以自己实验,寻找适合自己的值。下面通过实例来计算一个码率的取值吧,比如,我要把一个1080I的音乐现场压制成720P的MP4,我这样计算码率:
码率=1280*720*30*0.25/1024=6750Kbps
于是,视频码率是6750K,再加上音频码率,一般是192K,将近7000K了,恩,码率不小是吧,音乐现场就是这样,非常浪费码率,如果是mv,三四千就够了,差距就是这么大!
8.关于音频编码及音频码率
音频则相对简单得多,大家而已毫不犹豫地选择aac,这里无需多言。由于音频部分对整个视频的体积影响不大,所以大家不必纠结码率,给足就行了,aac编码的话,ABR(平均码率)192K基本没有瑕疵,如果不放心,可以加到256K
以上就想到这么多,总之,视频压制需要经验,新手对megui或多或少都会有抵触感,习惯就好,都很简单。
2008年的一个项目由于要用到视频截图,研究了一番FFmpeg并写一篇博文分享了经验,也帮助了不少朋友解决了问题。最近一个项目要用到视频合并,而FFmpeg并不提供视频合并的功能,只能用MEncoder,于是乎又对MEncoder研究了一番,撰文以分享。
MEncoder是MPlayer自带的音视频编解码工具。MPlayer官方网站:
和其他跨平台开源软件一样,Windows平台的一般使用已编译好的二进制程序包即可,Linux平台需要动手编译。
Windows下MEncoder下载:(包含在MPlayer中)
OK,下面开始Linux下的MEncoder编译。实验机器的Linux发行版是CentOS 5.1。MEncoder编译要比FFmpeg编译简单的多,因为它提供了常用编解码器,而且在编译配置的时候会自动检测是否安装某个解码器而自动选择是否将其编译进去。
1.下载解压编解码器
下载地址:
必要的解码器是essential-********.tar.bz2,而所有解码器为all-********.tar.bz2,为了支持更多的格式,当然选择下载所有了。
下载后解压到某个目录,如/usr/local/lib/codecs,命令如下:
# tar jxvf all-********.tar.bz2
# mv all-******* /usr/local/lib/codecs
2.下载解压MPlayer源码
可以使用SVN检出MPlayer的最新版本:
# svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
或者是下载每日更新包:
解压文件:
# tar jxvf mplayer-checkout-snapshot.tar.bz2
3.编译安装MPlayer
进入源码目录,进行编译配置,重要的两个参数--prefix=/usr/local/mplayer安装目录和--codecsdir=/usr/local/lib/codecs解码器目录。如需要添加其它参数请使用./configure --help获取帮助。最后再编译安装。
# cd mplayer-checkout-****-**-**
# ./configure --prefix=/usr/local/mplayer --codecsdir=/usr/local/lib/codecs
# make
# make install
到此为止,已经成功了。比起FFmpeg编译要简单得多了。遇到问题的朋友请留言给我,但不要是诸如我怎么下载解压啊之类的初级问题。
本文链接地址: