因為需要將之前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