web-dev-qa-db-ja.com

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には入れられません。

誰かが私を助けてくれることを願っています。

2
mci

stream copy with -codec copy。これにより、指定されたストリームのデコードとエンコードのステップが回避されるため、デマルチプレクサーとマルチプレクサーのみが実行されます。これは、出力コンテナー形式を変更したり、コンテナーレベルのメタデータを操作または追加する場合に役立ちます。ストリームコピーの実行は再エンコードよりも高速であり、品質の低下は発生しません。

デフォルトの動作では、入力ごとに1つのストリームタイプしか選択されないため、-map 0には、最初の入力のすべてのストリームが含まれます。上記の質問のように、入力に1つのストリームタイプしかない場合、-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
1
llogan