1. 视频文件大小计算公式 2. 视频文件关键参数 2.1 Resolution 分辨率 2.2 Frame rate 帧率 2.3 Bitrate 比特率 3. 视频压缩 3.1 分辨率与最低比特率参考对照表 3.2 ffmpeg压缩命令 3.3 FfmpegFreeUI
1. 视频文件大小计算公式
比特率(Mb/s) x 视频时长(s) ÷ 8 = 视频文件大小(MB)
视频文件大小基本可以按该公式计算。计算结果和实际文件大小相差无几。
2. 视频文件关键参数
2.1 Resolution 分辨率
解析度(英语:resolution)又称分辨率(resolving power),泛指量测或显示系统对细节的分辨能力。
此概念可以用时间、空间等领域的量测。
影像分辨率(image resolution)则专指影像、图像记录物体细部能力的一种度量,此时又称解像度、解像力。
2.2 Frame rate 帧率
帧率(英语:frame rate)是用于测量显示帧数的度量。
测量单位为“每秒显示帧数”(frame per second,FPS)或“赫兹”,FPS通常用于描述影片、电子绘图或游戏每秒播放多少帧。
较高的帧率在一秒钟内捕捉更多帧,特别是在有快速移动物体的环境中,影片的视觉呈现更细致流畅。
常见的帧率有:
- 24fps:(胶片)电影标准
- 25fps:PAL标准(欧洲, 亚洲, 澳洲等地的电视广播格式), SECAM(法国, 俄国, 部分非洲等地的电视广播格式)
- 29.97fps: NTSC标准(美国, 加拿大, 日本等地的电视广播格式)
- 60P:适合减慢做慢动作
- 120P:做更慢的慢动作
2.3 Bitrate 比特率
比特率(英语:Bit rate或Bit-rate/Bitrate,变量简写为R)在电信和计算领域是指单位时间内传输送或处理的比特数量。
比特率经常在电信领域用作连接速度、传输速度、信息传输速率和数字带宽容量的同义词。
在数字多媒体领域,比特率是单位时间播放连续的媒体如压缩后的音频或视频的比特数量。
比特率规定使用“比特每秒”(bit/s或bps)为单位。
码流=文件大小(字节*8位)/视频持续时间(秒)例如:2400MBx8 / 480 秒 = 40Mbps
较高的比特传输率将可容纳更高的视频质量,即更大的视频文件。一些典型比特率:
- VCD: 1Mbps
- DVD: 5Mbps
- HDTV: 20Mbps
- Blu-ray: 40Mbps
- Ultra HD Blu-ray: 100Mbps
3. 视频压缩
视频文件当前使用最多的是H264,兼容性也最好。更新的是H265(hevc)
根据分辨率,设置适当的比特率,能有效压缩文件大小,且保留品质。
3.1 分辨率与最低比特率参考对照表
| 名称 | 分辨率 | 备注 | 比特率 (Mbps) |
时长 (s) |
bit → Byte (/8) |
M → G (/1024) |
Size (GB) |
||
| 水平 | 垂直 | X | Y | ||||||
| 8k | 7680 | 4320 | UHDTV2 | 40 | 6000 | 8 | 1024 | 29.3 | |
| 4k | 2160p | 3840 | 2160 | UHD | 10 | 6000 | 8 | 1024 | 7.3 |
| 2k | 1440p | 2560 | 1440 | QHD | 5 | 6000 | 8 | 1024 | 3.7 |
| 1080p | 1920 | 1080 | Full HD | 3 | 6000 | 8 | 1024 | 2.2 | |
| 1600 | 900 | 2 | 6000 | 8 | 1024 | 1.5 | |||
| 720p | 1280 | 720 | HD | 1.5 | 6000 | 8 | 1024 | 1.1 | |
| ⇧列出 (16:9) 的显示器分辨率 | 比特率(Mb/s) * 时长(s) /8 /1024 = Size(GB) | ||||||||
公式: 比特率(Mb/s) * 时长(s) /8 /1024 = Size(GB)
计算时长100分钟的视频文件在指定比特率下的参考大小。
- 这里分辨率: (720p, 1080p) 的比特率分别为(1.5~3Mbps), 这个数值算是经验参数,查看了很多下载的视频,文件紧凑,品质尚可的都是这个数值。
- 至于分辨率: (2k以上的),根据上面参数的近似比例放大,不一定对,仅供参考。
3.2 ffmpeg压缩命令
调整分辨率
ffmpeg -i m4k.mkv -vf scale=1920:-2 -map 0 c3.mkv
-map 0 保留所有音轨和字幕轨。若不加(-map 0),则只保留第一个音轨和第一个字幕轨。
注意,虽然能保留所有字幕轨,但原本字幕格式可能会被重新编码,若出现字幕显示异常。可用如下复制参数:
- 复制参数: -map 0:a -c:a copy -map 0:s -c:s copy
- 调整帧率: -r 30
- 调整码率: -b:v 2M
调整为更高效的编码格式. Intel CPU 使用libx265:
-c:v libx265 -crf 26
-crf 23 表示视频质量,值越小,视频质量越高,文件越大。(范围:0~51,推荐23)
ffmpeg -i "<输入>" -c:v libx265 -preset medium -crf 25 -map 0:a -c:a copy -map 0:s -c:s copy "<输出>"
指定比特率:
ffmpeg -i "<输入>" -c:v libx265 -b:v 2M -map 0:a -c:a copy -map 0:s -c:s copy "<输出>"
- NVIDIA显卡 使用 hevc_nvenc 代替上面的libx265
- M1芯片 使用 hevc_videotoolbox 代替上面的libx265
对于M1 Mac用户,hevc_videotoolbox 是视频转码和压缩的最佳替代品,性能远超单纯依靠CPU的 libx265。
苹果M1芯片使用如下命令压缩 (H264格式4k视频, 比特率50Mbps)
比特率50M改为8M,改用H265压缩,文件缩小到16%
ffmpeg -i m4k.mp4 -map 0:v -c:v hevc_videotoolbox -b:v 8M -map 0:a -c:a copy m265-8M.mp4
同样的文件,修改分辨率,设定比特率2M,文件缩小到4%。
ffmpeg -i m4k.mp4 -vf scale=1920:-2 -b:v 2M -map 0 m1920-2m.mp4
若包含多音轨,多字幕,使用如下map的copy,保留全部。
ffmpeg -i m4k.mkv -map 0:v -c:v hevc_videotoolbox -b:v 2M -map 0:a -c:a copy -map 0:s -c:s copy m265-2M.mkv
macOS-m1芯片使用hevc_videotoolbox:h265压缩,比特率的2M或3M,需要M大写。
3.3 FfmpegFreeUI
不想使用ffmpeg命令,可以使用这个开源工具。ffmpeg的图形界面。
在参数面板设置好参数,在参数总览下可以看到生成的实际命令行。
没有评论:
发表评论