La conversion FFMPEG mkv en mp4 perd ses sous-titres


11

J'essaie actuellement de convertir ma bibliothèque mkv en mp4 (Iphone 6 plus)

J'ai réussi à obtenir correctement la conversion mkv en mp4, mais il me manque la partie sous-titres (SRT)

Voici mon code:

dir/b/s *.mkv >mkvlist.txt   ///////// this gets a list of all the mkv files on the directory

for /F "delims=;" %%F in (mkvlist.txt) do ffmpeg.exe  -i "%%F" -format mp4 -vcodec copy -acodec aac -strict -2 -sn "%%~dF%%~pF%%~nF.mp4"   ///////////// this makes the conversion

del mkvlist.txt     ////// this deletes the txt file

Je voudrais inclure des sous-titres dans le script, mais j'ai du mal à insérer le nom correct des sous-titres dans le script (car il s'agit d'un lot de conversion multiple).


Les fichiers .mkv sont un format de conteneur. Il est très probable que le fichier mkv contienne un fichier .srt que vous pouvez extraire. Assurez-vous qu'il porte le même nom que le fichier .mp4 et qu'il devrait fonctionner. Le fichier mkv peut en fait également contenir un fichier mp4 mais peut également avoir un .divx, .avi ou tout autre format vidéo.
LPChip

Réponses:


17

MP4 ne prend pas en charge SRT. Vous pouvez utiliser des softsubs ou des hardsubs.

softsubs

Sous-titres qui constituent un flux distinct dans le fichier. Ils peuvent être activés / désactivés par le lecteur et ne nécessitent pas de ré-encodage du flux vidéo.

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4

La prise en charge par les joueurs des softsubs de texte chronométré dans MP4 peut être plutôt médiocre. Vous n'aurez qu'à l'essayer.

hardsubs

Les Hardsubs sont "gravés" dans la vidéo, la vidéo doit donc être ré-encodée.

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4

Consultez la documentation du filtre de sous-titres pour plus d'informations sur la sélection d'un flux de sous-titres en particulier s'il y en a plusieurs.


Pourriez-vous m'aider à mieux comprendre mon code? Où et pourquoi ajouteriez-vous le ré-encodage pour les sous-marins? (Et si vous pouvez penser à une solution ou à un moyen de convertir par lots tous les fichiers dans les sous-dossiers avec leurs sous-marins correspondants?) (S'il n'y a pas de sous-titres, alors il faudrait ignorer le fichier et passer au suivant.
dpkmon

2

J'ai eu un problème similaire en passant de MP4 à MKV à partir de certains fichiers mp4 que j'ai extraits avec Handbrake. J'ai d'abord consulté https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options , ce qui impliquait des formats de sous-titres particuliers pour mkv vs mp4. Après avoir joué avec des conversions ass et mov_text qui ne fonctionnaient pas, j'ai testé certains fichiers et j'ai remarqué que le format dvd_subtitle apparaissait. Après avoir beaucoup joué, les éléments suivants ont fonctionné.

ffmpeg -i "\\server\directory\Sourcefile.mp4" -c:v copy -c:a copy -c:s dvd_subtitle "\\server\directory\Outputfile.mkv"

J'espère que cela aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.