ffmpegを使用してMPEG-TSからdvbsubを切り取る

ffmpegを使用してMPEG-TSからdvbsubを切り取る

元のハードウェアTVレコーダーで作成されたMPEG-TSファイルがたくさんあります。ffprobeその内容を次のようにリストします。

Input #0, mpegts, from 'recording.ts':
  Duration: 02:14:57.67, start: 87544.254878, bitrate: 4386 kb/s
  Program 12003 
  [...]
  Program 12060 
    Stream #0:0[0xa7]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x88](ger): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s (clean effects)
    Stream #0:2[0x48]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:3[0x47](ger): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
    Stream #0:4[0x4a](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
    Stream #0:5[0xfb]: Unknown: none ([11][0][0][0] / 0x000B)
    Stream #0:6[0xfc]: Unknown: none ([12][0][0][0] / 0x000C)
  Program 12061 
  [...]
  Program 12095 
Unsupported codec with id 0 for input stream 2
Unsupported codec with id 94215 for input stream 3
Unsupported codec with id 0 for input stream 5
Unsupported codec with id 0 for input stream 6

アーカイブのためにこれらのファイルを同時に再エンコードしたいと思います。

  • 映画の開始前、終了後に不要なランニングタイムを整えてください。:クリップを切り取ると、プロトコルは再エンコードせず-ssにシームレスにマージされます。-tconcat

  • 広告ブロックを切り取るtrimフィルターがフレーム精度でカットされます。

  • メールボックスを切り取るcrop黒いバーを削除するフィルタです。

生成されたコマンドラインは少し複雑に見えます。両方のクリップのオーディオとビデオを切り取り、PTSをリセットして連続性を維持し、組み合わせ、トリミングします。その後、これらすべてがエンコードされ、MKVコンテナにマージされます。

ffmpeg -i in.ts -filter_complex '
  [0:0]split[v1][v2];
  [0:1]asplit[a1][a2];
  [v1]trim=288.520:4957.640,setpts=PTS-STARTPTS[vo1];
  [a1]atrim=288.520:4957.640,asetpts=PTS-STARTPTS[ao1];
  [v2]trim=5155.360:6948.440,setpts=PTS-STARTPTS[vo2];
  [a2]atrim=5155.360:6948.440,asetpts=PTS-STARTPTS[ao2];
  [vo1][vo2]concat,crop=720:432:0:72[v];
  [ao1][ao2]concat=v=0:a=1[a];
' -map '[v]' -map '[a]' -c:v libx264 -c:a libvorbis out.mkv

これまでは、これらすべてが機能します。ただし、上記のように、元のファイルにはストリーム4の字幕も含まれていますdvb_subtitles。これで、フィルタリングされたグラフにマージしようとしています。

私はすでに試しました。splitストリームとそのステップについて、trimおよびステップを追加するとsetpts問題はありませんが、x264を使用して字幕をエンコードするため、追加のビデオストリームが作成されます。したがって、リストはエンコーダとデコーダの両方の役割を果たしますが、追加してインポートします。concat-map-codec:2 dvbsubInvalid encoder type 'dvbsub'ffmpeg -codeddvbsub

字幕を完全に保つ方法は?純粋なffmpegソリューションは完璧かもしれませんが、他のツールは字幕をよりよく処理することができます。

ベストアンサー1

ここからダウンロードできるソフトウェアを作成しました。

ビデオクリップmpegtsファイルを切り取って暗黙的にPSストリームに変換できるグラフィックツールです。録画しないと、すばやく実行されます。それ以外の場合は少し時間がかかりますが、非常に正確な切断が可能です。 VideoCutはDebianとArchシステムでテストされました。

おすすめ記事