use*_*811 4 ffmpeg video-conversion libav
我有一个 mkv 文件,想将其转换为 DVD 兼容的 mpg 文件,扩展名为avconv. 我怎样才能从同一个 mkv 文件中烧入一个字幕流?
avconv -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 -acodec mp2 -ac 2 -ab 128k output.mpg
ffmpeg 有一个subtitles过滤器,可以将 SRT 文件刻录到视频流中。你需要编译 ffmpeg --enable-libass。我不认为 Libav 有类似的东西,至少查看了可用的过滤器。
您首先需要提取字幕。-map 0:s:0为输出选择第一个字幕流,并-c:s:0为它选择编解码器——只是为了确保它真的是 SRT。
ffmpeg -i input.mkv -an -vn -map 0:s:0 -c:s:0 srt subtitles.srt
Run Code Online (Sandbox Code Playgroud)
然后,将它们烧掉。
ffmpeg -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 \
-c:a mp2 -ac 2 -b:a 128k -filter:v subtitles=subtitles.srt output.mpg
Run Code Online (Sandbox Code Playgroud)
笔记:
上面的命令假设流0:0和0:1输入分别是视频和音频流。如果您只想防止将字幕包含在输出文件中,那么您还可以添加-sn以完全禁用它们。
您必须更改-ab为-b:a,因为前者是 ffmpeg 不存在的选项。
如果您的输入具有基于图像的字幕,如 HDMV PG(似乎是 MakeMKV 正在创建这些字幕,而其他工具无法提取它们),您可以尝试使用叠加过滤器将它们刻录:
ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map [v] -map 0:a \
-target pal-dvd -aspect 16:9 -q:v 1 -c:a mp2 -ac 2 -b:a 128k output.mpg
Run Code Online (Sandbox Code Playgroud)
这也在FFmpeg Wiki 上进行了解释。
如果您的字幕与原始电影的尺寸不同(例如因为视频流被缩小但字幕没有),您可以尝试使用该-canvas_size选项来设置大小。
| 归档时间: |
|
| 查看次数: |
6031 次 |
| 最近记录: |