X264使用指南
x264是一个开源的H.264视频编码器库。是目前最好的有损视频编码器。
基本用法是
x264 [options]-o outfile infile
主页: http://www.videolan.org/developers/x264.html
目录[隐藏] |
[编辑]H.264和x264
H.264是ITU(International Telecommunication Unite 国际通信联盟)和MPEG(Motion Picture Experts Group 运动图像专家组)联合制定的视频编码标准。在ITU的标准里称为H.264,在MPEG的标准里是MPEG-4的一个组成部分:MPEG-4 Part 10,又叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。
H.264编码能实现非常好的压缩比,有广泛的适用码率(适于从超低码率低延迟的电话会议到高码率的BluRay光盘和HDTV码流),良好的硬件支持(以PSP、iPod和显卡DXVA为代表)和众多强大的厂商作后盾。
[编辑]获取x264
有很多人在编译x264,特别是Win32平台的编译版。
- x264.nl
- 06_taro Mod
- jeeb编译版
- komisar编译版
- rack编译版,关注Current Patches, Where to get them, How they affect speed/output的新帖
- VFR Maniac编译版
- xvidvideo.ru编译版
- MythCreator的编译版
- roozhou的支持DirectShow输入的版本。
- 还有doom9上的Current Patches, Where to get them, How they affect speed/output和doom10上的Getting the latest x264,都会有最新的编译版。
[编辑]命令行界面的x264
我们下载到的x264.exe是一个命令行工具,不需要安装,x264.exe需要在命令行里输入命令,没有GUI。
不可否认有GUI的工具用来很方便,更容易上手,比如用的最广泛的MeGUI,此外还有ripbot、staxrip等GUI。MeGUI可以自动更新编码常用的软件,作为自动下载的工具倒是不错。本教程主要讲解命令行参数,GUI也是调用同一个x264,因此都用对应的选项。
[编辑]命令行的操作
输入“x264 --help”会显示帮助信息。
输入“--longhelp”或“--fullhelp”查看详细选项或所有的选项。
x264.exe的用法是,在命令行里输入形如
>x264 [--参数名 参数值 ...] --output 输出文件 输入文件
其中方括号里是可选的,“...”是可以输很多个的意思。每个参数名之前要加“--”,空格后跟此参数名的参数值;一定要有“--output”指定输出文件;一定要指定输入文件,但前面没有“--”之类的提示符号。
此外,还有短参数模式。这是为了简化某些常用参数名设计的。一个“-”加一个字母构成一个短参数名,和与之对应的普通参数名效果一样。注意此时这个字母区分大小写。在--fullhelp列表里,有短参数的参数其相应的短参数都列在此参数的前面。
实际命令实例:
>x264 --crf 22 --profile main --tune animation --preset medium --b-pyramid none -o output.mp4 input.avs
调用x264编码当前目录下的"input.avs"文件,输出"output.264"。
如果文件路径有空格需要加上引号。
在Windows XP和Windows 7中,可以直接把输入文件拖拽到cmd里。
[编辑]64bit的x264
如果用了64位的Windows Vista或Windows 7,就可以用64位的x264。64位的x264大约能比32位的x264快上10%左右。但是用AviSynth输入时,64位的x264只接受64位的AviSynth输入,32位的x264只接受32位的AviSynth。虽然现在有64位的AviSynth和不少常用的滤镜,但是大多数人还是愿意用32位的AviSynth。如何让64位的x264配合32位的AviSynth呢?
方法是用pipe。用命令行工具(如ffmpeg、mencoder或avs2yuv)打开avs,让输出的raw yuv画面直接输入给x264,期间不产生中间文件。这个操作也是在命令行里实现的。
[编辑]用ffmpeg输入
先下载ffmpeg的Windows编译版(参见FFmpeg(Windows版)),可以用static link版本。目前ffmpeg在Windows上只有32位的编译版。和x264一样,ffmpeg放在任何目录里都能运行,假设和x264、要进行编码的input.avs放在一个目录里。
>ffmpeg -i input.avs -f yuv4mpegpipe -an -v 0 - | x264 [options] --demuxer y4m -o output.264 -
先用ffmpeg打开input.avs,并不指定输出的文件,而是以“-”代替输出的文件。后面写“|”,再写x264,x264的选项和输出文件写法不变,但是输入文件写“-”。
[编辑]用mencoder输入
mencoder有很多有价值的滤镜,用起来也很方便。libx264可以编译进mencoder本身,和单独的x264效果一样。mencoder也可以打开avs文件,pipe给64位的x264。mplayer-ww的命令行版里就带有mencoder。
同样假设mencoder、x264和要编码的的input.avs(1280x720)在一个目录里。
>mencoder input.avs -vf format=yv12 -of rawvideo -ovc raw -nosound -o - | x264 [options] --input-res 1280x720 --input-csp yv12 -o output.264 -
mencoder部分不同,x264部分和用ffmpeg时一样。
[编辑]用avs2yuv输入
avs2yuv本来是为了给linux上wine来用的,因为AviSynth是运行在Windows的,在linux里必须wine avs2yuv来打开avs,再pipe给x264。当然也可以用来pipe给64位的x264。
同样假设avs2yuv、x264和要编码的的input.avs在一个目录里。
>avs2yuv input.avs - | x264 [options] --demuxer y4m -o output.264 -
avs2yuv的输出格式默认是yuv4mpeg,x264用y4m格式解码即可从中读取分辨率,所以无须再用--input-res指定分辨率。
以上介绍了3种方法,个人比较倾向于用ffmpeg。2pass的编码也是像上面所讲的方法一样。
[编辑]艺搜参考
X264使用指南的更多相关文章
- ffmpeg与H264编码指南
注:本文属于转载译文,原文地址:http://blog.csdn.net/vblittleboy/article/details/8982857. 英文地址:https://trac.ffmpeg.o ...
- 黄聪:FFmpeg视频转码技巧之-crf参数(H.264篇)
昨天,有个朋友给我出了个难题:他手上有一个视频,1080P的,49秒,200多兆:要求在确保质量的情况下把文件压缩到10M以内. 这是什么概念呢?按照文件大小10M来计算,码率是:10 x 8 / 4 ...
- FFmpeg X264 H264编码指南[译]
本文目标:如何创建一个高质量的H.264视频 x264 是一个 H.264 编码器. 通常有2种码率控制(rate control)模式:Constant Rate Factor (CRF) or T ...
- Java使用FFmpeg处理视频文件指南
Java使用FFmpeg处理视频文件指南 本文主要讲述如何使用Java + FFmpeg实现对视频文件的信息提取.码率压缩.分辨率转换等功能: 之前在网上浏览了一大圈Java使用FFmpeg处理音视频 ...
- (原)理解码率控制模式(x264,x265,vpx)
理解码率控制模式(x264,x265,vpx) 原文链接:https://slhck.info/video/2017/03/01/rate-control.html 翻译:lihaiping1603@ ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- UE4新手之编程指南
虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...
- JavaScript权威指南 - 对象
JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删. JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等. JavaScript对象除了可以保持自 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
随机推荐
- noip数论复习总结
(上不了p站我要死了,侵权度娘背锅) 勉勉强强算是把数论复习的差不多了. 总结一下吧. 其实数论的知识大部分是结合在一起的,勉强分类总结 组合数 求法 组合数的求法根据不同情况选用不同的方法 2.3都 ...
- 【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧
(上不了p站我要死了,侵权度娘背锅) Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取 ...
- (转)unity3d加密资源并缓存加载
http://www.haogongju.net/art/1931680 首先要鄙视下unity3d的文档编写人员极度不负责任,到发帖为止依然没有更新正确的示例代码. view source pr ...
- linux-查找命令-find
1. 按文件名(目录)查找.(*代表模糊匹配) find / -name curl 在根目录查找名字是curl的文件名(目录) find / -name "*curl*" ...
- ARM常用汇编指令介绍
b 跳转指令(跳转范围为32Mb) bl 带返回地址的跳转,指令自动将下一条指令的地址复制到R14寄存器,然后跳转到指定地址去执行,执行完后返回到下一条指令处执行 pc 寄存器R1 ...
- 导出/导入Eclipse的workspace配置(备份Eclipse配置)
设置好workspace配置后可以将配置保存为 *.epf 文件. 进入 File -> Export : 选择 General -> Preferences ,下一步: 选择 Expor ...
- 【MySQL性能优化】MySQL常见SQL错误用法
https://yq.aliyun.com/articles/72501?utm_content=m_14899
- Matlab中find函数陷阱
a = [ 1 2 3 3 3]; 如果a==3 返回[ 0 0 1 1 1]; find(a==3) 返回[3 4 5],这才是想要的下标.
- Matlab梯度下降及正规方程实现多变量的线性回归
如果需要代做算法,可以联系我...博客右侧有联系方式. 一.相关概念 1.梯度下降 由于Z= X*theta - y是列向量,所以Z'*Z就是平方和连加,就是2范数:如果Z是矩阵呢,那么Z'*Z的对角 ...
- readlink命令
转:http://blog.csdn.net/zz198808/article/details/9319479 readlink是linux系统中一个常用工具,主要用来找出符号链接所指向的位置. 在U ...