优秀的编程知识分享平台

网站首页 > 技术文章 正文

「日常」用中文写代码系列——Ruby 脚本将 mov 文件转换为 gif

nanyue 2024-08-08 19:12:32 技术文章 12 ℃

因为需要将之前苹果系统下用 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
最近发表
标签列表