![从命令行将文本转换为电影](https://linux22.com/image/20653/%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B0%86%E6%96%87%E6%9C%AC%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%94%B5%E5%BD%B1.png)
我需要一个名为的脚本myslide
,它执行以下操作:
myslide -f 15 -t 20 "Hello World"
生成一个电影文件(由 mplayer 播放),该文件仅在屏幕中央以 15 号字体显示“Hello World”20 秒。
是否有捷径可寻?
答案1
这里提出了两种可能性,使用。
编辑:两个脚本现已被压缩和修改为仅播放单身的指定帧的持续时间为多少秒。mplayer
可以处理非常低的 FPS(例如0.008547009和0.003154574FPS 运行良好,即。 117 和 317 秒播放时间)。
笔记:在 Ubuntu 10.04 机器上。mplayer
不播放第一帧,因此我需要包含 2 帧才能达到指定的时间。因此,请注意,另一个玩家可能会玩这两个帧,从而使游戏时间加倍。
阿维合成器是一个多功能/强大的框架服务器。没有图形用户界面。它是一种用于非线性音频视频编辑/创建/过滤的脚本语言。
作为帧服务器,它不需要在磁盘上创建视频。它可以直接逐帧向任何 AviSynth 感知工具(无论是媒体播放器还是编码器)提供视频/音频服务...
AviSynth 是为 Windows 编写的免费开源软件(我失去了你吗?:) ...进行了尝试,但没有成功移植到 *nix(我相信开发人员尝试过,但它陷入了困境,因为其原始设计是深深迷恋Windows东西。然而,它确实工作顺利在下面wine
。这葡萄酒的版本mplayer
并且Avidemux
可以处理.avs脚本(还有其他脚本;例如虚拟配音, 和AVSPmod这是 Avisynth 的迷你“IDE”GUI)。
这是一个 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 下使用,以在艾维辛特以及基于 Linux 的视频工具。
AVS2YUV只读取视频流,但是阿维合成器可以将音频和视频帧提供给Avidemux
via AvsProxy
(随 Avidemux 一起提供)...
---
这是另一种方法,使用convert
from package 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