【问题标题】:ruby on rails carrierwave-video ffmpeg AWSruby on rails carrierwave 视频 ffmpeg AWS
【发布时间】:2015-03-11 07:22:43
【问题描述】:

我正在尝试创建一个学术网站,用户可以在其中上传讲座视频,其他用户可以查看它们 - 类似于 Udemy 之类的网站。

我正在使用 Carrierwave、Carrierwave-video(用于编码视频)和 AWS 来实现这一点。 AWS 配置已完成,并且正在运行。

但是,我收到此错误。 (顺便说一句,我正在一个 Yelpdemo 网站上测试这个视频功能,所以我现在正在尝试让用户将视频上传到餐馆。)

rails 将错误指向@restaurant = Restaurant.new(restaurant_params)

RestaurantController#create 中的 Errno::ENOENT

没有这样的文件或目录 - ffmpeg

# POST /restaurants.json 定义创建 @restaurant = Restaurant.new(restaurant_params)

respond_to do |format|
  if @restaurant.save

这是我的 video_uploader.rb

# encoding: utf-8

class VideoUploader < CarrierWave::Uploader::Base

  include CarrierWave::Video
  include CarrierWave::Video::Thumbnailer

  process encode_video: [:mp4]

  include CarrierWave::MiniMagick

  storage :fog

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

   version :thumb do
      process thumbnail: [{format: 'png', quality: 10, size: 192, strip: true, logger: Rails.logger}]
      def full_filename for_file
        png_name for_file, version_name
      end
  end

    def png_name for_file, version_name
      %Q{#{version_name}_#{for_file.chomp(File.extname(for_file))}.png}
    end
end

我已经手动(向模型添加了一个文件)在模型中创建了 video.rb - 不确定这是否是正确的方法..

class Video < ActiveRecord::Base

  attr_accessor :user_id, :video,, :type, :filename, :path, :filesize, :width, :height, :duration, :bit_rate

  belongs_to :restaurant
  belongs_to :user

  mount_uploader :video, VideoUploader
end

在 app/views/restaurants/show.html.erb 中显示视频。现在,在没有完成编码的情况下,我可以看到视频的图像。当我正确地舔并复制代码时 - 它给了我 AWS URL,这意味着 AWS 配置已经到位

        <p>
            <strong>Video:</strong>
            <%= video_tag @restaurant.video_url %>
        </p>

我正在尝试展示这样的视频。

我已经下载了 FFMPEG(ffmpeg-2.6 和 SnowLeopard_Lion_Mountain_Yosemite_17) - 不确定哪个是正确的.. 我已经读过你需要将 FFMPEG 放在你的 usr/local/bin 中的地方 -> 所以你必须将ffmpeg exec文件物理放置在您各自的文件夹中?

需要您的专家帮助。

提前谢谢你!

【问题讨论】:

    标签: ruby-on-rails video amazon-web-services ffmpeg


    【解决方案1】:

    解决您的问题的最简单方法是删除您的 AMI AWS 实例并在 Ubuntu 上创建新的基础。在这种情况下,您可以毫无问题地安装 FFMPEG 开箱即用:

    apt-get install ffmpeg
    

    否则你有两种方法:

    1. Build FFMPEG 来自来源。 + 您将在路径和权限方面遇到额外的麻烦。
    2. 尝试找到与您的 AMI 实例兼容的 RPM 包或 RPM 存储库并从中安装 FFMPEG

    所以,我只是建议使用 Ubuntu 重新构建您的实例。

    【讨论】:

    • 您能否进一步解释一下在 Ubuntu 上创建一个新的基础(我以前从未使用过 Ubuntu),以及当您说 AMI AWS 时 AMI 代表什么?谢谢!
    • 我在我的控制台上运行了 apt-get install ffmpeg,但是它说 apt-get 命令没有找到。
    • AMI - 基于 CentOS 或 RedHat 的默认 Amazon 实例(我不太清楚)。只需在基于 Ubuntu 而不是默认实例类型的 EC2 中创建新实例。
    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多