I have a program which allows users to create gifs from youtube videos using yt-dlp
and ffmpeg
. Unfortunately, ffmpeg
does not support color emojis.
Here's what it looks like when you try:
ffmpeg -ss 1:57 -to 2:00 -copyts -i /tmp/ytgif_cache/video_httpswwwyoutubecomwatchvnrqxmQruto.webm -filter_complex '[0:v] fps=10, scale=640:-1, split [a][b], [a] palettegen [p], [b][p] paletteuse, drawtext=borderw=1:bordercolor=black:fontcolor=white:fontsize=30:x=(w-text_w)/2:y=(h-text_h)-10:text=🔥 flames 🔥' flames.gif
Imagemagick
Imagemagick, as compiled for my by homebrew, does no better on a static image:
convert -background lightblue -fill blue -pointsize 72 "label:Hot 🌶 stuff" png:- | imgcat
gives:
(Possibly re-compiling with pango would fix this? But my users are not likely to want to have to install custom versions of imagemagick)
Looking for suggestions
What are my other options? How can I render a text string containing emojis into an image suitable for a video caption in a reasonably cross-platform manner?