FFmpeg лимит текста на рисование для максимального количества открытых файлов шрифтов

419
AM25

Используя FFmpeg, я пытаюсь создать видео из изображений, на которых я аннотирую / пишу текст, используя drawtext( filter_complexиспользуется).

Если количество drawtextфильтров превышает 500, я получаю сообщение об ошибке:

Не удается найти правильный шрифт для семейства Sans

FFmpeg, очевидно, имеет ограничение на количество файлов шрифтов, которые могут быть открыты одновременно.

  1. Как drawtextработает - почему новый файл открывается для каждого фильтра, даже если все файлы шрифтов одинаковы?
  2. Есть ли способ решить эту проблему? Увеличивая лимит на файлы, которые можно открывать одновременно?
  3. drawtextВ документации есть опция fontconfig- как ее использовать? Это полезно в приведенном выше сценарии?

Complete
ffmpeg -f concat -i input.txt -i input_audio.wav -y -r 10 -filter_complex_script filterCommand.txt -crf 22 -threads 2 -preset ultrafast output_video.mp4

command- filterCommand.txt - текстовый файл содержит drawtext=enable='between(n,0,0)':fontsize=10:fontfile='C\:/‌​windows/Fonts/calibr‌​ib.ttf':fontcolor='0‌​x000000запятую - повторяется 509 раз,

509 раз работает drawtext, 510 раз не работает drawtext.

Консольные логи-
ffmpeg version N-81989-g7845c13 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 32.100 / 55. 32.100 libavcodec 57. 61.103 / 57. 61.103 libavformat 57. 52.100 / 57. 52.100 libavdevice 57. 0.102 / 57. 0.102 libavfilter 6. 64.100 / 6. 64.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 2.100 / 2. 2.100 libpostproc 54. 0.100 / 54. 0.100 Input #0, concat, from 'temp/test4/node-5303540733531691237.txt': Duration: 00:00:01.61, start: 0.000000, bitrate: 0 kb/s Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc Guessed Channel Layout for Input Stream #1.0 : mono Input #1, wav, from 'temp/32_anonymoususer1825804750300631765/part/1_subPart/audio/part_audio.wav': Duration: 00:00:09.50, bitrate: 705 kb/s Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s16, 705 kb/s Fontconfig error: Cannot load default config file [Parsed_drawtext_509 @ 000000000a4ca9a0] Cannot find a valid font for the family Sans [AVFilterGraph @ 0000000000b8cfc0] Error initializing filter 'drawtext' with args 'enable=between(n,21,21):fontsize=10:fontfile=C\:/windows/Fonts/calibrib.ttf:fontcolor=0x000000:text=100\.0:x=398:y=119-th' Error initializing complex filters. No such file or directory

1
Не слишком знакомы с внутренней работой фильтра, но не могли бы вы дать нам команду, которая выявляет проблему, и полный вывод командной строки, который вы получите в результате? (Если это слишком долго, вы также можете загрузить в PasteBin.) slhck 6 лет назад 0
Пример команды-`ffmpeg -f concat -i input.txt -i input_audio.wav -y -r 10 -vf "drawtext = enable ='ween (n, 0,0) ': fontsize = 10: fontfile =' C \ : /windows/Fonts/calibrib.ttf ': fontcolor =' 0x000000 ': text =' 120 \ .0 ': x = 480: y = 61-й "-crf 22 -threads 2 -представить сверхбыстрый output_video.mp4` - повторите команду drawtext по крайней мере 550 раз AM25 6 лет назад 0
Пожалуйста, включите все, как требуется, то есть всю команду и ее полный вывод, а не только одну ошибку. slhck 6 лет назад 0
[ffmpeg ticket 5893] (https://trac.ffmpeg.org/ticket/5983#no1) можно сослаться - там упоминается о 512 фильтрах отрисовки текста, но нет решения / средства защиты AM25 6 лет назад 0
Я вижу, собирался догадаться, что что-то подобное будет проблемой. Боюсь, все, что вы можете сделать, это подождать, пока кто-нибудь исправит ошибку. Не уверен, что это так просто, поскольку каждый фильтр загружает свои шрифты по отдельности. slhck 6 лет назад 0

0 ответов на вопрос

Похожие вопросы