J'essaie d'ajouter des sous-titres de texte à un conteneur .mp4 en utilisant ffmpeg:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4
Lorsque j'essaie d'exécuter cette ligne, cela me donne une erreur:
Le nombre de mappages de flux doit correspondre au nombre de flux de sortie.
Si j'essaie de changer le mp4 en mkv (bien que mp4 prenne en charge les sous-titres de texte), comme ceci:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv
Il mappe correctement les flux, mais donne une erreur:
Encodeur (codec id 94210) introuvable pour le flux de sortie # 0.2
Quand je lance
ffmpeg -codecs
Je peux voir que le codec srt est pris en charge en tant que décodeur et encodeur, mais je ne suis pas sûr de ce qui est utilisé pour l'encodage mp4 et mkv subs, et si je dois l'activer ou le compiler séparément.
-c:s copy
pas avec-c:s mov_text
.REMARQUE: Cette solution "brûle les sous-titres" dans la vidéo, de sorte que chaque spectateur de la vidéo sera obligé de les voir.
Utilisez la
libass
bibliothèque (assurez-vous que votre installation ffmpeg a la bibliothèque dans la configuration--enable-libass
).Commencez par convertir les sous-titres au
.ass
format:Ajoutez-les ensuite à l'aide d'un filtre vidéo:
la source
libass
extensions si manquantes sur les systèmes Debian avec `apt update && apt install libass-dev".Vous essayez de multiplexer les sous-titres en tant que flux de sous-titres. C'est facile mais une syntaxe différente est utilisée pour MP4 (ou M4V) et MKV. Dans les deux cas, vous devez spécifier le codec vidéo et audio, ou simplement copier le flux si vous souhaitez simplement ajouter des sous-titres.
MP4:
MKV:
la source
Le conteneur MKV prend en charge les codecs vidéo et audio Pratiquement tout et prend également en charge les sous-titres et les menus DVD. Vous pouvez donc simplement copier les codecs de la vidéo d'entrée vers la vidéo de sortie avec le conteneur MKV avec sous-titres. Vous devez d'abord convertir SRT au format de sous-titres ASS
et intégrez les sous-titres ASS à la vidéo
Également travaillé avec le fichier VMW.
voir la page wiki Comparaison des formats de conteneurs
la source
ffmpeg prend en charge le
mov_text
encodeur de sous titres qui est à peu près le seul pris en charge dans un conteneur MP4 et jouable par iTunes, Quicktime, iOS, etc.Votre ligne se lirait:
ffmpeg -i input.mp4 -i input.srt -map 0:0 -map 0:1 -map 1:0 -c:s mov_text output.mp4
la source
J'ai essayé d'utiliser MP4Box pour cette tâche, mais il ne pouvait pas gérer le M4V avec lequel je travaillais. J'ai réussi à intégrer le SRT en tant que sous-titres logiciels avec ffmpeg avec la ligne de commande suivante:
ffmpeg -i input.m4v -i input.srt -vcodec copy -acodec copy -scodec copy -map 0:0 -map 0:1 -map 1:0 -y output.mkv
Comme vous, j'ai dû utiliser un fichier de sortie MKV - je n'ai pas pu créer un fichier M4V.
la source
Je vais fournir une réponse simple et générale qui fonctionne avec n'importe quel nombre d'audios et de sous - titres srt et respecte les métadonnées qui peuvent inclure le conteneur mkv . Ainsi, il ajoutera même les images que la matroska peut inclure en tant que pièces jointes (mais pas d'autres types AFAIK) et les convertira en pistes; vous ne pourrez pas regarder mais ils seront là (vous pouvez les démultiplexer). Ah, et si le mkv a des chapitres, le mp4 aussi.
Comme vous pouvez le voir, tout tourne autour du
-map 0
, qui dit à FFmpeg d'ajouter toutes les pistes, ce qui inclut les métadonnées, les chapitres, les pièces jointes, etc. S'il y a une "piste" non reconnue ( mkv permet de joindre n'importe quel type de fichier), il se termine par une erreur.Vous pouvez créer un lot simple
mkv2mp4.bat
, si vous le faites habituellement, pour créer un mp4 avec le même nom que le mkv . Ce serait mieux avec le contrôle des erreurs, un nom de sortie différent, etc., mais vous obtenez le point.Maintenant, vous pouvez simplement courir
Et il créera "Vidéo avec sous-titres etc.mp4" avec le maximum d'informations incluses.
la source
Exemple simple:
Remplacez uniquement les variables Linux
la source
C'est la raison pour laquelle mkv est un si bon conteneur, surtout maintenant qu'il est mature:
la source