元のハードウェア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
にシームレスにマージされます。-t
concat
広告ブロックを切り取る:
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 dvbsub
Invalid encoder type 'dvbsub'
ffmpeg -coded
dvbsub
字幕を完全に保つ方法は?純粋なffmpeg
ソリューションは完璧かもしれませんが、他のツールは字幕をよりよく処理することができます。
答え1
ここからダウンロードできるソフトウェアを作成しました。
ビデオクリップmpegtsファイルを切り取って暗黙的にPSストリームに変換できるグラフィックツールです。録画しないと、すばやく実行されます。それ以外の場合は少し時間がかかりますが、非常に正確な切断が可能です。 VideoCutはDebianとArchシステムでテストされました。