日常用中文写代码系列Ruby脚本将mov文件转换为gif
因为需要将之前苹果系统下用 QuickTime 录屏生成的文件(mov 格式)转换成 gif 文件,便于传到某些博客平台,于是找到了一个转换工具,将命名中文化并简化. Ruby和视频转换都是新手,请多指教.
前文《JavaScript实现ZLOGO: 前进方向和速度》录制了两个 mov 文件,下面为转换出的 gif 动画:
田字格:
"轮胎":
下面是命名中文化后的源码. # encoding: utf-8 APP_ROOT = File.dirname(__FILE__) @@mov文件名 = "1214_田字格" class Converter @@mov视频大小 = "1032x542" # 查看mov文件属性 @@ffmpeg = File.join("/", "usr", "local", "bin", "ffmpeg") @@gifsicle = File.join("/", "usr", "local", "bin", "gifsicle") @@像素格式 = "rgb8" @@帧数 = 30 @@延时 = 3 @@优化 = 3 def initialize(输入, 输出) 命令 = %{#{@@ffmpeg} -i #{输入} -s #{@@mov视频大小} -pix_fmt #{@@像素格式} -r #{@@帧数} -f gif - | #{@@gifsicle} --optimize=#{@@优化} --delay=#{@@延时} > #{输出}} %x[ #{命令} ] end end 输入 = File.join(APP_ROOT, "media", @@mov文件名 + ".mov") 输出 = File.join(APP_ROOT, "media", @@mov文件名 + ".gif") Converter.new(输入,输出)中文命名相关注意事项
开头需加# encoding: utf-8,否则报错invalid multibyte char (US-ASCII)
如果类名改为"转换器",运行报错如下. 不知是否Ruby的限制.$ ruby 转换器.rb 转换器.rb:7: class/module name must be CONSTANT