Си шарп, ffmpeg и шрифты
Эта заметка больше для себя, но может кто тут и найдет что полезное. Здесь я покажу несколько тонкостей, которые надо знать при создании надписи на видео с помощью ffmpeg и C#. Данная заметка пересекается с этой, фактически логическое продолжение.
Общий синтаксис команды (опции), накладывающей текст на видео ffmpeg
p.StartInfo.Arguments = " -i \"" + audio + "\" -ignore_loop 0 -i \"" + gifFile + "\" -vf \"scale=1080:-1,pad=1080:1920:(ow-iw)/2:((oh-ih)/2)+960:" + "color=" + backgroud_color + "," + "drawtext=fontfile=" + newStr + ":text='" + txt + "':fontcolor="+ color_txt + ":x=" + leftText + ":y=" + topText + ":fontsize=" + sizeText + "\" " + " -shortest -strict -2 -c:v libx264 -threads 4 -c:a aac -b:a 192k -pix_fmt yuv420p " + " -shortest -s 1080x1920 -t " + lenght_mp3;Тут много лишнего, выделим основные переменные:
- newStr – адрес файла шрифта
- color_txt – цвет текста
- leftText – сдвиг текста от верхнего края
- topText – сдвиг текста от верхнего края
- sizeText + - размер текста
Вот тут самое интересное. Во-первых, не все системы Windows понимают, если путь и/или название файла шрифта имеет кириллические символы. Так что лучше их не используйте.
Во-вторых, путь к файлу шрифта должен выглядеть как-то так
newStr = "C\\\\:/Windows/Fonts/arial.ttf";То есть, например, если путь к файлу шрифта выбирается через элемент openFileDialog (свойство FileName имею в виду), то его надо конвертировать так
newStr = font_file.Replace("\\", "/"); newStr = newStr.Replace(":/", "\\\\:/");Вот пара таких мелочей, которые если бы я знал, то существенно ускорили бы мне написание программы на си шарп, которая с помощью ffmpeg создает видео из гиф и накладывает на него музыку и текст.
Небольшой бонус: как получить список шрифтов, установленных в системе
comboBox1.Items.AddRange(FontFamily.Families.Select(f => f.Name).ToArray());В итоге, кстати, получилась вот такая программа:
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.