class Hardcode::Worker

Public Instance Methods

work(msg) click to toggle source
# File lib/hardcode/worker.rb, line 14
def work(msg)
  begin
    job = JSON.parse(msg)
    source_file = job['source']
    ffmpeg_options = if job['ffmpeg_options']
      "--ffmpeg-options \"#{job['ffmpeg_options']}\""
    else
      ""
    end
    # move mp4 and mp3 file directly without encoding
    if File.extname(source_file).match("^\.(mp4|mp3)$") != nil
      FileUtils.mv(source_file, job['dest_dir'], verbose: true)
    else
    puts output = %x[stack-encode encode --no-progress --log-file #{STACK_ENCODE_LOG} #{ffmpeg_options} '#{source_file}']
      if $?.success?
        filename = output[/.*>\s(.*)$/, 1]
        logger.info "Transcoding successful, deleting source file."
        FileUtils.mv(File.join(File.dirname(source_file), filename), job['dest_dir'], verbose: true)
        FileUtils.rm(source_file, verbose: true)
      else
        logger.error "Error: Transcoding failed."
      end
    end
  rescue => e
    message = "Error: #{e.message} - #{e.backtrace}"
    logger.fatal message
    raise message
  end
  logger.info "Finished: #{job.to_s}"
  ack!
end