发布于 2026-01-06 0 阅读
0

轻松为视频添加字幕

轻松为视频添加字幕

出于无障碍访问的考虑,您创建的所有视频内容都应该添加字幕,但添加字幕可能是一项艰巨的任务。本文将介绍如何在不使用任何视频编辑软件的情况下,快速轻松地为现有视频添加字幕。

要求

输入

视频格式:此方法仅适用于MP4视频。同时支持H.264H.265 / HEVC编码。

字幕文件:支持 SRT 或 WebVTT 格式。没有字幕文件?请参阅以下说明

FFmpeg

这些说明依赖于开源的FFmpeg工具。

FFmpeg 是领先的多媒体框架,能够解码、编码、转码、复用、解复用、流式传输、过滤和播放几乎所有人类和机器创造的内容。

请按照此处的安装说明进行操作。
在 Mac 上,只需使用Homebrew即可。brew install ffmpeg

自动创建字幕文件(可选)

如果你的视频没有字幕文件,你可以使用以下两种方法之一轻松地为视频自动添加字幕。

  1. 将您的视频上传到 YouTube。YouTube 可以自动为您的视频添加字幕。字幕可以下载为 SRT 文件格式。
  2. 如果您的公司拥有Microsoft Stream,请上传您的视频以享受自动字幕功能。字幕生成后,您可以通过网页界面轻松编辑,然后再以 WebVTT 格式下载字幕。

使字幕可选择

在任何支持字幕的视频播放器中,都可以打开或关闭这些字幕。

可选

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $INFILE -i $SUBTITLES -c copy -c:s mov_text \
  -metadata:s:s:0 language=eng outfile_selectable.mp4

多语言

你甚至可以在同一个视频中添加多种不同语言的字幕。

选择多个

# Replace with your input video and subtitle files
INFILE=video.mp4
SUBTITLESENG=english.vtt
SUBTITLEGER=german.vtt
SUBTITLESSPA=spanish.vtt

ffmpeg -i $INFILE -i $SUBTITLESENG -i $SUBTITLESGER -i $SUBTITLESSPA \
  -map 0 -map 1:s -map 2:s -map 3:s -c copy -c:s mov_text -c:s mov_text c:s mov_text \
  -metadata:s:s:0 language=eng -metadata:s:s:1 language=ger \
  -metadata:s:s:2 language=spa outfile_selectable_multi.mp4

字幕已嵌入

这些字幕是视频本身的一部分,无法关闭。

烧伤

我们需要重新渲染视频,并将字幕永久添加到视频流中。请注意,这需要一些时间,具体时间取决于视频时长、质量以及您的 CPU 和 GPU 的性能。

权衡:虽然使用 GPU 的硬件加速编码通常速度快得多,但软件编码(仅 CPU)可以生成更小的文件和更好的质量。

权衡: H.264 兼容性最强。您的硬件很可能支持编码和解码。H.265/HEVC 文件的效率提高了 25-50%,但解码所需的计算资源也更多。只有较新的 GPU 才支持这种格式的编码。尽管如此,H.265/HEVC 代表着未来的发展方向。

在 macOS 上使用硬件编码输出 H.264 格式

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $SUBTITLES temp.ass && \
BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate \
  -of default=noprint_wrappers=1:nokey=1 $INFILE) && \
ffmpeg -i $INFILE -vf ass=temp.ass -vcodec h264_videotoolbox \
  -b:v $BITRATE -c:a copy output_burnedin.mp4

在 Windows/Linux 系统上使用 NVIDIA GPU 进行 H.264 硬件编码

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $SUBTITLES temp.ass && \
BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate \
  -of default=noprint_wrappers=1:nokey=1 $INFILE) && \
ffmpeg -i $INFILE -vf ass=temp.ass -vcodec h264_nvenc \
  -b:v $BITRATE -c:a copy output_burnedin.mp4

适用于任何操作系统上的 H.264 软件编码

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $SUBTITLES temp.ass && \
BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate \
  -of default=noprint_wrappers=1:nokey=1 $INFILE) && \
ffmpeg -i $INFILE -vf ass=temp.ass -vcodec libx264 \
  -b:v $BITRATE -c:a copy output_burnedin.mp4

在 macOS 上使用硬件编码进行 H.265/HEVC 编码

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $SUBTITLES temp.ass && \
BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate \
  -of default=noprint_wrappers=1:nokey=1 $INFILE) && \
ffmpeg -i $INFILE -vcodec hevc_videotoolbox -tag:v hvc1 \
  -b:v $BITRATE -c:a copy -vf ass=temp.ass output_burnedin.mp4

在 Windows/Linux 系统上使用 NVIDIA GPU 进行 H.265/HEVC 硬件编码

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $SUBTITLES temp.ass && \
BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate \
  -of default=noprint_wrappers=1:nokey=1 $INFILE) && \
ffmpeg -i $INFILE -vcodec hevc_nvenc -tag:v hvc1 \
  -b:v $BITRATE -c:a copy -vf ass=temp.ass output_burnedin.mp4

适用于任何操作系统上的 H.265/HEVC 软件编码

# Replace with your input video and subtitle file
INFILE=video.mp4
SUBTITLES=subtitles.vtt

ffmpeg -i $SUBTITLES temp.ass && \
BITRATE=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate \
  -of default=noprint_wrappers=1:nokey=1 $INFILE) && \
ffmpeg -i $INFILE -vcodec libx265 -tag:v hvc1 \
  -b:v $BITRATE -c:a copy -vf ass=temp.ass output_burnedin.mp4

注意:如果源视频是 H.264 格式,您也可以使用 H.265 命令生成 H.265/HEVC 格式的最终​​视频。由于 H.265 的效率比 H.264 高 25-50%,因此您应该能够在保持相同视频质量的前提下降低比特率。

文章来源:https://dev.to/azure/adding-subtitles-to-your-videos-the-easy-way-11m2