
适用场景:从某些来源获取的视频在本地系统/官方播放器或飞牛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

下载后,正确的目录结构应类似:
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 可以正常运行。

4. 检查 NVENC / CUDA 是否可用
4.1 检查 NVIDIA 编码器
在 FFmpeg 的 bin 目录中运行:
ffmpeg -encoders | findstr /i nvenc
RTX 4060 Ti 正常情况下会看到类似:

关键项:本教程转换 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 转码开始后,如果出现类似于以下内容:

就可以确认:视频的编码部分正在使用 NVENC。
6.2 看 Windows 任务管理器
打开“任务管理器 → 性能 → GPU”,把图表切换为多个引擎,重点观察:
- Video Encode:硬件编码器负载
- Video Decode:硬件解码器负载
如果转码时 Video Encode 明显有占用,则 NVENC 正在工作。若同时启用兼容的硬件解码并看到 Video Decode 有占用,则 NVDEC 也在工作。
不要只看 GPU 总占用:NVENC/NVDEC 是独立视频引擎,3D 或 CUDA 总占用不高并不代表没有使用硬件视频单元。
6.3 转码完成后的正常状态示例
当 FFmpeg 正常完成转码时,命令行末尾会出现类似以下结果。结合前面的日志与任务管理器状态,就可以判断本次转码是否按预期完成。

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
-hwaccel cuda 参数,关闭GPU硬解改用CPU软解。三套脚本独立使用,请勿合并。脚本1:多格式高质量批量转码(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)
@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)
@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文件夹,优先压缩节省存储空间
|
多层级影视库,批量全局规整视频格式
|
-hwaccel cuda 和 -hwaccel_output_format cuda,只保留 NVENC 编码。@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
-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、分辨率、音频和源视频内容而变化。

转码前:约 13.1 GB

转码后:约 6.39 GB
琼ICP备2024037487号-2
琼公网安备46010002000723号
暂无评论
快来抢沙发吧~