更多音视频知识请点击:专注音视频开发
概述
关键的参数
该篇主要是探讨转码相关的技术点,比如:
- 视频尺寸:指的就是视频的分辨率,常见的分辨率有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操作相同 |
H264编码举例
- 编码器预设置参数preset
音频压缩
- -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