Inclure une police dans un MKV

Published: 23-08-2015

Updated: 29-08-2017

By: Maxime de Roucy

tags: ass ffmpeg mkv video

Lorsqu’on intégre des fichiers de sous-titre ASS dans un MKV il peut être intéressant d’y intégrer aussi les polices utilisées. De cette façon vous êtes sure que le rendu sera exactement le même sur n’importe quel système.

ffmpeg

Pour ajouter la police « DejaVu Sans » à mon fichier MKV j’ai utilisé la commande suivante :

ffmpeg -i in.mkv -vcodec copy -acodec copy -attach /usr/share/fonts/TTF/DejaVuSans.ttf -metadata:s:3 mimetype=application/x-truetype-font out.mkv

Le fichier in.mkv contient les éléments suivants :

Input #0, matroska,webm, from 'in.mkv':
  Metadata:
    ENCODER         : Lavf56.36.100
  Duration: 00:04:08.16, start: 0.000000, bitrate: 4463 kb/s
    Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, smpte170m/unknown/smpte170m), 720x480 [SAR 8:9 DAR 4:3], max. 9000 kb/s, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
    Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s (default)
    Stream #0:2: Subtitle: ass (default)

Avec la commande précédente j’ai copié les streams 0 (vidéo), 1 (audio) et 2 (sous-titre) et j’ai ajouté le stream 3 (s:3) contenant la police de caractère.

Le fichier out.mkv contient les éléments suivants :

Input #0, matroska,webm, from 'out.mkv':
  Metadata:
    ENCODER         : Lavf56.36.100
  Duration: 00:04:08.16, start: 0.000000, bitrate: 4487 kb/s
    Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, smpte170m/unknown/smpte170m), 720x480 [SAR 8:9 DAR 4:3], max. 9000 kb/s, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
    Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s (default)
    Stream #0:2: Subtitle: ass (default)
    Stream #0:3: Attachment: ttf
    Metadata:
      filename        : DejaVuSans.ttf
      mimetype        : application/x-truetype-font

mkvmerge

Pour faire de même avec mkvmerge :

mkvmerge --output out.mkv in.mkv in.ass --attachment-mime-type application/x-truetype-font --attach-file /usr/share/fonts/TTF/DejaVuSans.ttf