/ / ffmpegを使用してビデオ字幕コーデックを変更できません-ビデオ、ffmpeg

ffmpegを使用してビデオ字幕コーデックを変更することはできません - ビデオ、ffmpeg

somesストリームが埋め込まれたmkvファイルがあります。

Stream #0:0: Video: h264 (High), yuv420p(tv, smpte170m/smpte170m/bt709), 720x300, SAR 1:1 DAR 12:5, 25 fps, 25 tbr, 48003.07 tbn, 50 tbc (default)
Stream #0:1(tr): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default)
Stream #0:2(fr): Subtitle: dvd_subtitle, 720x300

PCで再生すると、字幕が表示されます。古いDVD / DIVXプレーヤーから再生すると、字幕が表示されません(他のmkv / aviは正常に機能します)。

そこで、字幕エンコーディングを変更して、別のDVDプレーヤーで動作するかどうかを確認したいと思いました。

ffmpeg -encodersレポート:

 S..... ssa                  ASS (Advanced SubStation Alpha) subtitle (codec ass)
S..... ass                  ASS (Advanced SubStation Alpha) subtitle
S..... dvbsub               DVB subtitles (codec dvb_subtitle)
S..... dvdsub               DVD subtitles (codec dvd_subtitle)
S..... mov_text             3GPP Timed Text subtitle
S..... srt                  SubRip subtitle (codec subrip)
S..... subrip               SubRip subtitle
S..... text                 Raw text subtitle
S..... webvtt               WebVTT subtitle
S..... xsub                 DivX subtitles (XSUB)

だから私は試しました:

ffmpeg -i input.mkv -acodec copy -vcodec copy -scodec "codec" converted.mkv

「コーデック」のさまざまなバージョンで。それらのどれも動作しません(元の dvdsub...):

xsubレポート:

[matroska @ 0x24558c0] Subtitle codec 94211 is not supported.
av_interleaved_write_frame(): Function not implemented
[matroska @ 0x24558c0] Subtitle codec 94211 is not supported.
Error writing trailer of mustang_converted.mkv: Function not implementedframe=  244 fps=0.0 q=-1.0 Lsize=       1kB time=00:00:10.01 bitrate=   1.0kbits/s speed=1.23e+03x
video:321kB audio:235kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Conversion failed!

ssaまたはassレポート:

[ssa @ 0x262e000] Only SUBTITLE_ASS type supported.
Subtitle encoding failed

他のレポート:

Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height

何が間違っていますか?一部の字幕コーデックは、現在のビデオまたはオーディオコーデックと互換性がありませんか?コピーする代わりにそれらを変更する必要がありますか?

あるいは、ビデオ画像ストリーム内の字幕を完全にマージするオプションがあります(そして、2つの出力ストリームのみがあります:オーディオとビデオですが、字幕表示を保持します)?

注:Linux(mint)で作業している場合は、ffmpeg以外のツールを使用して回答することもできます。

回答:

回答№1は6

字幕は画像ベースであり、SRTのようなテキストベースの形式に変換する必要があります。つかいます 字幕編集 またはMKVから潜水艦をインポートする同様のツール。これにより、潜水艦のOCR処理が行われます。完了したら、SRTまたは一般的なテキストベースの字幕形式として保存します。

次に、選択したscodecでffmpegコマンドを実行します。


または、字幕を焼きたい場合は、これらの方法のいずれかを試すことができます

ffmpeg -i input.mkv -vf subtitles=input.mkv -acodec copy -sn converted.mkv

または

ffmpeg -i input.mkv -filter_complex "[0:v:0][0:2]overlay" -acodec copy -sn converted.mkv