Ошибка Fontconfig: невозможно загрузить файл конфигурации по умолчанию - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь добавить текст в видео, но получаю -

Ошибка Fontconfig: невозможно загрузить файл конфигурации по умолчанию [Parsed_drawtext_0 @ 0xea1aeaa0] невозможно инициализировать fontconfig

ниже cmd для добавления текста с помощью FFmpeg lib-

String [] cmd = new String [] {"-i", сохраненныйVideoFilePath, "-vf"," drawtext = text = "+" '"+ timeStamp +"' "+": fontfile = / android_asset / fonts / Poppins-Medium.ttf: fontcolor = white: fontsize = 24: x = (w-tw) / 2: y = (h / PHI) + th box = 0: "," - кодек: a "," copy ", output_path};

подробности журнала -

Ошибка открытия фильтров!2019-06-10 18: 04: 58.027 18678-18678 / com.rs.vir.debug E / FFMPEG FAILure: СБОЙ с выводом: ffmpeg версия n3.0.1 Copyright (c) 2000-2016 разработчики FFmpeg, созданные с помощью gcc 4.8 (Конфигурация GCC: --target-os = linux --cross-prefix = / home / vagrant / SourceCode / ffmpeg-android / toolchain-android / bin / arm-linux-androideabi- --arch = arm --cpu = cortex-a8 --enable-runtime-cpudetect --sysroot = / home / vagrant / SourceCode / ffmpeg-android / toolchain-android / sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config = / home / vagrant / SourceCode / ffmpeg-android / ffmpeg-pkg-config -префикс = / home / vagrant / SourceCode / ffmpeg-android / build / armeabi-v7a --extra-cflags = '- I / home / vagrant / SourceCode / ffmpeg-android / toolchain-android / includede -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE = 2 -fno-строго-переполнение -fstack-protector-all '--extra-ldflags =' - L / home / vagrant / SourceCode / ffmpeg-android / toolchain-android / lib -Wl, -z, relro -Wl, -z, сейчас -pie '--extra-libs =' - lpng -lexpat -lm '--extra-cxxflags = libavutil 55. 17.103 / 55. 17.103 libavcodec 57. 24.102 / 57. 24.102 libavformat 5725.100 / 57. 25.100 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 31.100 / 6. 31.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Вход № 0,mov, mp4, m4a, 3gp, 3g2, mj2, из '/data/user/0/com.rs.vir.debug/files/VIR_Customer/EVINV12207201906100303240000/Videos/sample.mp4': метаданные: major_brand: mp42 minor_version: 0compatibility_brands: isommp42 creation_time: 2019-06-10 12:34:55 com.android.version: 8.1.0 Продолжительность: 00: 00: 06.66, начало: 0,000000, битрейт: 3724 кбит / с Поток № 0: 0 (англ): Видео: h264 (высокая) (avc1 / 0x31637661), yuv420p (телевидение, smpte170m / smpte170m / bt709), 720x480, 3464 кбит / с, SAR 1: 1, DAR 3: 2, 30,04 кадра в секунду,30 tbr, 90k tbn, 180k tbc (по умолчанию) Метаданные: повернуть: 90 creation_time: 2019-06-10 12:34:55 handler_name: VideoHandle Дополнительные данные: displaymatrix: поворот на -90,00 градусов Поток № 0: 1 (англ):Аудио: aac (LC) (mp4a / 0x6134706D), 48000 Гц, стерео, fltp, 255 кбит / с (по умолчанию) Метаданные: creation_time: 2019-06-10 12:34:55 handler_name: SoundHandle Ошибка Fontconfig: не удается загрузить конфигурацию по умолчаниюfile [Parsed_drawtext_0 @ 0xea1aeaa0] невозможно инициализировать fontconfig [AVFilterGraph @ 0xea1cb040] Ошибка инициализации фильтра «drawtext» с помощью аргументов«Текст = java.util.GregorianCalendar [время = 1560170097814, areFieldsSet = верно, areAllFieldsSet = верно, снисходителен = верно, зона = libcore.util.ZoneInfo [ID = "Asia / Калькутта", mRawOffset = 19800000, mEarliestRawOffset = 19800000, mUseDst= ложные, mDstSavings = 0, переходы = 5], firstDayOfWeek = 2, minimalDaysInFirstWeek = 4, ERA = 1, ГОД = 2019, МЕСЯЦ = 5, WEEK_OF_YEAR = 24, WEEK_OF_MONTH = 2, DAY_OF_MONTH = 10, day_of_year = 161, DAY_OF_WEEK =2, DAY_OF_WEEK_IN_MONTH = 2, AM_PM = 1, ЧАС = 6, HOUR_OF_DAY = 18, МИНУТА = 4, ВТОРОЙ = 57, МИЛЛИСЕКУНДА = 814, ZONE_OFFSET = 19800000, DST_OFFSET = 0]: fontfile = /inson / Poset.set.setset.set.ttf: fontcolor = white: fontsize = 24: x = (w-tw) / 2: y = (h / PHI) + th box = 0: 'Ошибка открытия фильтров!

, пожалуйста, дайте мнерешение для этого.

Ответы [ 2 ]

1 голос
/ 28 июня 2019

эта проблема со шрифтами, которые я использовал, изменил код как показано ниже -

   mFileFont = new File("/system/fonts/Roboto-Regular.ttf");
        if (!mFileFont.exists())
            mFileFont = new File("/system/fonts/DroidSerif-Regular.ttf");
   String[] cmd = new String[]{
                "-i", savedVideoFilePath, "-vf", "drawtext=text=" + "'" + todaysdate
                + "'" + ": fontfile=" + mFileFont.getAbsolutePath() + ": 
               fontcolor=white: fontsize=24: x=20: y=50: box=0:", "-codec:a", "copy", 
              "-preset", "ultrafast", "-b:a", "128k", output_path};
1 голос
/ 11 июня 2019

Скопируйте файл из каталога ресурсов во внутреннее хранилище, используя метод, описанный ниже.

private void copyAssets() {
    AssetManager assetManager = getAssets();
    String[] files = null;
try {
    files = assetManager.list("");
} catch (IOException e) {
    Log.e("tag", "Failed to get asset file list.", e);
  }
 for(String filename : files) {
    InputStream in = null;
    OutputStream out = null;
    try {
      in = assetManager.open(filename);

      String outDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/X/Y/Z/" ; 

      File outFile = new File(outDir, filename);

      out = new FileOutputStream(outFile);
      copyFile(in, out);
      in.close();
      in = null;
      out.flush();
      out.close();
        out = null;
      } catch(IOException e) {
          Log.e("tag", "Failed to copy asset file: " + filename, e);
         }       
       }
     }
     private void copyFile(InputStream in, OutputStream out) throws IOException {
        byte[] buffer = new byte[1024];
      int read;
     while((read = in.read(buffer)) != -1){
       out.write(buffer, 0, read);
     }
   }

, а затем передайте путь к файлу ttf команде ffmpeg

String[] cmd = new String[] { "-i", savedVideoFilePath, "-vf", "drawtext=text="+"'"+timeStamp+"'"+": fontfile=<YOUR_DIRECTORY_PATH>/Poppins-Medium.ttf: fontcolor=white: fontsize=24: x=(w-tw)/2: y=(h/PHI)+th box=0:","-codec:a" ,"copy" , output_path };

, которую мы можем использовать только для "file:///android_assets"Цель Android.но мы не можем использовать его для нативных проектов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...