ffmpegのdrawtextを使用してASCII以外の文字をレンダリングすることはできません

ffmpegのdrawtextを使用してASCII以外の文字をレンダリングすることはできません

drawtextフィルタを使用するときは、ffmpegASCII文字のみを使用できます。

このコマンドは、期待どおりに動作する(あまり華麗ではありません)、5秒のテストビデオを生成します。

ffmpeg -f lavfi -i testsrc -to 5 -vf "drawtext=text='AT 05 ーポン 攢ð':fontcolor=white" test.mpg

しかし、出力はASCII以外の文字をレンダリングしません。

FFMPEG

注:左から右へ:

AT - 二重スペース文字

05 - 単純な数字

ーポン - CJK文字

æ”ð - 私のロケールでAltGr + a、b、c、d(en_GB.UTF-8)

最初はフォントに問題があると思いましたが、複数のフォントを確認してみると、すべて関連するグリフがありました。実際、私のシステム全体では、これらの文字にまったく問題はありません。それからこれは間違いないと思いましたが、ffmpeg次のことを試しました。

convert -background black -size 800x480 -fill "#ff0080" -family "Ubuntu Mono" -pointsize 72 -gravity center label:'AT 05 ーポン 攢ð' output.png

結果:

変化

だから私は私の環境に何か問題があると仮定し始めました。 Ubuntu TrustyとUbuntu Xenialを試しましたが、結果は同じです。

$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

$ ffmpeg
ffmpeg version 3.2.4-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.1 (Debian 5.4.1-5) 20170205
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-5 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100

$ convert -version
Version: ImageMagick 6.7.7-10 2017-05-26 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP

私のロケールが正しいようで、私が使用しているフォントがフォントを正しくレンダリングしている場合、他の場所を見ることはできませんが、渡されたテキストまたは表示されたffmpegテキストはconvert役に立ちません。

私はいつも何時間もインターネット検索をしましたが、何の役にも立ちませんでした。私より先にこの問題を見た人が誰もいないという事実に驚いた。

誰でも光を照らすことができますか?

答え1

有効な文字は、シングルバイトコードであるASCII(コード32-126)またはISO-8859-1(コード160-255)です。あなたに適していないのはUTF-8です。初期バイトASCII(またはLatin-1)アプリケーションはそれを印刷可能として扱うことができます。ただし、追加バイトはC1制御範囲(128-159)に属し、このタイプのアプリケーションでは削除されます。その後、これらの初期バイトを再エコーしようとすると、UTF-8を期待する端末はこれらの(不完全な)シーケンスを破棄して、最初の図に示す空のボックスを提供できます。

関連情報