Текст в фильм из командной строки

Мне нужен скрипт под названием myslide который выполняет следующие действия:

myslide -f 15 -t 20 "Hello World"

создает файл фильма (для воспроизведения mplayer), который отображает «Hello World» в центре экрана размером 15 шрифтов в течение 20 секунд.

Есть простой способ сделать это?

One Solution collect form web for “Текст в фильм из командной строки”

Здесь представлены две возможности, используя.

  • (1) AviSynth
  • (2) конвертировать ( imagemagick )

EDIT: оба сценария теперь сжаты и изменены, чтобы воспроизводить только один кадр в течение всего количества секунд. mplayer может работать с очень низким FPS (например, 0.008547009 и 0.003154574 FPS работал нормально, т. е. время воспроизведения 117 и 317 секунд).

ПРИМЕЧАНИЕ. На машине Ubuntu 10.04. mplayer не воспроизводит первый кадр, поэтому мне нужно включить 2 кадра для достижения указанного времени. Поэтому имейте в виду, что другой игрок может играть в оба кадра и тем самым удваивать время воспроизведения.

AviSynth – это универсальный / мощный сервер кадров. Графического интерфейса нет. Это язык сценариев для нелинейного редактирования / создания / фильтрации аудио-видео.
Будучи сервером фреймов, ему не нужно создавать видео на диске. Он может передавать видео / аудио напрямую, кадр за кадром, любому инструменту AviSynth, будь то медиа-плеер или кодировщик …

AviSynth – бесплатное программное обеспечение с открытым исходным кодом, написанное для Windows (я потерял вас? 🙂 … Попытки были сделаны, но он не был успешно перенесен на * nix (я считаю, что разработчики пытались, но его увязли, поскольку его оригинальный дизайн был винная версия mplayer и Avidemux может обрабатывать скрипты .avs (есть и другие, например VirtualDub и AvsPmod, который является мини-графическим интерфейсом IDE для Avisynth) ,

Вот сценарий AviSynth, чтобы делать то, что вы хотите.

 myslide 15 20 "Hello from AviSynth" 

 #!/bin/bash fontSize=$1; sec=$2; text="$3" >>test.avs printf 'Blankclip( 2 ,width=640 ,height=480 ,fps=1/float(%s), color=$000000)\n' "$sec" >>test.avs printf ' \ .Subtitle("%s", font="Arial", size=%s, text_color=$ff0000, align=5)\n' "$text" "$fontSize" wine avs2yuv.exe test.avs - 2>/dev/null | ffmpeg -b 100 -i - "test.mp4" 2>/dev/null mplayer test.mp4 

avs2yuv – это программа командной строки, предназначенная для использования под Wine, для взаимодействия между инструментами Avisynth и Linux.
avs2yuv только считывает видеопоток, но AviSynth может передавать аудио и видео в Avidemux через AvsProxy (который поставляется с Avidemux) …

Вот еще один способ, используя convert из пакета imagemagick . Этот метод создает серию изображений .jpg.

 myslide 15 20 "Hello from convert" 

 #!/bin/bash fontSize=$1; sec=$2; text="$3" FPS=$(awk 'END{print 1/'$2'}' /dev/null) convert -background lightblue -fill blue -pointsize $fontSize -gravity center -size 640x480 caption:"$text" "test$$0.jpg" cp test$$0.jpg "test$$1.jpg" # Add 1 extra; mplayer doesn't play ist frame (on test system) ffmpeg -y -r $FPS -b 100 -i test$$%d.jpg test.mp4 rm test$$*.jpg # remove temp images mplayer test.mp4 
  • Как установить временную метку транскрипционного разговора?
  • как получить URL-адрес потока флеш-радио
  • отсутствует gnome-mplayer в fedora 25
  • Как отправить вывод ffmpeg в framebuffer?
  • можно ли использовать w32codecs на 64-битной системе?
  • Сохранение вывода mplayer
  • Флаги компилятора для mplayer2 для оптимизации его для старого оборудования
  • Как ограничить выход fps в MPlayer?
  • Как создать PCM wav с помощью mplayer?
  • Как добавить аудиофайл в сценарий оболочки
  • Как запустить новый графический интерфейс с пользовательской командой из tty1?
  • Linux и Unix - лучшая ОС в мире.