概述

关键的参数

该篇主要是探讨转码相关的技术点,比如:

  • 视频尺寸:指的就是视频的分辨率,常见的分辨率有4096x2304,1920x1080,1280x720,720x576等。
  • 视频编码:视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频编码格式常见到的有:MPEG-2 TS、Divx、Xvid、H.264、WMV-HD和VC-1。
  • 音频编码:音频编码方式指通过特定的压缩技术对音频数据进行处理的方法。
  • 帧率:帧率(即视频更新率)是用于测量显示帧数的量度。测量单位为“每秒显示帧数”(Frame Per Second,FPS,帧率)或“赫兹”,单位用FPS用来描述视频每秒播放多少帧,而单位用赫兹用来描述显示器的画面每秒更新多少次。 一般帧率越高,视频画面越流畅。
  • 比特率:指每秒传送的比特(bit)数,即每秒传输的文件大小。比特率规定使用“比特每秒”(bit/s 或 bps)为单位。比特率越高,每秒传送的数据越大。
  • 采样率:采样率的单位是Hz,表示每秒采样的次数。单位时间内取样率越大,精度就越高,处理过的视频文件就越接近没有处理过的视频文件。
  • 码率:码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。码率与体积成正比:码率越大,体积越大;码率越小,体积越小。由于文件体积与取样率是成正比的,所以几乎所有的编码格式都想用最低的码率达到最少的失真,“码率”就是失真度,码率越高越清晰,反之则画面粗糙而且马赛克多。
  • 视频部分的位深度:用于指定图像中的每个像素可以使用的颜色信息数量,用“位即bit”为单位。
  • 音频部分的位深度:单个声道的采样数据大小

视频压缩

一般来说,在做转码时音频影响不大,重点在于视频压缩。
视频压缩参数主要分为以下:

  • -s 设置输出分辨率(例如 -s 480x320)
  • -r 设置帧率(例如 -r 25)
  • -b:v 设置码率(例如 -b:v 500k)
  • -c:v 或 -vcodec设置编码器(例如 -c:v libx264)
  • 特殊参数-an,-vn,-sn分别排除所有的音频,视频,字幕流。
  • 编码器高级参数设置(也最为复杂)

视频分辨率和压缩大小参考

分辨率 Bitrate 10分钟的视频
320p 320×240 180 kbit/s ~13 MB
360p 640×360 300 kbit/s ~22 MB
480p 864×480 500 kbit/s ~37 MB
576p 720x576 850 kbit/s ~63 MB
720p 960×720 1000 kbit/s ~75 MB

编码器高级参数设置

编码器高级参数设置,甚为复杂:

  • -vcodec libx264 强制指定视频编码模式
  • -profile:v high 使用H.264的High模式 比较消耗资源
  • -pre slow 使用慢速模式 耗时间 清晰度高。该参数还可选择 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
  • -b:v 360k / 720k / 1550k 视频比特率 (该参数比较重要 如果是转换Web用途 是否正确直接影响视频播放流畅程度)
  • -maxrate 500k 最大比特率
  • -bufsize 1000k 比特率缓衝大小
  • -threads 0 处理器核心利用数量
  • -aspect 16:9 / 4:3 视频比例
  • -pass N 1-3可选
    ##ffmpeg x264编码参数简介
    x264参数在FFMPEG中可以使用很多参数,同样也可以使用x264本身的参数来控制,具体的参数列表如下所示:
参数 类型 说明
preset 字符串 编码器预设参数 。可选ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo。默认"medium"
tune 字符串 调优编码参数
profile 字符串 编码profile档级设置。可选baseline主要用于低清视频的制作,main主要用于移动设备视频的制作,high主要用于电脑播放和高清视频的制。
level 字符串 编码level层级设置
wpredp 字符串 P帧预测设置
x264opts 字符串 设置x264专有参数
crf 浮点数 选择质量恒定质量模式
crf_max 浮点数 选择质量恒定质量模式最大值
qp 整数 恒定量化参数控制
psy 浮点数 只用psychovisual优化
rc-lookahead 整数 设置帧类型和帧率控制预读帧数
weightb 布尔 允许B帧加权预测,可以减少相邻B帧质量低的影响,对质量和压缩比都有提高,且对速度影响极少。默认为auto
weightp 整数 P帧加强预测。 选项none,simple,smart,默认-1
ssim 布尔 计算和打印ssim统计信息
intra-refresh 布尔 用定时刷I帧以替代IDR帧,默认auto
bluray-compat 布尔 蓝光兼容参数
b-bias 整数 B帧可能指数,正值倾向于增加B帧,负值倾向于减少B帧。如果B-Frams设置的较大,可以改成 -1。默认值:
mixed-refs 布尔 每个 partition一个参考,而不是每个宏块一个参考。默认auto
8x8dct 布尔 8×8矩阵变换,用在 high profile。 默认auto
aud 布尔 带AUD间隔符。默认auto
mbtree 布尔 宏块树频率控制。默认auto
deblock 字符串 环路滤波器参数
cplxblur 浮点数 减少波动QP参数。默认-1
partitions 字符串 逗号分隔的 partition列表,可以包含的值有p8×8、p4x4、b8×8、8×8、i4×4、none、all
direct-pred 整数 运动向量预测模式
slice-max-size 整数 每个slice的最大字节数。默认-1
nal-hrd 整数 HRD信号信息设置。选项none,vbr,cbr
motion-est 整数 运动估计方法。选项dia,hex,umh,esa,tesa。默认-1
forced-idr 布尔 强行设置关键帧为IDR帧,默认false
coder 整数 编码器类型。选项default,cavlc,cabac,vlc,ac。默认default
b_strategy 整数 I/P/B帧选择策略 。默认-1
chromaoffset 整数 QP色度和亮度之间的差异参数
sc_threshold 整数 场景切换阈值参数
noise_reduction 整数 降噪处理参数
x264-params 字符串 与x264opts操作相同

音频压缩

  • -acodec libfaac 强制指定音频处理模式
  • -ac 2 声道选择
  • -ar 44100 音频赫兹
  • -ab 128k 比特率 128k (或-b:a 128k)
  • 示例:-acodec libfaac -ac 2 -ar 44100 -ab 64k

更多资料,更多分享

音视频技术交流群1 已满
音视频技术交流群2 已满
音视频技术交流群3 群号782508536

最新文章请关注以下专栏:
简书专栏:https://www.jianshu.com/nb/29979868
知乎专栏:https://zhuanlan.zhihu.com/multimedia

参考

[1] ffmpeg转换参数和压缩输出大小的比率

FFMPEG进阶系列03-ffmpeg转码专题(上)相关推荐

  1. FFMPEG进阶系列02-ffmpeg命令详解3

    ffmpeg 的封装转换 FFmpeg的封装转换部分,主要是通过libavformat这部分来完成的功能,通过libavformat库进行mux和demux操作,多媒体文件的格式有很多种,但是还是有好 ...

  2. FFMPEG进阶系列03-ffmpeg转码专题(中)x264参数详解

    文章目录 概述 版本 Presets(预设) tune slow-firstpass Frame-type options(帧类型选项) keyint min-keyint no-scenecut s ...

  3. FFMPEG进阶系列01-ffplay命令详解

    概述 ffplay是一个基于FFMPEG库和SDL库开发的多媒体播放器.它的主要目的是是用来测试FFMPEG的各种API,比如codec/format/filter等等库. 掌握ffplay的设计逻辑 ...

  4. 音视频开发系列(65)-FFMPEG进阶系列01-ffplay命令详解

    概述 ffplay是一个基于FFMPEG库和SDL库开发的多媒体播放器.它的主要目的是是用来测试FFMPEG的各种API,比如codec/format/filter等等库. 掌握ffplay的设计逻辑 ...

  5. FFMPEG进阶系列02-ffmpeg命令详解2

    帮助信息 查看ffmpeg版本 通过ffmpeg -version查看ffmpeg的版本,这里所查看的版本,是详细的版本,包含libavformat.libavcodec.libavutil.liba ...

  6. 安卓进阶系列-03上弹选择框(PopupDialog)的使用

    主要介绍上弹选择框的使用,这个功能基于Dialog实现,为安卓开发常见控件之一.实现方式并非利用第三方控件而是利用安卓原生对话框控件,不过样式自定义了. 1.布局使用 <?xml version ...

  7. iOS高级进阶系列之项目开发基础(上)多环境配置,Mach-O与链接器。

    前言 最近对项目进行优化,就顺便写一些日常开发中会用到的中高级开发技巧.这篇文章聊一下下面三个内容:多环境配置,Mach-O与链接器,Symbol. 多环境配置 聊到多环境配置,我们先说几个概念 上图 ...

  8. JavaScript进阶系列01,函数的声明,函数参数,函数闭包

    本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...

  9. 高薪程序员面试题精讲系列152之电商专题(中)-SPU是怎么回事?SPU如何设计?SKU又是什么呢?SN你知道吗?

    一. 面试题及剖析 1. 今日面试题 你做过电商项目吗? SKU怎么设计? SPU如何设计实现? 2. 题目剖析 在前两篇文章中,壹哥给大家介绍了电商相关的一些背景知识,以及购物车的业务实现.如果你还 ...

最新文章

  1. 用于目标检测的半自动视频标注
  2. ffmpeg把ts文件转m3u8并切片
  3. 蛋疼的ElasticSearch(一)之安装ElasticSearch
  4. 飞桨全新发布,核心框架首次完整公开解读
  5. 兰州大学第一届『飞马杯』程序设计竞赛 - ★★飞马祝福语★★(动态dp)
  6. [vue-element] ElementUI怎么修改组件的默认样式?
  7. 对层级聚类树进行模块分割,定位基因在哪个模块中
  8. [转]MVP+WCF+三层结构搭建项目框架
  9. 螺旋传动设计系统lisp_[罗升机电]第236期 丝杆升降机系统工程之齿轮传动的设计!...
  10. Windows11系统中便签小工具在哪 便签使用方法简单图解
  11. 网易BUFF产品体验报告
  12. HTML5期末大作业:旅游网站设计——北京旅游(1页) 北京旅游网页设计制作 简单静态HTML网页作品 我的旅游网页作业成品 学生旅游网站模板
  13. 上位机使用C++通过ADS协议与倍福PLC通信例程-布尔变量的读取
  14. Springboot启动流程详解
  15. 倍福beckhoff详细知识库展示
  16. SpreadJS 纯前端表格控件应用案例:金融业数据智能分析平台
  17. 弹簧物理-如何模拟弹簧和阻尼
  18. error 1366
  19. 读书笔记--删除数据时的提示效果在项目中的应用
  20. (攻防sj)web-bug

热门文章

  1. UnityUGUI[Slider]拖拽抬起事件
  2. 微服务进阶(四):Spring Cloud netflix概览及架构设计
  3. 页面手写签名插件 jSignature.min.js 使用实例
  4. Temporal框架学习
  5. “曲线”登陆hotmail邮箱 解你燃眉之急
  6. SpringBoot的Web开发入门案例1
  7. 计算机科学与技术就业前景(二)
  8. Bootstrap 颜色
  9. 黑马程序员javaweb增删改查笔记brand-demo0
  10. Labelme分割标注软件使用