encode-webm.rb 1.48 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#!/usr/bin/env ruby
# frozen_string_literal: true
#
# Copyright (C) 2018 Harald Sitter <sitter@kde.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) version 3, or any
# later version accepted by the membership of KDE e.V. (or its
# successor approved by the membership of KDE e.V.), which shall
# act as a proxy defined in Section 6 of version 3 of the license.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library.  If not, see <http://www.gnu.org/licenses/>.

require 'tty/command'

files = Dir.glob('wok/qemuscreenshot/*.png').reject { |x| File.symlink?(x) }

cmd = TTY::Command.new

pkg = 'ffmpeg'
unless TTY::Command.new(printer: :null).run!('dpkg', '-s', pkg).success?
  cmd.run!('apt-get', 'update')
  cmd.run('apt-get', 'install', '-y', pkg)
end

# Concat all files and encode as webm.
cmd.run('ffmpeg',
        '-r', '1',
        '-f', 'concat', '-safe', '0', '-i', '-',
        '-vf', 'fps',
        '-y',
        'wok/video.webm',
        input: files.collect { |x| "file '#{Dir.pwd}/#{x}'" }.join("\n"))