2019-01-13 [日常]mov文件转换为gif
程序员文章站
2022-03-02 08:12:53
因为需要将之前mac下用QuickTime录屏生成的文件(mov格式)转换成gif文件, 便于传到某些博客平台, 于是找到了 "这个转换工具" , 已将原代码的命名中文化并简化. Ruby和视频转换都是新手, 请多指教. 之前 "JavaScript实现ZLOGO: 前进方向和速度" 有两个mov文 ......
因为需要将之前mac下用quicktime录屏生成的文件(mov格式)转换成gif文件, 便于传到某些博客平台, 于是找到了, 已将原代码的命名中文化并简化. ruby和视频转换都是新手, 请多指教.
之前javascript实现zlogo: 前进方向和速度有两个mov文件, 下面为转换出的gif:
"轮胎":
田字格:
下面是命名中文化后的源码. 注意: 需将mov文件置于media
目录下, 并自行修改mov文件名
和mov视频大小
值.
# encoding: utf-8 app_root = file.dirname(__file__) @@mov文件名 = "1214_田字格" class converter @@mov视频大小 = "1032x542" # 查看mov文件属性 # default path to ffmpeg installed by homebrew @@ffmpeg = file.join('/', 'usr', 'local', 'bin', 'ffmpeg') # default path to gifsicle installed by homebrew @@gifsicle = file.join('/', 'usr', 'local', 'bin', 'gifsicle') @@像素格式 = "rgb8" # tell ffmpeg to reduce the frame rate from to 30 @@帧数 = 30 # tell gifsicle to delay 30ms between each gif (in ms) @@延时 = 3 # requests that gifsicle use the slowest/most file-size optimization @@优化 = 3 def initialize(输入, 输出) 命令 = %{#{@@ffmpeg} -i #{输入} -s #{@@mov视频大小} -pix_fmt #{@@像素格式} -r #{@@帧数} -f gif - | #{@@gifsicle} --optimize=#{@@优化} --delay=#{@@延时} > #{输出}} %x[ #{命令} ] end end # be careful not to use spa ces. 输入 = 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