Existem duas possibilidades aqui apresentadas, usando.
- (1) AviSynth
- (2) converter ( imagemagick )
EDIT: Ambos os scripts foram condensados e modificados para reproduzir apenas um quadro único durante a duração de quantos segundos foram especificados. mplayer
pode lidar com FPS muito baixo (por exemplo, 0,008547009 e 0,003154574 FPS funcionou bem, ou seja, 117 e 317 segundos de tempo de reprodução).
NOTA: Na máquina Ubuntu 10.04. mplayer
não reproduz o primeiro quadro, por isso precisei incluir dois quadros para atingir o tempo especificado. Portanto, esteja ciente de que outro jogador pode jogar os dois quadros e assim dobrar o tempo de jogo.
AviSynth é um servidor de quadros versátil / potente. Não há GUI. É uma linguagem de script para edição / criação / filtragem de áudio e vídeo não linear. Sendo um servidor de quadros, não precisa criar um vídeo no disco. Ele pode servir o vídeo / áudio diretamente, quadro a quadro, para qualquer ferramenta aviSynth ciente, seja um media player ou codificador ...
AviSynth é Software Livre e de Código Aberto escrito para Windows (perdi você? :) ... Tentativas foram feitas, mas não foi portado com sucesso para * nix (eu acredito que os desenvolvedores tentaram, mas ele se atolou como O design original foi strongmente enganchado no material do Windows.
funciona bem emwine
. A versão vinho de mplayer
e Avidemux
pode processar scripts .avs (há outros; por exemplo, VirtualDub e AvsPmod que é um mini- "IDE" GUI para Avisynth).
Aqui está um script do AviSynth para fazer o que você quiser.
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 é um programa de linha de comando, destinado ao uso sob o Wine, para fazer interface entre
avs2yuv lê apenas um fluxo de vídeo, mas o AviSynth pode transmitir áudio e vídeo para Avidemux
via AvsProxy
(que acompanha o Avidemux) ...
---
Aqui está outra maneira, usando convert
do pacote imagemagick
. Este método cria uma série de imagens .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