.srt字幕と.tsビデオからdvb_subtitlesの.tsビデオに移行するにはどうすればよいですか?

Nov 27 2020

.srt字幕ファイル+ .tsビデオファイル=> dvb_subtitleを持つ.tsビデオファイルから取得しようとしています。

私の.srt:

1
00:00:00,000 --> 00:00:05,000
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel hendrerit massa.

2
00:00:05,000 --> 00:00:10,000
Aliquam dolor sapien, molestie ac sagittis eu, tempus nec est.

3
00:00:10,000 --> 00:00:28,000
Morbi id sem eu sapien consectetur imperdiet. Morbi sed purus et sapien interdum placerat vitae quis orci.

私の.ts:sa​​mple_1920x1080.ts from https://filesamples.com/formats/ts

SubtitleEditコマンド:.\SubtitleEdit.exe /convert 'test_subtitles.srt' Blu-raysup /resolution:1920x1080 /overwrite。これにより、期待どおりにtest_subtitles.supファイルが作成されます。

次にffmpeg、次のように.sup字幕を含めるために使用します.\ffmpeg.exe -y -i 'sample_1920x1080.ts' -fix_sub_duration -i 'test_subtitles.sup' -map 0:v -map 1:s -vcodec copy -acodec copy -scodec dvbsub -copyts -muxdelay 0 -max_delay 0 'output.ts'。これは機能しますが、結果があまり読みにくい場合があります。これがスクリーンショットです:

ここに他のオプションはありますか?またはsubtitleedit / ffmpegからf.exへのオプション。字幕を大きくしますか?

(私はこれをSubtitleEdit Githubリポジトリにも投稿しました: https://github.com/SubtitleEdit/subtitleedit/issues/4539。)

更新:

SubtitleEditの作者から、SubtitleEditのグラフィカルユーザーインターフェイスを使用すればフォントサイズを大きくすることが実際に可能であることがわかりました(ここを参照してください。ただし、コマンドラインツールを使用してこれを実行したいと思います。

回答

Abilogos Dec 17 2020 at 22:27

残念ながら、次のようにffmpegで実行する必要がありました。

ffmpeg -i ./sample_1280x720.ts -i ./sample.srt -map 0 -map 1 -c copy -c:s dvd_subtitle ./out.ts

しかし、ffmpegはこのエラーでそれを受け入れません:

字幕のエンコードは現在、テキストからテキストまたはビットマップからビットマップにのみ可能です

.srtフォーマットはテキストベースで、.supフォーマットは画像ベースです。

ffmpeg字幕をビデオにエンコードすること拒否する限り。

-vf(ビデオフィルター)、ハードコーディング(srt)字幕をビデオに使用できます:

ffmpeg -i ./sample_1280x720.ts -vf subtitles=sample.srt:force_style='Fontsize=24' ./out.ts

Fontsizeオプションでフォントサイズを定義できます。

しかし、を持っていて、supビデオに焼き付けたい場合は、これを使用できます:

ffmpeg -i ./sample_1280x720.ts -i ./sample.sup  -filter_complex "[0:v][1:s]overlay" ./out.ts
Twenkid Dec 17 2020 at 02:16

2020年12月19日編集:

私の最後のコメントからのアイデア-SubtitleEditのSettings.xmlのフォントサイズを置き換えるPythonスクリプトで、スクリプトの前に呼び出されます。

https://github.com/Twenkid/Python-Various/blob/main/Exercise/SubtitleEdit/sub.py

python sub.py C:\SE3518\Settings.xml 44

..。

dvbトラックをスケーリングしようとしましたか?そのスレッドはそれが可能であることを示唆しています:ffmpegとdvb字幕のスケーリング

Maknolによるその部分( 私はそれを試していませんが ):

-filter_complex "[0:s:0] scale = -1:2400 [sub]、[0:v] [sub] overlay = x = 150:y = -80"

どこ:

スケール-字幕のサイズ

オーバーレイx =-垂直

オーバーレイy =-水平

編集:私はffmpegで.sup字幕をスケーリングすることができましたが、これまでのところ2つのパスで機​​能しました。以下を参照してください。

私のシーケンスは次のとおりです。

  1. あなたのコマンド、字幕付きのストリームを作成します:

ffmpeg -i sample_1920x1080.ts -fix_sub_duration -i test_subtitles.sup -map 0:v -map 1:s -vcodec copy -acodec copy -scodec dvbsub -copyts -muxdelay 0 -max_delay 0 outputA.ts

  1. 字幕を拡大縮小して位置を調整します(ただし、filter_complexのために再エンコードが必要です)

ffmpeg -i outputA.ts -metadata title = "Scale" -filter_complex "[0:s:0] scale = -1:1400 [sub]、[0:v] [sub] overlay = x = -250:y = -300 "-c:v libx264 -b:v 5M -preset fast -aspect 16:9 -c:a copy output_Scaled.ts

初期サイズ:

私の最初の字幕は大きく(フォントサイズ25)、ここでのスケーリング係数は小さい= 1400/1080

スケーリング:

..。

1回のパスで実行しようとすると、構文はデフォルトサイズをレンダリングし、スケーリングされたサイズをオーバーレイしました(すべてではなく、1つのアイテムのみを表示します)。

これが1回のパスの試みです。

#一度にそれらをオーバーレイします... ffmpeg -i sample_1920x1080.ts -fix_sub_duration -i test_subtitles.sup -scodec dvbsub -map 0:v -map 1:s -metadata title = "Scale" -filter_complex "[1:s] scale = -1:1400 [sub]、[0:v] [sub] overlay = x = -250:y = -300 "-c:v libx264 -crf 20 -preset veryfast -aspect 16:9 -c:a aac -厳密な実験的-b:a 192k outputSTACK_SUP.ts

それはそのようなものを生み出します: