У меня есть приложение для Android, которое использует FFMPEG для добавления текстовых наложений в видеофайлы mp4.
Оно отлично работает с латинским алфавитом, но когда я пытаюсь добавить арабские символы в качестве наложением на файл .mp4, выходное видео отображает прямоугольники (предполагая наличие нераспознанных символов).
Пример команды FFMPEG:
-y -i video-in.mp4 -preset ultrafast -vf "[in]drawtext=text='نقطة البداية قلا':enable='between(t, 0,5)':fontcolor=White:fontsize=20:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2,drawtext=text='وصلات مزاحجة كبيرة الإزاحة (من ١٢ إلى ٤)':enable='between(t, 15,20)':fontcolor=White:fontsize=20:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[out]" -r 24 "video-out.mp4"
Выходное видео в формате mp4 выглядит следующим образом:
введите здесь описание изображения
Использование Android SDK версии 13, плагина FFMPEG : com.arthenica:mobile-ffmpeg-full-gpl:4.4
Пример кода класса:
import com.arthenica.mobileffmpeg.ExecuteCallback
import com.arthenica.mobileffmpeg.FFmpeg
class VideoUtils() {
fun addTextOverlay(inputFile: String, outputFile: String, text: String) {
// create video filter for overlay text between 0 - 5 seconds, centre aligned, white font and black box
val tempTextString =
"drawtext=text='$text:enable='between(t, 0,5)':fontcolor=White:fontsize=20:box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2"
// create FFMPEG command
val cmd =
"-y -i $inputFile -preset ultrafast -vf \"[in]$tempTextString[out]\" -r 24 \"$outputFile\""
FFmpeg.execute(cmd)
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... characters