несущая-видео не обрабатывает видео - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь перекодировать видеофайлы и загрузить их на s3. Чтобы сделать это, я пытаюсь использовать самоцвет для несущей-видео для транскодирования. Для загрузки я использую carrierwave, а для фоновой обработки я использую carrierwave-backgrounder с комбинацией activejob и sidekiq. После транскодирования видеофайл необходимо загрузить на S3. Однако проблема, с которой я столкнулся, заключается в том, что carrierwave-video не транскодирует видеофайлы, но видеофайлы по-прежнему загружаются в s3 в исходном формате. Я не понимаю, где ошибка, которая заставляет это не транскодировать. Может кто-нибудь сказать мне, что мне не хватает в плане создания файлов перекодировки carrierwave-video?

VideoUploader

class VideoUploader < CarrierWave::Uploader::Base

  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  # include CarrierWave::MiniMagick

  include CarrierWave::MimeTypes
  process :set_content_type

  include CarrierWave::Video
  process encode_video: [:mp4, resolution: "640x480", watermark: {}]

  include ::CarrierWave::Backgrounder::Delay

  # Choose what kind of storage to use for this uploader:
  # storage :file
  storage :fog

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

movie.rb

class Movie < ApplicationRecord
        mount_uploader :video, VideoUploader
        process_in_background :video

        validates :title, presence: true, length: { minimum: 1, maximum: 30 },
                                                                                uniqueness: { case_sensitive: false }
        validates :year, presence: true, numericality: { only_integer: true }
        validates :plot, presence: true, length: { minimum: 1, maximum: 1000 }
        validates :video, presence: true

end

movies_controller.rb (создать)

def create
    movie = Movie.new(movie_params)

                if movie.save
                        VideoProcesserJob.perform_later(movie.id)
                        render json: movie, status: 201
                else
                        render json: { errors: movie.errors }, status: 422
                end
        end

VideoProcesserJob.rb

class VideoProcesserJob < ApplicationJob
  queue_as :default

  def perform(movie_id)
    movie = Movie.find(movie_id)
  end
end
...