CGJU
CGJU
5 juin 2026 · Temps de lecture 6 min
Qu'est-ce que le format TS
TS (Transport Stream) est un format de conteneur de streaming, initialement défini par la norme MPEG-2, largement utilisé dans la diffusion de télévision numérique, le streaming HLS et d'autres scénarios. La caractéristique du format TS est de diviser les données vidéo, audio, sous-titres, etc. en paquets de données de taille fixe (généralement 188 octets), chaque paquet étant horodaté et contenant des informations de correction d'erreur. Ainsi, même si une partie des données est perdue pendant la transmission, la lecture peut continuer.
Dans HLS (HTTP Live Streaming), la vidéo entière est découpée en plusieurs fichiers de segments TS, chacun durant généralement 2 à 10 secondes. Lorsque nous avons téléchargé tous les segments TS d'une vidéo HLS, nous devons les fusionner en un fichier vidéo complet pour la lecture et la sauvegarde.
Caractéristiques principales du format TS
- Tolérance aux pannes élevée : les paquets de données sont indépendants, une perte partielle n'affecte pas la lecture globale
- Adapté au streaming : peut être lu pendant le téléchargement, prend en charge la diffusion en direct
- Prise en charge multi-pistes : peut contenir simultanément plusieurs pistes vidéo, audio et de sous-titres
- Longueur de paquet fixe : chaque paquet de données fait 188 octets, facilitant la synchronisation et la transmission
Méthode 1 : Concat Demuxer (recommandée)
Concat Demuxer est une méthode de fusion de fichiers fournie par FFmpeg. Elle lit une liste de fichiers répertoriés dans un fichier texte et les concatène successivement. L'avantage de cette méthode est qu'elle ne nécessite pas de réencodage, elle est très rapide et prend en charge presque tous les formats de conteneur.
Étapes de fonctionnement
Tout d'abord, créez un fichier texte (par exemple filelist.txt) avec le format de contenu suivant :
file 'segment1.ts'
file 'segment2.ts'
file 'segment3.ts'
file 'segment4.ts'
Exécutez ensuite la commande FFmpeg suivante :
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
Description des paramètres
-f concat : spécifie l'utilisation de concat demuxer
-safe 0 : autorise l'utilisation de chemins absolus (par défaut, seuls les chemins relatifs sont autorisés)
-i filelist.txt : spécifie la liste des fichiers
-c copy : copie directement le flux sans réencodage
Méthode 2 : Concat Protocol
Concat Protocol est une autre méthode de fusion simple. Elle utilise directement le protocole concat dans le fichier d'entrée pour connecter plusieurs fichiers. Cette méthode ne s'applique qu'à certains formats de conteneur spécifiques (comme MPEG-TS, MPEG-PS, etc.), mais elle est très adaptée aux fichiers TS.
Exemple de commande
ffmpeg -i "concat:segment1.ts|segment2.ts|segment3.ts" -c copy output.mp4
Si le nombre de fichiers TS est important, vous pouvez utiliser la méthode des caractères génériques (nécessite la prise en charge du shell) :
ffmpeg -i "concat:$(ls *.ts | sort -V | tr '\n' '|' | sed 's/|$//')" -c copy output.mp4
Remarques
- Ne prend en charge que les formats de la série MPEG (TS, PS, etc.), pas les formats MP4, MKV, etc.
- L'ordre des fichiers doit être correct, sinon la lecture sera anormale
- Les noms de fichiers ne doivent pas contenir de caractères spéciaux
Méthode 3 : Concat Filter
Concat Filter est l'une des fonctionnalités de filtre de FFmpeg. Il peut connecter plusieurs flux vidéo au niveau du filtre. La caractéristique de cette méthode est qu'elle effectue un réencodage, donc elle est plus lente, mais elle offre la meilleure compatibilité et peut traiter des fichiers avec des paramètres de codage différents.
Exemple de commande
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
Description des paramètres
concat=n=3 : spécifie que le nombre de fichiers à fusionner est de 3
v=1 : sortie de 1 flux vidéo
a=1 : sortie de 1 flux audio
[outv][outa] : noms d'étiquette des flux de sortie
Méthode 4 : Méthode du fichier intermédiaire
La méthode du fichier intermédiaire est une approche plus traditionnelle : d'abord fusionner tous les fichiers TS en un seul grand fichier TS, puis le ré-encapsuler en MP4 ou dans un autre format. Cette méthode peut utiliser directement la commande copy sous Windows, ce qui est très simple.
Méthode ligne de commande Windows
copy /b segment1.ts + segment2.ts + segment3.ts combined.ts
ffmpeg -i combined.ts -c copy output.mp4
Méthode Linux/Mac
cat segment1.ts segment2.ts segment3.ts > combined.ts
ffmpeg -i combined.ts -c copy output.mp4
Comparaison des quatre méthodes
| Méthode |
Vitesse |
Réencodage |
Formats applicables |
Note de recommandation |
| Concat Demuxer |
Extrêmement rapide |
Non |
Presque tous les formats |
★★★★★ |
| Concat Protocol |
Extrêmement rapide |
Non |
Série MPEG |
★★★★ |
| Concat Filter |
Lente |
Oui |
Tous les formats |
★★★ |
| Méthode fichier intermédiaire |
Rapide |
Non |
Formats de streaming comme TS |
★★★ |
Conseils sur les cas d'application
Scénarios recommandés pour Concat Demuxer
- Tous les fichiers TS ont des paramètres de codage identiques
- Besoin d'une fusion rapide sans attendre de réencodage
- Nombre important de fichiers, nécessitant un traitement par lots
- Souhait de sortir dans d'autres formats comme MP4, MKV
Scénarios nécessitant Concat Filter
- Les paramètres de codage des fichiers TS sont différents
- Besoin d'effectuer d'autres traitements de filtre simultanément
- Exigences particulières sur la qualité de sortie
- Problème de désynchronisation audio/vidéo après la fusion
Problèmes courants et solutions
1. Désynchronisation audio/vidéo après la fusion
Cela est généralement dû à des horodatages discontinus dans les segments TS. Vous pouvez essayer d'utiliser la méthode Concat Filter, ou ajouter le paramètre -fflags +genpts pour régénérer les horodatages :
ffmpeg -f concat -safe 0 -i filelist.txt -fflags +genpts -c copy output.mp4
2. Certains segments ne peuvent pas être lus
Il est possible que les fichiers de segments soient corrompus. Vous pouvez d'abord vérifier l'intégrité de chaque fichier avec ffprobe, ou essayer d'utiliser la méthode Concat Filter pour effectuer un réencodage.
3. Problème de tri des noms de fichiers
Les segments TS sont généralement nommés 1.ts, 2.ts, ..., 10.ts. Un tri alphabétique direct placerait 10.ts avant 2.ts. Il est recommandé d'utiliser un tri naturel (comme sort -V sous Linux) ou des noms avec zéros non significatifs (01.ts, 02.ts...).
Conclusion
La fusion de fichiers TS est une demande courante lors du traitement de vidéos HLS. FFmpeg propose plusieurs méthodes pour répondre aux besoins de différents scénarios. Dans la plupart des cas, Concat Demuxer est le meilleur choix : il est rapide, offre une bonne compatibilité et est simple à utiliser. Si vous rencontrez des problèmes tels que des paramètres de codage différents, envisagez d'utiliser la méthode Concat Filter.
Si vous ne voulez pas exécuter de commandes manuellement, vous pouvez utiliser directement notre outil de fusion par lots de fichiers TS. Téléchargez les segments TS et fusionnez-les en un seul fichier MP4 en un clic, pratique et rapide.