这是以下内容主要是通过与豆包AI交流生成,生成的命令并未经过验证,是否有效并不确定,仅作为使用时的参考。
此文作为个人在编码转换时的参考,同时送给需要的朋友们。欢迎朋友们留言,指出使用文中的错误之处,发现的问题会随时进行更正。
FFMPEG版本:ffmpeg version 8.0-full_build-www.gyan.dev
一、H264 转 HEVC 无损(软编码)
1、命令行
基础版:仅转换视频流为HEVC无损,复用原音频/字幕
ffmpeg -i input.mp4 -c:v libx265 -x265-params lossless=1 -c:a copy -c:s copy output_hevc.mp4
进阶版:强制保持原分辨率/帧率,避免自动缩放
ffmpeg -i input.mp4 -c:v libx265 -x265-params lossless=1 -s:v copy -r copy -c:a copy -c:s copy output_hevc.mp4
兼容版:如果基础版报错,使用更明确的参数
ffmpeg -i input.mp4 -c:v libx265 -preset ultrafast -x265-params lossless=1 -c:a copy -c:s copy output_hevc.mkv
2、参数详细解释
| 作用 | |
|---|---|
| -i input.mp4 | 指定输入文件 |
| -c:v libx265 | 视频编码器使用 libx265(HEVC) |
| -x265-params lossless=1 | 开启 x265 的无损编码模式(核心参数) |
| -preset ultrafast | 编码速度预设(无损模式下速度影响小,可选) |
| -c:a copy | 音频流直接复制(不重新编码) |
| -c:s copy | 字幕流直接复制(不重新编码) |
| -s:v copy | 强制复制原视频分辨率 |
| -r copy | 强制复制原视频帧率 |
| output_hevc.mp4 | 输出文件(推荐用.mkv 容器,兼容性更好) |
3、注意事项
前置条件: 你的 FFmpeg 必须编译了 libx265 编码器,可通过 ffmpeg -encoders | grep libx265 验证。
文件体积: HEVC 无损编码的文件体积通常比 H.264 无损更小,但仍远大于有损压缩的文件。
容器选择: MP4:兼容性好,但部分设备可能不支持 HEVC + MP4
MKV:对 HEVC 支持更完善,推荐使用
**验证无损:**转换完成后,可通过 ffmpeg -v error -i output_hevc.mkv -f null - 检查是否有编码错误。
4、总结
核心参数是 -x265-params lossless=1,必须指定才能实现 HEVC 无损编码。
转换时建议使用 -c:a copy -c:s copy 避免音频 / 字幕重新编码,保证完整无损。
优先选择 MKV 容器,兼容性优于 MP4,且能更好地支持 HEVC 无损流。
二、H264 转 HEVC 无损(NVIDIA硬编码)
1、核心思路
NVIDIA 的 NVENC HEVC 硬编码器(h265_nvenc)实现 "无损" 和软编逻辑不同,核心是:
(1)使用 NVIDIA 硬编编码器 hevc_nvenc 替代软编的 libx265;
(2)通过 cq=0(恒定质量为 0,NVENC 无损核心参数)实现视觉无损 / 近无损;
(3)保留原视频参数(分辨率、帧率),音频 / 字幕直接复制;
(4)需确保显卡支持 NVENC HEVC 编码(Kepler 架构及以上,如 GTX 10 系、RTX 20/30/40 系、TITAN 等)。
2、完整的 NV 硬编无损转换命令
基础版(通用)
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 \
-c:v hevc_nvenc -cq 0 -preset p7 -rc vbr_hq \
-s:v copy -r copy -c:a copy -c:s copy \
output_hevc_nvenc.mp4
进阶版(极致无损 + 兼容)
# 强制使用GPU解码+编码,避免CPU介入,速度更快
ffmpeg -hwaccel cuda -hwaccel_device 0 -hwaccel_output_format cuda -i input.mp4 \
-c:v hevc_nvenc -cq 0 -preset p7 -rc vbr -profile:v main10 \
-s:v copy -r copy -c:a copy -c:s copy \
output_hevc_nvenc.mkv
简化版(新手友好)
ffmpeg -i input.mp4 -c:v hevc_nvenc -cq 0 -c:a copy -c:s copy output_hevc_nvenc.mp4
3、关键参数解释
| 参数 | 作用 |
|---|---|
-hwaccel cuda |
启用 CUDA 硬件加速解码(减少 CPU 占用,提升速度) |
-hwaccel_device 0 |
指定使用第 0 块 NVIDIA 显卡(多显卡时用,如 1、2) |
-hwaccel_output_format cuda |
解码后的帧直接留在 GPU 显存,避免 CPU/GPU 数据拷贝 |
-c:v hevc_nvenc |
视频编码器使用 NVIDIA NVENC HEVC 硬编 |
-cq 0 |
核心无损参数:NVENC 的恒定质量模式,0 为最高质量(视觉无损),数值越大压缩率越高、画质越低 |
-preset p7 |
编码预设(p1 最慢质量最好,p7 最快),无损模式下 p7 速度最优,画质无差异 |
-rc vbr |
码率控制模式(高质量可变码率),配合 cq=0 实现无损 |
-profile:v main10 |
启用 10 位编码(部分显卡支持),提升色彩精度,更接近 "真无损" |
-s:v copy/-r copy |
强制复制原分辨率 / 帧率,避免自动调整 |
-c:a copy/-c:s copy |
音频 / 字幕直接复制,不重新编码 |
4、前置条件与验证
(1)检查 FFmpeg 是否支持 NVENC :运行以下命令,若输出包含 hevc_nvenc 则支持:
ffmpeg -encoders | grep nvenc
(2)检查显卡兼容性 :NVIDIA 官网查询显卡是否支持 NVENC HEVC,或运行 nvidia-smi 查看显卡型号;
(3)驱动要求:需安装最新的 NVIDIA 显卡驱动(建议 520.x 以上版本)。
5、注意事项
(1)NVENC 的 "无损" 特性 :NVENC 没有像 libx265 那样的 lossless=1 纯无损参数,cq=0 是视觉无损(人眼无法分辨差异),而非比特级无损,这是硬编的技术限制;
(2)速度 vs 体积 :硬编速度比软编快 5-10 倍,但 cq=0 生成的文件体积比软编无损略大;
(3)容器选择:优先用 MKV(对 HEVC 硬编流兼容性更好),MP4 也可但部分设备可能不兼容;
(4)常见报错解决:
-
报错
No NVENC capable devices found:显卡不支持 NVENC,或驱动未安装; -
报错
hwaccel cuda not found:FFmpeg 未编译 CUDA 支持,需重新编译或下载带 CUDA 的 FFmpeg 版本(如 B 站编译版、NVIDIA 官方版)。
6、总结
(1)NVIDIA 硬编无损的核心参数是 -c:v hevc_nvenc -cq 0,cq=0 替代软编的 lossless=1;
(2)加上 -hwaccel cuda 可启用硬件解码,进一步提升整体转换速度;
(3)NVENC 的 "无损" 是视觉无损,而非比特级无损,这是硬编的技术特性,无法完全等同于软编纯无损。
三、RMVB 转 H264(1280*720)(软编码)
要将 1280×720(720P)RMVB 转换为 H.264 编码并实现画质与体积的最优平衡 ,核心思路是用 libx264 编码器的 CRF 恒定质量模式(智能控质)+ 合理的预设与音频参数
1、核心转换命令
推荐平衡版(画质接近原片 + 体积可控)
ffmpeg -i input.rmvb \
-c:v libx264 -crf 23 -preset slow \
-s 1280:720 -r copy \
-c:a aac -b:a 128k -ac 2 \
-vf "format=yuv420p" -movflags +faststart \
output_720p_h264.mp4
极致画质版(肉眼无损,体积稍大)
适合对画质要求高的场景,CRF 值降低,预设更慢以提升压缩效率:
ffmpeg -i input.rmvb \
-c:v libx264 -crf 18 -preset veryslow \
-s 1280:720 -r copy \
-c:a aac -b:a 160k -ac 2 \
-vf "format=yuv420p" -movflags +faststart \
output_720p_lossless.mp4
极致压缩版(体积最小,画质可接受)
适合存储紧张的场景,轻微牺牲画质:
ffmpeg -i input.rmvb \
-c:v libx264 -crf 28 -preset slow \
-s 1280:720 -r copy \
-c:a aac -b:a 96k -ac 2 \
-vf "format=yuv420p" -movflags +faststart \
output_720p_small.mp4
2、关键参数详解
| 参数 | 作用 | 720P 适配说明 |
|---|---|---|
-c:v libx264 |
指定 H.264 软编编码器 | 画质 / 体积平衡最优,优于硬编 |
-crf 23 |
核心控质参数,值越小画质越好 | 720P 推荐 20-25,18 = 无损观感,28 = 轻度压缩 |
-preset slow |
编码速度预设,越慢压缩率越高 | 推荐 slow/veryslow,720P 转码耗时可控 |
-s 1280:720 |
强制输出 720P 分辨率 | 避免 FFmpeg 自动缩放导致画质损失 |
-r copy |
复制原视频帧率 | 防止帧率改变引发的画面卡顿 / 快放 |
-c:a aac -b:a 128k |
音频转 AAC 编码,码率 128k | 720P 视频的音频 128k 立体声足够,比 RMVB 原音频更省体积 |
-vf format=yuv420p |
强制色彩格式 | 兼容所有播放器(手机 / 电视 / 电脑) |
-movflags +faststart |
优化 MP4 文件结构 | 支持边下载边播放,适合流媒体分享 |
3、调优注意事项
(1)编码器验证 :确保 FFmpeg 编译了 libx264,执行 ffmpeg -encoders | grep libx264 验证。
(2)CRF 微调技巧 :若默认 CRF 23 体积仍大,可每次 +1 逐步测试,直到画质可接受;若画质模糊,每次 -1 提升。
(3)容器选择 :优先用 MP4(兼容性最好),若需保留多字幕 / 音轨,可换 MKV 容器(将输出后缀改为 .mkv)。
四、RMVB 转 H264(1280*720)(NVIDIA硬编码)
1、核心思路
NVIDIA NVENC H.264 硬编(h264_nvenc)兼顾速度和画质的关键策略:
(1)用 h264_nvenc 替代软编的 libx264,启用 CUDA 硬件加速解码 + 编码,减少 CPU 占用;
(2)通过 cq(恒定质量)参数控质(核心):720P 场景下cq=18-23是画质 / 体积的黄金区间,数值越小画质越好;
(3)匹配原视频分辨率(1280×720)、帧率,避免缩放损失;
(4)音频转高效 AAC 编码,进一步压缩体积;
(5)需确保显卡支持 NVENC H.264(Kepler 架构及以上,如 GTX 10 系 / RTX 20-40 系 / NVIDIA 显卡)。
2、完整的 NV 硬编转换命令
推荐平衡版(速度 + 画质 + 体积最优)
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.rmvb \
-c:v h264_nvenc -cq 20 -preset p6 -rc vbr \
-s 1280:720 -r copy \
-c:a aac -b:a 128k -ac 2 \
-vf "format=yuv420p" -movflags +faststart \
output_720p_h264_nvenc.mp4
极致画质版(视觉无损,体积稍大)
ffmpeg -hwaccel cuda -hwaccel_device 0 -hwaccel_output_format cuda -i input.rmvb \
-c:v h264_nvenc -cq 18 -preset p7 -rc vbr -profile:v high \
-s 1280:720 -r copy \
-c:a aac -b:a 160k -ac 2 \
-vf "format=yuv420p" -movflags +faststart \
output_720p_high_nvenc.mp4
极致压缩版(体积最小,画质可接受)
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.rmvb \
-c:v h264_nvenc -cq 25 -preset p5 -rc vbr \
-s 1280:720 -r copy \
-c:a aac -b:a 96k -ac 2 \
-vf "format=yuv420p" -movflags +faststart \
output_720p_small_nvenc.mp4
3、关键参数详解(NV 硬编专属)
| 参数 | 作用 | 720P 适配说明 |
|---|---|---|
-hwaccel cuda |
启用 CUDA 硬件加速解码 | 解码环节也用 GPU,整体速度提升 5-10 倍 |
-hwaccel_output_format cuda |
解码帧留在 GPU 显存 | 避免 CPU/GPU 数据拷贝,进一步提速 |
-c:v h264_nvenc |
指定 NVENC H.264 硬编码器 | 核心硬编参数,替代软编 libx264 |
-cq 20 |
硬编核心控质参数(恒定质量) | 720P 推荐 18-23:18 = 视觉无损,20 = 平衡,25 = 轻度压缩 |
-preset p6 |
硬编速度预设(p1 最慢画质最好,p7 最快) | 720P 推荐 p5/p6:速度快,压缩比足够 |
-rc vbr |
码率控制模式 | vbr= 高质量可变码率,配合 cq 更省体积 |
-profile:v high |
启用 H.264 High Profile | 提升压缩效率,720P 兼容性无压力 |
4、前置条件与注意事项
(1)验证 NVENC 支持 :运行 ffmpeg -encoders | grep nvenc,输出包含 h264_nvenc 则支持;运行 nvidia-smi 确认显卡驱动正常(建议 520.x 以上版本)。
(2)硬编 vs 软编差异:
- 速度:硬编比软编快 3-10 倍(720P 视频转码仅需数分钟);
- 画质:同 cq 值下,硬编画质略逊于软编,但肉眼几乎无差异;
- 体积:硬编体积比软编略大(约 5-10%),但速度优势远大于体积差异。
(3)常见报错解决:
No NVENC capable devices found:显卡不支持 NVENC,或驱动未安装;hwaccel cuda not found:FFmpeg 未编译 CUDA 支持,需下载带 CUDA 的版本(如 B 站编译版、NVIDIA 官方版)。
5、总结
(1)NV 硬编核心控质参数是 -cq(720P 推荐 20),替代软编的-crf,-rc vbr_hq 可优化体积;
(2)加上 -hwaccel cuda 启用硬件解码,是提升 720P RMVB 转码速度的关键;
(3)硬编画质略逊于软编,但速度提升显著,720P 场景下cq=20可兼顾画质和体积。