将 MTS 转换为 MKV 时包含字幕

将 MTS 转换为 MKV 时包含字幕

我想将我的 Sony HD Cam 中的 .MTS 视频转换为 .MKV。我使用 ffmpeg,它运行良好。但我遇到了字幕问题(在这种情况下,字幕是日期和时间),因为一旦我将 MTS 转换为 mkv,字幕就会丢失。

我使用这个命令:

ffmpeg -i 00235.MTS -scodec copy -acodec copy -vcodec copy -f matroska OUTPUT.mkv

这是输出:

ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:36 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mpegts, from '00235.MTS':
  Duration: 00:00:22.07, start: 1.000011, bitrate: 26285 kb/s
  Program 1 
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
    Stream #0.2[0x1200]: Data: [144][0][0][0] / 0x0090
Output #0, matroska, to 'OUTPUT.mkv':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: H264 / 0x34363248, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 1k tbn, 50 tbc
    Stream #0.1: Audio: ac3, 48000 Hz, 5.1, 448 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
frame= 1104 fps=  0 q=-1.0 Lsize=   67284kB time=22.08 bitrate=24963.2kbits/s    
video:66061kB audio:1208kB global headers:0kB muxing overhead 0.023045%

它看起来像是Stream #0.2[0x1200]字幕,但最终它没有放入 MKV。

我希望有一个人可以帮助我。

答案1

你可以流复制使用-codec copy。这避免了指定流的解码和编码步骤,因此它只执行解复用和复用,这在您想要更改输出容器格式或操作或添加容器级元数据时很有用。执行流复制比重新编码更快,并且不会造成任何质量损失。

请注意,默认行为仅为每个输入选择一个流类型,因此包含-map 0将包含第一个输入的所有流。如果输入只有一种流类型(如上面的问题),则这-map 0是多余的,但保留它也不会有什么坏处。请参阅文档流选择-map选项了解更多信息。

例子:

$ ffmpeg -i input.MTS -codec copy -map 0 output.mkv

如果要对目录中的所有视频进行编码,请使用 bash for 循环的示例:

$ mkdir outputdir
$ for f in *.MTS; do ffmpeg -i "$f" -codec copy -map 0 outputdir/"${f%.MTS}.mkv"; done

答案2

您可以使用其他转换器应用程序来帮助您。MKV 格式非常方便您在视频中添加字幕。但由于它是一种容器格式,因此在转换过程中可能会出现一些问题。找到一些其他免费的转换器应用程序来帮助您完成工作。我个人认为这个 ffMPEG 对我来说转码我的视频有点困难。如果里面有一些字幕。最好不要使用这个 ffMPEG。如果可能的话,尝试其他应用程序。

相关内容