H264编码是目前最为先进的视频编码技术标准之一,能在较小的体积的情况下提供较高的视频质量。尤其是最近一两年来,随着电脑的性能的提升和蓝光的普及,H264已经成为压制蓝光和BDRIP的标准,形成了和一般用DivX或Xvid压制的DVDRIP均分天下的形势。未来几年,随着蓝光的进一步普及和DVD的逐渐淘汰,H264应该会成为视频编码领域内的大哥大。最近一段时间本人正好在用x264压制一些影片,就顺便简单介绍一下如何使用H264编码压缩蓝光原盘的视频部分。

首先下载安装编码器。x264是一个开源的H264编码器,对于Windows用户,可以直接在这里下载可执行程序(encoder下的32bit-8bit-depth即可)。对于Linux用户,可以先查查自己的发行版是不是已经预装了x264,或者是不是可以直接安装x264的二进制文件。如果想自己编译,我们可以在VideoLAN上下载源代码,然后按照相应的说明进行编译。需要注意的是,在Linux上进行编译,最好先预装yasm汇编器(以便x264能直接产生一部分汇编代码,更好的发挥CPU的性能提高编码速度)。另外,为了能够让x264直接解码各种视频文件(因为x264首先需要解码输入文件,然后才能进行编码),还需要libswscale/libavformat或者ffmpegsource这两个库中的至少一个。前一个由ffmpeg直接提供,后一个是在ffmpeg的基础上再进行了一些封装(但也依赖于ffmpeg)。前一个库(也就是lavf)在解码中会输出一些详细信息,方便用户及时发现源视频中是否有什么问题;后一个库(也就是ffms)并不会输出什么信息,但会提示用户所需的剩余时间。简单来说,各有所长吧,大家可以按需选择,反正功能性方面是没有什么巨大差别的。

下载或者编译完成以后,大家可以使用“x264 --version”命令查看一下是不是具有lavf和ffms库,我的输出如下。可以看见,这两个库我都有了。

x264 0.120.x

(libswscale 2.1.0)

(libavformat 53.24.2)

(ffmpegsource 2.17.0.0)

built on Jan 29 2012, gcc: 4.4.5

configuration: --bit-depth=8 --chroma-format=all

x264 license: GPL version 2 or later

(FFmpeg 是一款能够转换音频、视频和字幕的工具,能将其转化为流的开源计算机程序。它包含了目前业界领先的开源音频/视频编译码器libavcodec。它的组成是由:libavformat(音视频封装格式的生成和解析)、libswscale(快速视频缩放)、libavfilter(高级的视频过滤系统支持任意的过滤器图表)、libavutil(公共的工具函数)和一个简单的多媒体播放器,以及现场直播的实验流服务器。)

接下来就是压制视频了。压制视频时x264有以下几个我觉得比较重要的选项:

o    -o:指定输出文件名

o    --preset:指定编码的配置。x264编码算法有很多可供配置的参数,不同的参数值会导致编码的速度大相径庭,甚至可能影响质量。为了免去用户了解算法,然后手工配置参数的麻烦。x264提供了一些预设值,而这些预设值可以通过preset指定。这些预设值有包括:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow和placebo。ultrafast编码速度最快,但压缩率低,生成的文件更大,placebo则正好相反。x264所取的默认值为medium。需要说明的是,preset主要是影响编码的速度,并不会很大的影响编码出来的结果的质量。压缩高清电影时,我一般用slow或者slower,当你的机器性能很好时也可以使用veryslow,不过一般并不会带来很大的好处。

o    --tune:提示x264输入影片的类型,帮助x264更好的编码。常用的有film和animation两个。如果你的片源是真人电影,可以使用film,如果是动画片一类的,可以使用animation。另外,如果你的片源大部分是相对静止的图像,也可以选用stillimage。

o    --crf:这是最重要的一个选项,用于指定输出视频的质量,取值范围是0-51,默认值为23,数字越小输出视频的质量越高。这个选项会直接影响到输出视频的码率。一般来说,压制480p我会用20左右,压制720p我会用16-18,1080p我没尝试过。个人觉得,一般情况下没有必要低于16。最好的办法是大家可以多尝试几个值,每个都压几分钟,看看最后的输出质量和文件大小,自己再按需选择。

o    --video-filter:可以用来裁剪和缩放视频。裁剪视频部分的语法是“crop:left,top,right,bottom”,四个参数分别制定左侧、上侧、右侧、下侧裁剪几个像素,最好是都用4的整数倍,例如“crop:8,8,8,8”。缩放视频的部分的语法是“resize:[width,height][,sar][,fittobox][,csp][,method]”。比较重要的只是width/height和method,用来指定缩放后的分辨率和缩放使用的方法,其他参数的具体含义可以参看此处。例如“resize:1280,720,,,,spline”,指定缩放视频原始视频到1280*720分辨率,缩放的方法采用spline(一般都使用这个方法)。最后,裁剪和缩放视频其实是可以一起指定的,用“/”连接这两部分就行,具体可以看我下面的例子。

其他一些也可能用到的选项是:

o    --level:x264压制视频时会用到很多技术,有的技术可能在有的设备上不被支持。这个选项就可以在输出的视频文件中做一个标识,表明一下解码视频需要解码器支持哪些特性。一般来说,现在的设备都支持Level4.1,因此这个值一般可以选4.1。

o    --fps:指定输出文件的帧率。一般来说没有必要指定。如果你确定自己需要指定的话,可以使用浮点数形式指定或者分数形式指定。例如取值“23.976”或“24000/1001”

o    --demuxer:指定解码器。例如,通过这个选项你可以在“lavf”和“ffms”这两个基本等价的解码器之间强制让x264使用一个。

下面写两个例子:

o    x264 --preset slow --tune animation --crf 18 -o output.264 input.mp4

o    x264 --demuxerffms --preset slower --tune film --crf 20 --level 4.1 --fps 23.976 --video-filter crop:8,8,8,8/resize:1280,720,,,,spline -o output.264 input.mp4

这里还要特别谈谈隔行扫描视频的转换,也就是诸如1080i这样的视频的转换。貌似x264本身不能很好的进行反交错处理,尤其是在要缩放原始视频的时候(比如说用1080i压制720p)。这时我们需要使用ffmpeg来解码并进行反交错,然后再调用x264进行编码(前提是ffmpeg编译时必须打开了--enable-libx264这个选项,也即链接了x264的编码器)。下面给出一个例子:

o    ffmpeg -i input.mp4 -an -sn -r 29.97 -s 1280x720 -vfyadif -vcodec libx264 -preset slow -tune film -level 4.1-crf 18 output.264

其中,“-an”指定不输出音频,“-sn”指定不输出字幕,“-r”指定输出帧率(隔行转成逐行通常用29.97),“-s”指定输出分辨率,“-vfyadif”指定使用yadif进行反交错,“-vcodec libx264”指定用x264进行视频编码,后面的应该都很熟悉了。

最后提醒一句,x264仅仅只是一个视频编码器,编码好视频后,我们还需要提供音频(甚至字幕等),最后再用混流器(如tsmuxer、ffmpeg、mkvmerge等)混流生成最后的影片。

参考资料:Getting Started with x264;x264 Settings

Q:博主可不可以再增加一点例子,比如说,一个隔行扫描的1080i的.ts视频如何转换成720p的AAC音频编码的.mp4视频,万分感谢!

A:可以呀~下面这个应该可以,但是需要你编译ffmpeg的时候链接了libx264和libfaac。
ffmpeg -i input.mp4 -sn -threads 0 -ar 44100 -ab 192k -ac 2 -acodeclibfaac -r 29.97 -s 1280×720 -vfyadif -vcodec libx264 -preset slow -tune film -level 4.1 -crf 18 output.mp4

有点小错,input.mp4应该是input.ts。

附:

BDrip = Blu-ray Disc Rip,蓝光影碟转录。Ripping 指的是把音频和视频内容复制到硬盘的过程。

BDrip就是从蓝光光盘上把视频内容重新编码形成的视频文件,在这里是具有一些标准化的含义,通常就是指MPEG4编码的AVI格式视频(MPEG4又有编码器的不同,如Xvid,DivX等)。

BD是Blue-ray Disk的简称,翻译成中文是“蓝光影碟”的意思。

使用x264压制视频简介相关推荐

  1. 复制并重命名文件_视频文件太大怎么办?快速压制视频只需一招,好多大咖都在用...

    在当今,短视频可以说是一个非常火爆的行业,很多朋友们可能都会遇到一种情况,那就是我们下载下来的或者是录制出来的一些视频文件非常大,那如何才能够在不改变清晰度的情况下将这些视频快速压缩呢?这主要可以通过 ...

  2. iMeta:高颜值高被引绘图网站imageGP在线发表(视频简介+实操教程)

    https://doi.org/10.1002/imt2.5 2022年2月21日,iMeta 期刊在线发表了中国中医科学院黄璐琦院士.陈同副研究员和中国科学院遗传与发育生物学研究所刘永鑫高级工程师合 ...

  3. mSystems:南京土壤所禇海燕组受邀发表微生物生物地理学综述(官方配视频简介)

    文章目录 瞬息万变的世界中的土壤微生物生物地理学:最新进展和未来展望 写在前面 视频介绍 快讯 图 1 长期以来在微生物生物地理学领域已发表文章的数量 图 2 土壤微生物生物地理学中需要进行时空研究的 ...

  4. AVS+.H264压制视频

    AVS+.H264加字幕压制为MP4格式! 需要的工具 1.Avisynth    2.x264-32bit.exe/x264-64bit    3.ffmpeg    4.MP4Box   5.ne ...

  5. x264压制4K HDR电影的vs转换脚本,由HDR到SDR

    转载自doom9论坛 其中'path/to/file'填写对应的视频文件 注意内存的控制,对4K电影的压制一般会要求极大的内存 import vapoursynth as vscore = vs.ge ...

  6. Android VideoView播放网络视频简介(转)

    最近项目中用到了很多视频播放的地方,不管是聊天发送的视频消息,还是类似内涵段子的视频列表,都会涉及这些知识,不过网上的知识都很零散,一会找缓存方法,一会找预览图片的方法,一会找视频动态修改尺寸的方法, ...

  7. VC下调用x264进行视频编码,

    4.X264.c中,h = x264_encoder_open( param ) )是用来复制参数并验证参数的有效性,在CCS下应该是不需要验证参数的(参数都是在程序中设置好的),因此此处只作复制参数 ...

  8. 【音视频开发】基础知识:视频简介

     在学习了⾳频的相关概念之后,现在开始讨论视频,视频是由⼀幅幅图像组成的,所以要学习视频还得从图像学习开始.  与⾳频的学习⽅法类似,视频的学习依然是从图像的物理现象开始回顾,这⾥需要回顾⼀下⼩学做过 ...

  9. Android VideoView播放网络视频简介

    最近项目中用到了很多视频播放的地方,不管是聊天发送的视频消息,还是类似内涵段子的视频列表,都会涉及这些知识,不过网上的知识都很零散,一会找缓存方法,一会找预览图片的方法,一会找视频动态修改尺寸的方法, ...

  10. The Innovation | 中科院青促会主办精品英文期刊视频简介,定位IF 20+国际顶刊

    The Innovation 创刊概念片 The Innovation是一本由青年科学家与Cell Press共同创办的综合性英文学术期刊:向科学界展示鼓舞人心的跨学科发现,鼓励研究人员专注于科学的本 ...

最新文章

  1. html如何提交保存,html表单提交保存
  2. OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)
  3. 2020年宇通大量裁人论坛_中国数学会计算数学分会2020年研究生论坛活动总结
  4. 男生的哪个“不要”是真的不要?
  5. 2019CCPC湖南全国邀请赛-Chika and Friendly Pairs- 莫队+树状数组+离散化
  6. 如何把word分装到两个byte_如何核对两个Word文档的内容差别?同事加班半小时,我只花了30秒...
  7. C++ 集成和派生练习题解答
  8. 有了这些字体,才是高逼格的UI设计!
  9. JPM Coin 三部曲 (中) - 摩根大通为何青睐 Quorum 区块链
  10. 鼠标浮动到表格的某行 背景颜色变化[mouseover mouseout 以及mouseenter mouseleave]
  11. 提高python 程序运行速度_3个Python函数帮程序员们避免编写循环,提高运行速度...
  12. Drools规则引擎介绍及实践
  13. 苹果计算机重装系统步骤,苹果台式电脑重装系统教程,适合imac恢复出厂设置...
  14. Excel宏的基本逻辑语句
  15. 联想y7000笔记如何安装matlab,联想y7000p安装配置ubuntu笔记
  16. 使用WebSocket实现多人实时聊天
  17. PS3主机数据完全一览及关键词解释
  18. 计算机安装不了cad2007,win7系统电脑中安装cad2007不兼容无法打开的解决方法
  19. java输出数学和英语成绩_java 计算班里每个同学3门课(英语、数学、数据库)的平均成绩和总成绩,编写一个成绩类来实现这些功能。...
  20. 挽留梁孟松,中芯国际发大招了

热门文章

  1. 方便简洁的在线WEB多人网页聊天室系统源码
  2. MSP430F5529-基于ATK-IMU901角度传感器在UART的串口通信于数据显示
  3. python开发抢票软件_12306抢票软件run python版
  4. VBA解压压缩文件。
  5. 学习一门技术不能浅尝遏止
  6. Labelling tools 的环境配置
  7. excel单元格设置了数值类型,但是代码里读的时候还是文本类型
  8. 倍加福编码器AHM58N-0BAK1R0BN-1212
  9. 关于csv文件最大行数和最大列数
  10. 硬盘分区怎么不删除文件合并_硬盘分区怎么合并?