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 ...
随机推荐
- [入门OJ3876]怎样学习哲学
题目大意: 有一个$n\times m(n,m\leq 10^9)$的网格图,从一个点可以到下一行中列数比它大的点.有$k(k\leq 2000)$个点是不能走的,问从第$1$行到第$n$行共有几种方 ...
- nginx.conf及server配置
#服务运行用户 user sysadmin www; #工作进程数 worker_processes 4; #错误日志位置 error_log /data/sysadmin/service_logs/ ...
- MySQL判断中文字符的方法(转)
准备: 2.1.环境 MySQL mysql> SHOW VARIABLES LIKE "%version%"; +-------------------------+--- ...
- Word中如何公式居中标号右对齐
1.鼠标居中 2.插入一行三列表格 3.选中第一个表格,右键-表格属性-单元格-选项:然后回到单元格设置垂直居中,宽度为15%,同理第三个单元格,不过中间单元格也要设置,宽度为70%,这个word没有 ...
- iOS开发之字符串比较
Object-c中比较两个字符串是否相等时,应该用isEqualToString:而不能仅仅只是比较字符串的指针值. NSString *str1=@"hello 1"; NSS ...
- PHP Warning: 的解决方法
在后台管理,用header("location:");做返回时,总是不能正常返回, Warning: Cannot modify header information - head ...
- VENOM cve-2015-3456 Qemu 虚拟机逃逸漏洞POC
#include <sys/io.h> int main() { int i ; iopl(3); outb(0x8e, 0x3f5); outb(0x41, 0x3f5); outb(0 ...
- Android学习(十五) 系统服务
一.常用系统服务 后台Service在系统启动时被SystemService开启 1.MountService:监听是否有SD卡安装和移除. 2.ClipboardService:提供剪切板功能. 3 ...
- discuz !NT 3.5 论坛整合 .net 网站用户登录,退出
using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlCont ...
- myBatis插入oracle获取主键
<insert id="insert" parameterType="com.inspur.biz.entry.SpLackApply"> < ...