CGJU
ツール検索サイト
2026年6月5日 · 読了時間 6 分

TSフォーマットとは

TS(Transport Stream)はストリーミングコンテナフォーマットの一種で、元々MPEG-2規格で定義され、デジタルテレビ放送やHLSストリーミングなどのシーンで広く使用されています。TSフォーマットの特徴は、動画、音声、字幕などのデータを固定サイズのパケット(通常188バイト)に分割し、各パケットにタイムスタンプと誤り訂正情報を付加している点です。そのため、伝送中に一部のデータが失われても再生を継続できます。

HLS(HTTP Live Streaming)では、動画全体が複数のTSセグメントファイルに分割され、通常各セグメントの長さは2-10秒です。HLS動画のすべてのTSセグメントをダウンロードした後、再生や保存のために1つの完全な動画ファイルに結合する必要があります。

TSフォーマットの主な特徴

  • 耐障害性が高い:パケットが独立しており、一部の損失が全体の再生に影響しない
  • ストリーミングに適している:ダウンロードしながら再生でき、ライブ配信に対応
  • マルチトラック対応:複数の動画、音声、字幕トラックを同時に含められる
  • 固定パケット長:各パケットが188バイトで、同期と伝送が容易

方法1:Concat Demuxer(推奨)

Concat DemuxerはFFmpegが提供するファイル結合方式の一つで、テキストファイルに記載されたファイルリストを読み取って順に結合します。この方法の長所は再エンコードが不要で速度が非常に速く、ほぼすべてのコンテナフォーマットに対応していることです。

操作手順

まずテキストファイル(例:filelist.txt)を作成し、内容は以下のフォーマットにします:

file 'segment1.ts'
file 'segment2.ts'
file 'segment3.ts'
file 'segment4.ts'

次に以下のFFmpegコマンドを実行します:

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

パラメータの説明

  • -f concat:concat demuxerの使用を指定
  • -safe 0:絶対パスの使用を許可(デフォルトは相対パスのみ)
  • -i filelist.txt:ファイルリストを指定
  • -c copy:ストリームを直接コピーし、再エンコードしない

方法2:Concat Protocol

Concat Protocolは別のシンプルな結合方法で、入力ファイルでconcatプロトコルを使用して複数のファイルを直接結合します。この方法は特定のコンテナフォーマット(MPEG-TS、MPEG-PSなど)にのみ適用されますが、TSファイルには非常に適しています。

コマンド例

ffmpeg -i "concat:segment1.ts|segment2.ts|segment3.ts" -c copy output.mp4

TSファイルの数が多い場合は、ワイルドカード方式を使用できます(シェルのサポートが必要):

ffmpeg -i "concat:$(ls *.ts | sort -V | tr '\n' '|' | sed 's/|$//')" -c copy output.mp4

注意事項

  • MPEGシリーズフォーマット(TS、PSなど)のみ対応し、MP4、MKVなどのフォーマットには非対応
  • ファイルの順序が正しくないと、再生に異常が生じる可能性がある
  • ファイル名に特殊文字を含めることはできない

方法3:Concat Filter

Concat FilterはFFmpegのフィルタ機能の一つで、フィルタレベルで複数の動画ストリームを結合できます。この方法の特徴は再エンコードが行われるため速度は遅くなりますが、互換性が最も高く、異なるエンコードパラメータのファイルも処理できる点です。

コマンド例

ffmpeg -i segment1.ts -i segment2.ts -i segment3.ts \
    -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
    -map "[outv]" -map "[outa]" output.mp4

パラメータの説明

  • concat=n=3:結合するファイル数を3に指定
  • v=1:出力する動画ストリーム数を1に指定
  • a=1:出力する音声ストリーム数を1に指定
  • [outv][outa]:出力ストリームのラベル名

方法4:中間ファイル法

中間ファイル法は比較的伝統的な方法で、すべてのTSファイルをまず1つの大きなTSファイルに結合してから、MP4やその他のフォーマットに再パッケージ化します。この方法はWindowsではcopyコマンドを直接使用でき、非常にシンプルです。

Windowsコマンドライン方式

copy /b segment1.ts + segment2.ts + segment3.ts combined.ts
ffmpeg -i combined.ts -c copy output.mp4

Linux/Mac方式

cat segment1.ts segment2.ts segment3.ts > combined.ts
ffmpeg -i combined.ts -c copy output.mp4

4つの方法の比較

方法 速度 再エンコード 適用フォーマット 推奨度
Concat Demuxer 非常に速い なし ほぼすべてのフォーマット ★★★★★
Concat Protocol 非常に速い なし MPEGシリーズ ★★★★
Concat Filter 遅い あり すべてのフォーマット ★★★
中間ファイル法 速い なし TSなどのストリーミングフォーマット ★★★

適用シーンの推奨

Concat Demuxerの使用を推奨するシーン

  • すべてのTSファイルのエンコードパラメータが一致している
  • 高速で結合したい、再エンコードの時間を待ちたくない
  • ファイル数が多く、バッチ処理が必要
  • MP4、MKVなどの他のフォーマットで出力したい

Concat Filterの使用が必要なシーン

  • 各TSファイルのエンコードパラメータが一致していない
  • 他のフィルタ処理も同時に行う必要がある
  • 出力品質に特別な要件がある
  • 結合後に音声と動画の同期ずれの問題が発生する

よくある問題と解決方法

1. 結合後に音声と動画が同期していない

これは通常、TSセグメントのタイムスタンプが不連続であることが原因です。Concat Filter方法を試すか、-fflags +genptsパラメータを追加してタイムスタンプを再生成してみてください:

ffmpeg -f concat -safe 0 -i filelist.txt -fflags +genpts -c copy output.mp4

2. 一部のセグメントが再生できない

セグメントファイルが破損している可能性があります。まずffprobeで各ファイルの完全性を確認するか、Concat Filter方法で再エンコードしてみてください。

3. ファイル名のソートの問題

TSセグメントは通常1.ts、2.ts、...、10.tsと命名されますが、文字列で直接ソートすると10.tsが2.tsの前に来てしまいます。自然ソート(Linuxのsort -Vなど)を使用するか、ゼロ埋め命名(01.ts、02.ts...)にすることを推奨します。

まとめ

TSファイルの結合はHLS動画を処理する際の一般的なニーズであり、FFmpegは異なるシーンのニーズを満たすために複数の方法を提供しています。ほとんどの場合、Concat Demuxerが最適な選択肢です。速度が速く、互換性が良く、使用も簡単だからです。エンコードパラメータの不一致などの問題が発生した場合は、Concat Filter方法の使用を検討してください。

コマンドを手動で実行したくない場合は、当社の TSファイル一括結合ツール を直接使用できます。TSセグメントをアップロードするだけでワンクリックでMP4ファイルに結合でき、便利でスピーディーです。

関連記事

その他の役立つ記事とツール

TSファイルを結合したいですか?

当社の無料TS結合ツールで、セグメントをアップロードするだけでワンクリックでMP4に結合。ソフトウェアのダウンロード・インストールは不要です

今すぐ体験 ➡