【问题标题】:Paperclip AV Transcoder not working on remote serverPaperclip AV Transcoder 在远程服务器上不起作用
【发布时间】:2015-10-15 07:39:48
【问题描述】:

我可以在本地上传视频。视频使用回形针处理,所有元数据也正确保存。当我尝试使用我们的远程服务器上传视频时,我收到了错误:

Av::UnableToDetect (Unable to detect any supported library)

我已经使用 LinuxBrew 安装了ffmpeg。它说一切都安装正确(检查哪个 brew 和哪个 ffmpeg,以及检查 gem 是否正确安装)。

当我在我的视频模型中设置样式时(这使元信息能够被存储并控制视频的上传方式),它无法远程工作。

has_attached_file :video, path: "/posts/:id/:style.:extension",
  :styles => {
    :medium => { :geometry => "493x877", :format => 'flv' },
    :thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10 },
    # :mobile => {:geometry => "640X480", :format => 'mp4', :streaming => true}
  }, :processors => [:transcoder]

但是,当我从我的模型中删除它并拥有:

has_attached_file :video, path: "/posts/:id/:style.:extension"

视频上传到 S3(没有我需要的数据或样式)。

任何帮助将不胜感激。我认为 AV 无法找到 ffmpeg,但我不确定为什么或如何修复它。提前感谢您的任何建议。

【问题讨论】:

    标签: ruby-on-rails video amazon-s3 ffmpeg paperclip


    【解决方案1】:

    上周我遇到了同样的问题 - 试试这个!

    Video model:
        has_attached_file :video, styles: {
            :medium => {
              :geometry => "640x480",
              :format => 'mp4'
            },
            :thumb => { :geometry => "160x120", :format => 'jpeg', :time => 10}
        }, :processors => [:transcoder]
        validates_attachment_content_type :video, content_type: /\Avideo\/.*\Z/
    

    确保您已经捆绑:

    gem 'paperclip', '~> 4.3.1'
    gem 'aws-sdk', '< 2.0'
    gem 'paperclip-av-transcoder'
    gem "paperclip-ffmpeg", "~> 1.2.0"
    

    运行回形针迁移:

    rails g paperclip model video
    

    一定要在 post_controller.rb 中添加:

    private
    
        def bscenes_params
            params.require(:post).permit(:video)
        end
    

    上传表格:

    <%= f.file_field :video %>
    

    显示页面:

    <%= video_tag bscene.video.url(:medium), controls: true, style: "max-width: 100%;" %>
    

    此时你应该得到这个错误:

    Av::UnableToDetect(无法检测到任何支持的库):

    适用于 Mac

    转到您的终端并输入:

    brew options ffmpeg
    

    然后运行以下命令安装ffmpeg:

    对于旧版本的 brew 配方:

    brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-frei0r --with-libas
    

    对于较新版本的 brew recipe:

    brew install ffmpeg --with-fdk-aac --with-sdl2 --with-freetype --with-frei0r --with-libass
    

    适用于基于 Linux Mint / Ubuntu / Debian 的 Linux

    打开一个终端(Ctrl + Alt + T),一一执行以下命令安装ffmpeg。

    sudo add-apt-repository ppa:mc3man/trusty-media
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-get install ffmpeg
    

    此时视频上传将在本地工作

    现在对于远程上传,您需要设置https://devcenter.heroku.com/articles/buildpacks

    这应该会导致您的错误

    Av::UnableToDetect(无法检测到任何支持的库)

    您需要在应用程序目录的根目录中创建一个 Procfile 以了解更多关于 Procfile 的信息:https://devcenter.heroku.com/articles/procfile

    touch Procfile
    

    希望这会有所帮助!

    【讨论】:

    • 我能够做一些非常相似的事情!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2014-07-03
    • 2015-12-28
    • 1970-01-01
    • 2018-01-30
    相关资源
    最近更新 更多