取消 搜索

FFmpeg NVENC 转码教程

2026年08月08日 技术分享 248 阅读 0 评论

resized-ChatGPT Image 2026年8月8日 01_08_34.jpg

适用场景:从某些来源获取的视频在本地系统/官方播放器或飞牛OS中出现无法播放、有画面无声音、画面异常、音画不同步等兼容性问题时,可以使用 FFmpeg 进行格式或音频兼容修复。本教程以 RTX 4060 Ti 为例,使用 NVENC 加速视频转码,也适合需要批量统一视频格式的用户。

1. 工具准备

本教程以 Windows + RTX 4060 Ti 为例,重点解决从网络获取的视频在 Windows 官方播放器、飞牛OS/NAS 或浏览器播放时出现的兼容性问题,并整理日常最实用的 FFmpeg 功能:H.264 转码、GPU 硬解、音频兼容修复、分辨率调整、转封装、字幕/多音轨保留、剪切、合并与批量处理。

项目 示例
系统 Windows 10 / Windows 11
显卡 NVIDIA RTX 4060 Ti
工具 FFmpeg Windows Essentials Build
目标视频编码 H.264
硬件编码器 NVENC
硬件解码器 NVDEC
常见用途 解决本地系统/官方播放器或飞牛OS对部分视频资源兼容性不佳的问题,并统一转换为 H.264

说明:FFmpeg 本身功能非常庞大,本文不是完整参数手册,而是把“视频兼容修复与影视库整理”真正会用到的常用功能集中写全。

2. 下载 FFmpeg

在 FFmpeg 的 Windows builds 页面下载已经编译好的 Windows 版本。推荐选择 release essentials ZIP,Windows 可以直接解压使用;需要科学上网,如果下载较慢,可尝试页面提供的 GitHub 镜像。

Release ffmpeg 9.0.1 builds · GyanD/codexffmpeg · GitHub

13436A48EF49B39E28B44A229B29C093_compressed.png

下载后,正确的目录结构应类似:

ffmpeg-9.0-essentials_build

├─ bin
│   ├─ ffmpeg.exe
│   ├─ ffplay.exe
│   └─ ffprobe.exe

├─ doc
└─ presets

不要下载错:如果解压后主要看到 libavcodec、libavformat、configure、Makefile 等目录/文件,那通常是源码包,不是可以直接双击/运行的 Windows 可执行版。

3. 在 CMD 中运行 FFmpeg

ffmpeg.exe 是命令行工具,不适合直接双击。正确方式是先进入 FFmpeg 的 bin 目录,再打开 CMD。

1.ffmpeg-9.0.1-essentials_build\bin。

2.在地址栏输入 cmd 并回车。

3.测试 FFmpeg 是否能运行:

ffmpeg -version

注意:一定要是version

成功标准:能看到 ffmpeg version、libavcodec、libavformat 等版本信息,即说明 FFmpeg 可以正常运行。

13436A48EF49B39E28B44A229B29C093_compressed (1).png

4. 检查 NVENC / CUDA 是否可用

4.1 检查 NVIDIA 编码器

在 FFmpeg 的 bin 目录中运行:

ffmpeg -encoders | findstr /i nvenc

RTX 4060 Ti 正常情况下会看到类似:

图片2.png

关键项:本教程转换 H.264,最重要的是 h264_nvenc。只要它存在,就说明当前 FFmpeg 编译版本包含 NVIDIA H.264 硬件编码支持。

4.2 检查 CUDA 硬件加速

ffmpeg -hwaccels | findstr /i cuda

如果输出中出现 cuda,说明当前 FFmpeg 可以尝试使用 NVIDIA CUDA 硬件加速路径。

5. 第一次 H.264 硬件转码

假设输入视频为 D:\电影\movie.mp4,输出文件为 D:\电影\movie_h264.mp4:

ffmpeg -i "D:\电影\movie.mp4" -c:v h264_nvenc -preset p4 -c:a copy "D:\电影\movie_h264.mp4"
参数 作用
-i 指定输入文件
-c:v h264_nvenc 使用 NVIDIA NVENC 编码成 H.264
-preset p4 速度与压缩效率的均衡档
-c:a copy 音频直接复制,不重新压缩

路径提示:路径中含有中文、空格时,建议始终用英文双引号把完整路径包起来。

注意:驱动版本过低也是无法转码的([h264_nvenc @ 000002485843e580] Driver does not support the required nvenc API version. Required: 13.1 Found: 13.0,当前驱动只支持 NVENC API 13.0,但你新版 FFmpeg 9.0.1 需要 13.1,官方要求驱动 ≥610.00 版本才能兼容; 驱动版本不够,硬件编码器 nvenc 无法打开,转码直接失败。)

6. 如何确认 4060 Ti 真的在编码/解码

6.1 看 FFmpeg 日志

FFmpeg 转码开始后,如果出现类似于以下内容:

图片3.png

就可以确认:视频的编码部分正在使用 NVENC。

6.2 看 Windows 任务管理器

打开“任务管理器 → 性能 → GPU”,把图表切换为多个引擎,重点观察:

  • Video Encode:硬件编码器负载
  • Video Decode:硬件解码器负载

如果转码时 Video Encode 明显有占用,则 NVENC 正在工作。若同时启用兼容的硬件解码并看到 Video Decode 有占用,则 NVDEC 也在工作。

不要只看 GPU 总占用:NVENC/NVDEC 是独立视频引擎,3D 或 CUDA 总占用不高并不代表没有使用硬件视频单元。

6.3 转码完成后的正常状态示例

当 FFmpeg 正常完成转码时,命令行末尾会出现类似以下结果。结合前面的日志与任务管理器状态,就可以判断本次转码是否按预期完成。

图片4.png

7. 如何看 FFmpeg 的实时速度

转码过程中,底部通常会不断刷新一行状态:

frame=8770 fps=377 q=38.0 size=85504KiB time=00:04:54.70 bitrate=2376.8kbits/s speed=12.7x
字段 含义
frame=8770 已处理的帧数
fps=377 当前每秒处理约 377 帧
time=00:04:54.70 已经处理到视频时间轴的 4 分 54 秒,不是剩余时间
bitrate=… 当前输出的平均码率状态
speed=12.7x 转码速度约为实时播放速度的 12.7 倍

例如一部 120 分钟的视频,若全程保持 speed=12.7x,理论处理时间约为 120 ÷ 12.7 ≈ 9.4 分钟。

8. Preset、CQ 与“直接复制”分别控制什么

8.1 Preset:速度与压缩效率

NVENC 常用 P1~P7 预设。可以把它理解为编码器愿意花多少计算量去获得更好的压缩效率。

Preset 倾向 适合
P1 最快 追求速度、临时转换
P2-P3 偏快 速度优先
P4 均衡 日常批量转换,推荐起点
P5-P6 偏质量 更看重同码率下的画质
P7 最偏质量 不急时间、追求压缩效率

8.2 CQ:控制目标质量

如果希望以“质量优先”而不是固定码率来转码,可以使用 CQ,例如:

ffmpeg -i "input.mp4" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output.mp4"

通常可以从 CQ 18、20、23 一带自己测试:数字越小,画质通常越高、文件也往往越大;数字越大,压缩更强。

经验建议:本文命令中的 CQ 20 可作为偏高质量的起点;如果主要用于剧情观看,希望画质不明显损失同时进一步减小文件体积,可以尝试 -preset p4 -cq 28,再根据个人需求微调。

8.3 真正“不重新编码”:Stream Copy

如果视频本身已经是你需要的编码格式,只想换容器或重新封装,可以使用:

ffmpeg -i "input.mkv" -c copy "output.mp4"

这叫 stream copy(流复制),速度非常快,也不会产生重新编码损失。但它不能改变分辨率,也不能把 H.265 变成 H.264。

9. 修改分辨率并保持画面比例

如果原视频是 2580×1080(约 2.39:1 超宽比例),直接强行改成 1920×1080 会改变画面比例,人物可能被横向压缩。

更合理的做法是固定宽度为 1920,让高度按原比例自动计算:

ffmpeg -i "input.mp4" -vf "scale=1920:-2" -c:v h264_nvenc -preset p4 -c:a copy "output.mp4"

这里的 -2 表示:根据原始宽高比自动计算高度,并让结果保持适合视频编码的偶数尺寸。2580×1080 大致会得到约 1920×804。

不要强制 1920×1080:除非你明确需要拉伸、裁剪或加黑边,否则超宽电影不应直接硬改成 16:9。

10. GPU 硬解 + NVENC 编码:什么时候需要用?

10.1 GPU 硬解 + NVENC 编码是什么?

简单理解:单独使用 NVENC 时,显卡主要负责后半段的视频处理;开启 GPU 硬解后,前半段读取和解析源视频的工作也交给显卡。它的主要作用是减轻 CPU 压力,并不代表所有视频都会因此明显变快。

10.2 什么场景下建议使用?

  • 4K、高码率视频:分辨率和码率较高时,CPU 解码压力更大。
  • 265 / HEVC、AV1 等源视频:相比普通 H.264,更适合尝试 GPU 硬解。
  • 同时运行多个转码任务:可以明显减轻 CPU 同时解码多路视频的压力。
  • 批量处理高规格视频:批量脚本本身并不要求 GPU 硬解;如果批量内容主要是 4K、HEVC/AV1,或者单个任务时 CPU 解码占用已经较高,再开启 GPU 硬解更有意义。

10.3 和单独使用 NVENC 有什么区别?

对比项 单独使用 NVENC GPU 硬解 + NVENC
视频解码 通常由 CPU 负责 由 NVIDIA GPU 负责
视频编码 NVENC NVENC
CPU 占用 通常更高一些 通常更低
速度表现 普通 1080P 场景通常已经足够快 4K、HEVC/AV1 或 CPU 压力较高时更有优势
兼容性 更简单、兼容性更好 对源格式和部分滤镜有一定要求
推荐场景 1080P H.264、普通单文件转码 4K、HEVC/AV1、高码率、多路同时转码

选择建议:普通 1080P 视频先用单独 NVENC;遇到 4K、HEVC/AV1、CPU 占用明显升高,或需要同时处理多路视频时,再开启 GPU 硬解 + NVENC。批量任务如果只是按顺序处理普通 1080P 视频,也不一定需要 GPU 硬解。

11. 推荐的单文件命令

下面四条单文件命令按使用场景排列:普通 1080P 视频优先使用单独 NVENC;4K、HEVC/AV1 或 CPU 解码压力较高时使用 GPU 硬解 + NVENC;需要在 GPU 上缩放时使用 CUDA 缩放;如果 CUDA 缩放兼容性不好,再使用普通 scale 的稳定方案。需要一次处理多个文件时,可直接使用 11.5 的批量脚本。

11.1 普通转码:单独使用 NVENC(保持原分辨率)

ffmpeg -i "input.mp4" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output_h264.mp4"

适合普通 1080P H.264 等常见视频。命令简单、兼容性较好,也是日常使用时优先推荐的方案。

11.2 GPU 硬解 + NVENC 编码(保持原分辨率)

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i "input.mp4" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output_h264.mp4"

适合 4K、HEVC/AV1、高码率视频,或 CPU 解码占用较高的情况。开启后可进一步降低 CPU 压力。

11.3 GPU 硬解 + CUDA 缩放到最大宽度 1920

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i "input.mp4" -vf "scale_cuda=1920:-2" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output_1080p_h264.mp4"

适合需要同时进行 GPU 硬解和分辨率缩放的 2K/4K、超宽视频,可在保持原始宽高比的同时输出更易播放的 H.264 版本。

11.4 稳定优先版(普通 scale)

ffmpeg -i "input.mp4" -vf "scale=1920:-2" -c:v h264_nvenc -preset p4 -cq 28 -c:a copy "output_1080p_h264.mp4"

如果 CUDA 缩放兼容性不好,这条通常更稳;仍然使用 NVENC 编码,只是缩放可能由 CPU 完成。这里示例使用 CQ 28,更偏向减小文件体积。

11.5 多个视频:使用 BAT 批量调用 GPU 硬解 + NVENC

本节整理三套适配Windows的NVENC批量转码BAT脚本,适配不同使用场景,所有脚本均无需完整FFmpeg文件夹,仅需将 ffmpeg.exe 与BAT脚本放在同一目录即可,运行后自动生成output输出文件夹,不会修改原始视频文件。运行前提:NVIDIA RTX系列显卡(支持NVENC)、显卡驱动版本≥610.00,统一输出H.264视频、AAC 128k音频,适配飞牛OS、Windows播放器、NAS兼容需求。若部分视频转码报错,可删除脚本中 -hwaccel cuda 参数,关闭GPU硬解改用CPU软解。三套脚本独立使用,请勿合并。

脚本1:多格式高质量批量转码(CQ23)

适配当前目录 mp4/mov/mkv/avi/flv 全格式视频,CQ23高质量参数,画质优先,适合高清片源、影视收藏。
@echo off
chcp 65001 >nul
md output
for %%i in (*.mp4 *.mov *.mkv *.avi *.flv) do (
echo 正在转码:%%i
ffmpeg -hwaccel cuda -i "%%i" ^
-c:v h264_nvenc -preset p4 -rc vbr -cq 23 ^
-c:a aac -b:a 128k ^
-y "output\%%~ni.mp4"
)
echo =========全部完成=========
pause

脚本2:MP4专属高压缩转码(CQ28)

仅处理当前目录MP4文件,CQ28高压缩参数,平衡画质与体积,适合日常存储、NAS影视库归档。
@echo off
chcp 65001 >nul
md output
for %%i in (*.mp4) do (
echo 正在转码:%%i
ffmpeg -hwaccel cuda -i "%%i" ^
-c:v h264_nvenc -preset p4 -rc vbr -cq 28 ^
-c:a aac -b:a 128k ^
-y "output\%%~ni.mp4"
)
echo =====全部搞定=====
pause

脚本3:递归全局MP4批量转码(CQ28)

递归遍历当前文件夹及所有子文件夹的MP4文件,全自动批量处理,适合大容量、多层级影视库整理。
@echo off
chcp 65001 >nul
md output
for /r %%i in (*.mp4) do (
echo 正在转码:%%i
ffmpeg -hwaccel cuda -i "%%i" ^
-c:v h264_nvenc -preset p4 -rc vbr -cq 28 ^
-c:a aac -b:a 128k ^
-y "output\%%~ni.mp4"
)
echo =====全部搞定=====
pause

三套脚本核心区别与选型指南

项目
脚本1
脚本2
脚本3
扫描文件范围
当前文件夹内,支持mp4、mov、mkv、avi、flv
当前文件夹内,仅支持mp4
全局递归扫描,含所有子文件夹,仅支持mp4
CQ画质参数
‑cq 23 高质量,体积偏大
‑cq 28 高压缩,画质均衡
‑cq 28 高压缩,画质均衡
输出音频
AAC 128k
AAC 128k
AAC 128k
GPU硬解
开启‑hwaccel cuda
开启‑hwaccel cuda
开启‑hwaccel cuda
适用场景
多格式混杂文件夹,追求高清画质收藏
纯MP4文件夹,优先压缩节省存储空间
多层级影视库,批量全局规整视频格式
参数说明:CQ数值越小画质越高、文件体积越大;CQ23适合高清收藏场景,CQ28兼顾画质与体积,是NAS、日常影视归档的最优选择。
使用建议:上面的脚本适合 4K、HEVC/AV1 或 CPU 解码压力较高的视频。若主要处理普通 1080P H.264,可删掉 -hwaccel cuda-hwaccel_output_format cuda,只保留 NVENC 编码。
“批量”只负责自动处理多个文件,和是否开启 GPU 硬解是两回事。普通 1080P H.264 批量任务可以只用 NVENC;4K、HEVC/AV1 或 CPU 解码压力较高时,再把批量脚本中的 GPU 硬解参数打开。
@echo off
chcp 65001 >nul
setlocal

set "ffmpeg=D:\ffmpeg\bin\ffmpeg.exe"
set "input=D:\视频转换\input"
set "output=D:\视频转换\output"

if not exist "%output%" mkdir "%output%"

for %%A in ("%input%\*.mp4") do (
    "%ffmpeg%" ^
    -hwaccel cuda ^
    -hwaccel_output_format cuda ^
    -i "%%~fA" ^
    -c:v h264_nvenc ^
    -preset p4 ^
    -cq 20 ^
    -c:a copy ^
    -n ^
    "%output%\%%~nA_h264.mp4"
)
pause
使用建议:上面的脚本适合 4K、HEVC/AV1 或 CPU 解码压力较高的视频。若主要处理普通 1080P H.264,可删掉 -hwaccel cuda-hwaccel_output_format cuda,只保留 NVENC 编码。

12. 音频兼容性修复:有画面没声音

12.1 什么情况下适用?

如果从网络获取的视频在第三方播放器中声音正常,但 Windows 官方播放器或飞牛OS播放时只有画面没有声音,通常说明文件本身没有损坏,而是原音频编码或封装方式与播放器兼容性不好。此时一般不需要重新压缩视频,只处理音频即可。

典型现象:第三方播放器可以正常播放,但 Windows 官方播放器、NAS 网页播放器等没有声音。此时优先检查音频轨,而不是直接重新转整段视频。

12.2 先查看音频格式

先让 FFmpeg 读取文件信息:

ffmpeg -i "input.mp4"

重点查看输出中的 Audio: 一行。例如出现 Audio: mp3、dts、eac3 等,说明音轨是存在的,只是目标播放器可能无法正常处理。

12.3 只转换音频,不重新编码视频

如果画面本身已经能正常播放,可以直接复制视频轨,只把音频转换为兼容性更高的 AAC:

ffmpeg -i "input.mp4" -c:v copy -c:a aac -b:a 192k "output_fixed.mp4"
参数 作用
-c:v copy 视频原样复制,不重新编码,因此不会因为本次处理再次损失画质
-c:a aac 把原音频转换为兼容性更好的 AAC
-b:a 192k 设置 AAC 音频码率为 192 kb/s

硬件占用:这种“只修音频”的方式主要占用 CPU。因为视频使用 -c:v copy 直接复制,所以不会调用 NVENC,GPU 通常也不会有明显负载。

12.4 多个文件怎么批量修复?

少量文件可以逐个运行命令;如果不写脚本又想同时处理,只能多开 CMD,但多个任务会同时争抢 CPU 和磁盘。文件较多时,更推荐使用 BAT 自动按顺序处理。

@echo off
chcp 65001 >nul
setlocal

set "ffmpeg=D:\ffmpeg\bin\ffmpeg.exe"
set "input=D:\视频修复\input"
set "output=D:\视频修复\output"

if not exist "%output%" mkdir "%output%"

for %%A in ("%input%\*.mp4") do (
    "%ffmpeg%" ^
    -i "%%~fA" ^
    -c:v copy ^
    -c:a aac ^
    -b:a 192k ^
    -n ^
    "%output%\%%~nA_fixed.mp4"
)

pause

说明:这个脚本只修复音频兼容性,不重新编码视频,因此通常会比完整的 H.264 转码快很多。脚本默认处理 input 文件夹中的 MP4。

12.5 快速判断该用哪种方式

遇到的问题 推荐方式 主要硬件
视频需要转成 H.264 NVENC 转码 GPU / NVENC
4K、HEVC/AV1,CPU 解码压力高 GPU 硬解 + NVENC GPU / NVDEC + NVENC
画面正常,但目标播放器没有声音 视频 copy + 音频转 AAC 主要是 CPU
同类文件很多 使用 BAT 自动批量处理 取决于脚本中的 FFmpeg 参数

13. 其他常用功能:媒体库整理实用操作

前面的章节已经覆盖视频转码、GPU 硬解、分辨率调整和音频修复。下面补充一些在整理下载视频、NAS 影视库和兼容性问题时非常常用的功能。

13.1 只换容器,不重新压缩:转封装

如果视频和音频编码本身都能被目标设备支持,只是 MKV、MP4 等容器兼容性有问题,可以尝试直接转封装。整个过程不重新编码,通常非常快。

ffmpeg -i "input.mkv" -map 0 -c copy "output.mp4"

注意:不是所有 MKV 内的音频、字幕都能直接放进 MP4。若 FFmpeg 报“codec not supported in container”等错误,需要单独转换不兼容的音频/字幕,或者继续使用 MKV。

13.2 让 MP4 更适合网页 / NAS 边下边播

MP4 可以加入 faststart 标记,把播放所需的索引信息移动到文件前部。对于网页播放、NAS 远程播放和未完全缓存的视频,通常更友好。

ffmpeg -i "input.mp4" -c copy -movflags +faststart "output_faststart.mp4"

特点:这通常只是重新整理 MP4 容器,不会重新压缩视频和音频,因此速度很快。

13.3 合并多个视频

如果多个视频的编码、分辨率、帧率等参数一致,可以用 concat 方式无损拼接。先创建 list.txt:

file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4' 

然后运行:

ffmpeg -f concat -safe 0 -i list.txt -c copy "merged.mp4"

前提:几个文件的编码参数差异较大时,直接拼接可能失败或音画异常,此时需要先统一编码参数再合并。

13.4 修改帧率

某些设备对异常或过高帧率兼容不好,可以在重新编码时统一为 30 fps:

ffmpeg -i "input.mp4" -vf "fps=30" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output_30fps.mp4"

注意:修改帧率会重新处理视频,不属于无损 Stream Copy。正常视频没有兼容问题时,不要为了“统一”而随意改帧率。

13.5 批量处理 MP4 / MKV / MOV 等多种格式

如果 input 文件夹里不只有 MP4,可以让 BAT 依次扫描多个常见扩展名。下面示例统一转成 H.264 + AAC,以兼容性为优先:

@echo off
chcp 65001 >nul
setlocal

set "ffmpeg=D:\ffmpeg\bin\ffmpeg.exe"
set "input=D:\视频转换\input"
set "output=D:\视频转换\output"

if not exist "%output%" mkdir "%output%"

for %%E in (mp4 mkv mov avi) do (
    for %%A in ("%input%\*.%%E") do (
        if exist "%%~fA" (
            "%ffmpeg%" ^
            -i "%%~fA" ^
            -c:v h264_nvenc ^
            -preset p4 ^
            -cq 20 ^
            -c:a aac ^
            -b:a 192k ^
            -movflags +faststart ^
            -n ^
            "%output%\%%~nA_compatible.mp4"
        )
    )
)

pause

批量与硬解:上面的批量脚本没有强制开启 GPU 硬解,适合兼容性优先。若源文件主要是 4K HEVC/AV1 且 CPU 解码占用较高,再在 -i 前加入 -hwaccel cuda -hwaccel_output_format cuda。

13.6 遇到问题时,先判断要不要“重新编码”

现象 / 需求 优先方案 是否重编码视频
视频和声音都正常,只想换 MKV/MP4 容器 -c copy 转封装
画面正常,但 Windows/飞牛OS 没声音 -c:v copy + 音频转 AAC
视频编码不兼容,需要统一 H.264 h264_nvenc
4K HEVC/AV1,CPU 解码压力高 GPU 硬解 + NVENC
只需要降低分辨率 scale / scale_cuda + NVENC
只想截一段,允许关键帧级切点 -ss / -to + -c copy
需要保留全部音轨和字幕 -map 0,优先输出 MKV 视视频命令而定

最重要的原则:能用 copy 解决的问题就不要重新编码。只有编码格式、分辨率、帧率等确实需要改变时,才使用 NVENC 重新压缩视频。

14. 常见错误排查

现象 常见原因 处理方式
‘ffmpeg’ 不是内部或外部命令 CMD 找不到 FFmpeg 进入 bin 目录,或直接写 ffmpeg.exe 完整路径
Unknown encoder ‘h264_nvenc’ FFmpeg 没有编入 NVENC 重新下载正确的 Windows build,并检查 encoders
Video Decode 动、Video Encode 不动 只硬解,没有 NVENC 编码 确认使用 -c:v h264_nvenc
Video Encode 动、Video Decode 不动 可能硬编 + 软件解码 可尝试 -hwaccel cuda
CUDA + scale 报格式错误 GPU 硬件帧不能直接进入普通软件滤镜 改用 scale_cuda,或退回普通解码 + scale
超宽视频转 1920×1080 后变形 宽高比被强行改变 使用 scale=1920:-2 或 scale_cuda=1920:-2
MP4 音频写入失败 源音频与 MP4 容器兼容性差 转 AAC 或改输出 MKV

补充排查:转封装失败时先检查目标容器是否支持原音频/字幕;使用 -map 0 后输出 MP4 失败时,可改输出 MKV;网页/NAS 播放 MP4 起播慢时可尝试 -movflags +faststart。

15. 完成检查清单

□  ffmpeg.exe 可以正常运行

□  ffmpeg -encoders 能看到 h264_nvenc

□  FFmpeg 日志出现 h264_nvenc

□  任务管理器 Video Encode 有占用

□  启用 CUDA 硬解且源格式支持时,Video Decode 有占用

□  输出视频编码为 H.264

□  音频可以正常播放

□  超宽视频没有被强行拉伸

□  输出文件能被目标设备/飞牛OS直接播放

推荐长期使用的视频转码基础参数:-c:v h264_nvenc -preset p4 -cq 28 -c:a copy。如果遇到“有画面没声音”等音频兼容问题,不要重新压缩视频,可改用 -c:v copy -c:a aac -b:a 192k。

□  遇到有画面没声音时,能通过 -c:v copy + AAC 音频转换进行兼容修复

□  需要保留多音轨/字幕时,知道使用 -map 0,并根据容器选择 copy 或转换

□  只换容器时优先使用 -c copy,避免无意义的重新编码

□  MP4 用于网页/NAS 播放时,可按需加入 -movflags +faststart

□  批量脚本只是自动化方式,不代表必须开启 GPU 硬解

附录:常用命令速查

1.只转成 H.264,保持原分辨率:

ffmpeg -i "input.mp4" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output.mp4"

2.GPU 硬解 + NVENC 编码:

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i "input.mp4" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output_h264.mp4"

3.保持比例缩放到 1920 宽:

ffmpeg -i "input.mp4" -vf "scale=1920:-2" -c:v h264_nvenc -preset p4 -cq 20 -c:a copy "output_1080p.mp4"

4.画面正常但没有声音:只转换音频为 AAC:

ffmpeg -i "input.mp4" -c:v copy -c:a aac -b:a 192k "output_fixed.mp4"

5.只换容器,不重新编码(MP4属于容器):

ffmpeg -i "input.mkv" -map 0 -c copy "output.mp4"

6.保留全部音轨和字幕,输出 MKV:

ffmpeg -i "input.mkv" -map 0 -c:v h264_nvenc -preset p4 -cq 20 -c:a copy -c:s copy "output.mkv"

补充:文件大小对比(示例)

下图为本教程示例文件转码前后的大小对比:原文件约 13.1 GB,转码后约 6.39 GB。实际文件大小会随 CQ、分辨率、音频和源视频内容而变化。

图片5.png

转码前:约 13.1 GB

图片6.png

转码后:约 6.39 GB

分享:

评论

暂无评论

暂无评论

快来抢沙发吧~

APP二维码
APP二维码

扫码下载APP

客服二维码
客服二维码

扫码联系客服

客服电话:{{ floatingServicePhone }}

工作时间:{{ floatingServiceHours }}

客服电话:400-123-4567

工作时间:周一至周五 9:00-18:00

公众号二维码
公众号二维码

扫码关注微信公众号

小字
大字
配色
缩小
放大
鼠标
朗读
退出
{{ pendingQQInfo.nickname }}
QQ账号
大写锁定已开启
取消 {{ qqCompleteLoading ? '保存中...' : '完成注册' }}