web-dev-qa-db-fra.com

La conversion de FFMPEG en mkv en mp4 perd des sous-titres

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

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

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

J'aimerais inclure des sous-titres dans le script, mais je ne parviens pas à insérer le nom correct des sous-titres dans le script (puisqu'il s'agit d'un lot de conversion multiple).

10
dpkmon

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

softsubs

Les sous-titres qui constituent un flux séparé 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 des lecteurs pour les textes temporisés dans MP4 peut être assez médiocre. Vous devrez juste l'essayer.

hardsubs

Les disques durs 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

Voir le documentation du filtre susbtitles pour plus d'informations, telles que la sélection d'un flux de sous-titres particulier s'il en existe plusieurs.

13
llogan

J'ai eu un problème similaire allant de MP4 à MKV à partir de certains fichiers MP4 que j'ai déchirés 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 remarqué le format dvd_subtitle. Après beaucoup de jeux autour de ce qui suit a 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 ça aide.

1
Von Rugen