web-dev-qa-db-ja.com

ビデオストリームにインターレースされた.mkvファイルからクローズドキャプション(CC)を抽出する

ビデオ出力:

ffmpeg -i output.mkv

'output.mkv'から入力#0、matroska、webm:

メタデータ:

エンコーダー:libebml v1.3.6 + libmatroska v1.4.9

creation_time:2018-08-31T06:43:45.000000Z

継続時間:00:42:51.03、開始:0.000000、ビットレート:1928 kb/s

ストリーム#0:0:ビデオ:h264(メイン)、yuv420p(プログレッシブ)、960x540 [SAR 1:1 DAR 16:9]、クローズドキャプション、23.98 fps、23.98 tbr、1k tbn、47.95 tbc(デフォルト)

これを使用する:

"ffmpeg" -f lavfi -i "movie = output.mkv [out0 + subcc]" -map s "output_map-s.srt"

(CC)を抽出できますが、タイムコードとタグが奇数です。

1 00:00:00,019-> 00:00:00,051 {\ an7}対話

2 00:00:00,052-> 00:00:00,134 {\ an7}対話

3 00:00:00,135-> 00:00:00,161 {\ an7}対話

4 00:00:00,163-> 00:00:00,178 {\ an7}対話

5 00:00:00,179-> 00:00:00,194 {\ an7}対話

6 00:00:00,220-> 00:00:00,246 {\ an7}対話

7 00:00:00,272-> 00:00:00,296 {\ an7}-ダイアログ

同期(CC)を抽出するための正しい文は何でしょうか。

ありがとう。

2
sard

これは私のために働きました、Nは0で始まる字幕インデックスです:

ffmpeg -hide_banner -i myfile.mkv -map 0:s:N subtiles_N.srt
1
Cesar Moore

同じ問題がありました。最も簡単な解決策は、Handbrakeを使用してMP4に変換し、CCを字幕として追加するように指示することでした。

いくつかのツールには、MP4からテキストSRTファイルに字幕を抽出する簡単な方法があります。

長い道のりですが、私のメディアプレーヤーのポイントブランクは、埋め込まれた字幕の再生を拒否し、見たいファイルと同じ名前のsrtのみを必要とします。

0
user1028939