我一直在使用 MakeMKV 将 DVD 翻录到硬盘上。这个程序运行正常,但生成的文件效率很低。蓝光光盘生成的视频文件通常为 35GB 或更多。我想使用 ffmpeg 重新打包这些文件,将 mkv 转换为 mkv,同时保留所有字幕。我有一张很好的显卡(nvidia RTV 2060),所以我想用硬件编码来做,因为这些都是长篇电影。
类似这样的工作:
ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i in.mkv -vcodec h264_nvenc out.mkv
但我失去了字幕。
任何建议都将不胜感激。
答案1
添加-map 0
默认流选择行为每个流类型仅选择一个流。所以不是所有的字幕都被复制了。
输出
-map
选项可禁用此行为并允许您手动选择所需的流。请参阅FFmpeg Wiki:地图了解更多信息。-map 0
选择全部流(来自输入#0,在您的情况下唯一的输入)。
示例命令:
ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i in.mkv -map 0 -codec:v h264_nvenc -codec:a copy -codec:s copy out.mkv
-codec:a copy -codec:s copy
启用流复制模式,因此它不会重新编码音频和字幕。
答案2
你真的应该结账手刹,他们甚至提供HandBrakeCLI. 这是一种非常用户友好的方式,可以将媒体转码/复用为首选格式、比特率或容器。
手刹失灵了,如果你对 MP4 容器没意见,你可以使用以下方法将字幕嵌入 mp4 容器中:
ffmpeg -i %1 -i %2 -c:s mov_text -c:v copy -c:a copy %3
保存为 addsubs.bat,您将:
addsubs source.mkv subs.srt destination.mp4