添加-map 0

添加-map 0

我一直在使用 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

相关内容