そこで私は無料のファンが作成したスタートレックは続くブルーレイISOエピソード1~3携帯電話で視聴できるように、FHD 1920x1080 を SD 960x540 に変換しようとしています。
ffmpeg -canvas_size 960x540 \
-i /media/STC_VOL1_BR/BDMV/STREAM/00000.m2ts \
-map_metadata -1 \
-c:v libx264 -map 0:0 -strict -2 -r 24 -s 960x540 \
-c:a libmp3lame -map 0:1 -b:a 384K \
-metadata:s:s:0 language=EN -c:s dvdsub -map 0:2 \
/media/Videos/Star\ Trek\ Continues/S01E01\ Pilgrim\ Of\ Eternity.mkv
しかし、変換された mkv を数秒間視聴すると、字幕は次のようになります。
- 重なり合って読めない
- 少し大きい(問題なし)
- 画面の右下に移動
何が間違っているのでしょうか?
注1:私はこれまで字幕しか扱ったことがなく、DVD サブが画像であることも知っているので、このパラメータが役に立つかもしれないsrt
と考えましたが、違いはありませんでした。canvas_size
注2:そうですね、これは純粋なUbuntu OSの質問ではありませんが、ビデオ取得していません賞金があっても注目されない誰かがビデオ変換を行っていて、同じ状況に遭遇した場合は、ここで試してみてください。
答え1
技術的には最もきれいなこれらの字幕付きで見る場合、次のようになります。
- 字幕を抽出する
- お気に入りのOCRアプリケーションを使用してテキストに変換します
- テキストを慎重に確認して編集する
- 選択したサイズ、色、方向、形式でメディアストリームに焼き戻す
これは大規模で時間のかかる仕事であり、私は過去に個人的にしかし、おそらくやり過ぎこの場合。
のより良いオプションは、FFmpegオプション-fix_sub_duration
(前に入力ファイル) を実行すると、以下に示すように二重になっている字幕が修正され、字幕が読みやすくなります。
オプションの詳細については、-fix_sub_duration
FFmpeg-all のマニュアル ページに記載されていますが、ここではその詳細を引用します。
-fix_sub_duration
字幕の継続時間を修正します。各字幕について、同じストリーム内の次のパケットを待機し、最初のパケットの継続時間を調整して重複を回避します。これは、一部の字幕コーデック、特に DVB 字幕で必要です。元のパケットの継続時間は大まかな推定値にすぎず、終了は実際には空の字幕フレームでマークされるためです。必要なときにこのオプションを使用しないと、継続時間が誇張されたり、非単調なタイムスタンプが原因で多重化が失敗する可能性があります。
このオプションを選択すると、次の字幕パケットがデコードされるまですべてのデータの出力が遅延されることに注意してください。これにより、メモリ消費量と待ち時間が大幅に増加する可能性があります。
これは初め高度な字幕オプションの2番-canvas_size
すでに使用しているものです...