【问题标题】:Paperclip-ffmpeg not working on RailsPaperclip-ffmpeg 在 Rails 上不起作用
【发布时间】:2013-07-28 21:59:36
【问题描述】:

我安装了Paperclip-ffmpeg并尝试上传flv文件,但转换文件似乎有些问题。

按照回形针-ffmpeg github 页面上的说明,我将Paperclip.options[:command_path] = "/usr/bin/"(我通过使用which ffmpeg 获得了路径)添加到我的config/environments/development.rb 文件中。

这是我的模型subquestion.rb,其中包含一个名为 qflv 的回形针字段:

class Subquestion < ActiveRecord::Base
    belongs_to :question
    has_many :qimages , :dependent =>  :destroy

    has_attached_file :qflv, styles: {
        medium: {geometry: "640*480", format: 'flv'},
        thumb: {geometry: "100*100#", format: 'jpg', time: 10}
    }, processors: [:ffmpeg]

这是我的_subquestion_fields.html.erb 文件,用户上传视频的地方:

<%= f.file_field :qflv %>

_subquestion_fields.html.erb 由 question.html.erb 文件渲染:

<%= nested_form_for @question, :url => {:action => 'create_question'} do |f| %>
       <%= f.fields_for :subquestions do |builder| %>
       <%= render 'subquestion_fields', :f => builder %>

这里是错误信息的一部分:

WARNING: gnome-keyring:: couldn't connect to: /run/user/li/keyring-CsW4u8/pkcs11: No such file or directory
ffmpeg version 0.8.6-6:0.8.6-1ubuntu2, Copyright (c) 2000-2013 the Libav developers
  built on Mar 30 2013 22:23:21 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[flv @ 0x8ba50a0] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from '/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9.flv':
  Metadata:
    metadatacreator : modified by youku.com in 20111202
    hasKeyframes    : true
    hasVideo        : true
    hasAudio        : true
    hasMetadata     : true
  Duration: 00:05:25.03, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: h264 (High), yuv420p, 448x336 [PAR 1:1 DAR 4:3], 15 tbr, 1k tbn, 30 tbc
    Stream #0.1: Audio: aac, 44100 Hz, stereo, s16
Incorrect frame size
Failed to set value '0x0' for option 's'
WARNING: gnome-keyring:: couldn't connect to: /run/user/li/keyring-CsW4u8/pkcs11: No such file or directory
ffmpeg version 0.8.6-6:0.8.6-1ubuntu2, Copyright (c) 2000-2013 the Libav developers
  built on Mar 30 2013 22:23:21 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[flv @ 0x86490a0] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from '/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9.flv':
  Metadata:
    metadatacreator : modified by youku.com in 20111202
    hasKeyframes    : true
    hasVideo        : true
    hasAudio        : true
    hasMetadata     : true
  Duration: 00:05:25.03, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: h264 (High), yuv420p, 448x336 [PAR 1:1 DAR 4:3], 15 tbr, 1k tbn, 30 tbc
    Stream #0.1: Audio: aac, 44100 Hz, stereo, s16
Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting format 'yuvj420p'
[buffer @ 0x864c180] w:448 h:336 pixfmt:yuv420p
[scale @ 0x8653840] w:448 h:336 fmt:yuv420p -> w:448 h:336 fmt:yuvj420p flags:0x4
[crop @ 0x864dc20] w:448 h:336 -> w:0 h:0
[crop @ 0x864dc20] Invalid too big or non positive size for width '0' or height '0'
Error opening filters!


Started POST "/test_geisinger/roots/questions/create" for 127.0.0.1 at 2013-07-27 23:12:31 -0400
Processing by RootsController#create_question as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"EiJk5dBf1nL96BtUiKc0qALCg0Bj9mQ0dx9IodfYdO0=", "question"=>{"explanation"=>"flv", "choice_id"=>"8", "correct_selection_id"=>"32", "quiz_id"=>"10", "subquestions_attributes"=>{"0"=>{"subquestion_type"=>"flv", "_destroy"=>"false", "qflv"=>#<ActionDispatch::Http::UploadedFile:0x9d94640 @original_filename="03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE7.flv", @content_type="video/x-flv", @headers="Content-Disposition: form-data; name=\"question[subquestions_attributes][0][qflv]\"; filename=\"03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE7.flv\"\r\nContent-Type: video/x-flv\r\n", @tempfile=#<Tempfile:/tmp/RackMultipart20130727-1837-1f6g2s0>>}}}, "commit"=>"Submit"}
[paperclip] [ffmpeg] ffmpeg -i "/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9.flv" 2>&1
[paperclip] [ffmpeg] Command Success
[paperclip] [ffmpeg] Making...
[paperclip] [ffmpeg] Building Destination File: '03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9' + 'flv'
[paperclip] [ffmpeg] Destination File Built
[paperclip] [ffmpeg] Adding Geometry
[paperclip] [ffmpeg] Extracting Target Dimensions
[paperclip] [ffmpeg] Target Size is Available
[paperclip] [ffmpeg] Keeping Aspect Ratio
[paperclip] [ffmpeg] Resize
[paperclip] [ffmpeg] Convert Options: 0x0
[paperclip] [ffmpeg] Adding Format
[paperclip] [ffmpeg] Adding Source
[paperclip] [ffmpeg] Building Parameters
[paperclip] [ffmpeg] -i :source -s 0x0 -y :dest
Command :: ffmpeg -i '/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9.flv' -s 0x0 -y '/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l920130727-1837-11o3enh.flv'
[paperclip] An error was received while processing: #<Paperclip::Error: error while processing video for 03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9: Command 'ffmpeg -i '/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l9.flv' -s 0x0 -y '/tmp/03000201005171FC8274A20623ECA86B119768-56C7-7A62-DB7A-A4B599F64EE720130727-1837-13757l920130727-1837-11o3enh.flv'' returned 1. Expected 0

pkcs11可能有一些问题,所以我找到了这篇文章:

https://bugzilla.redhat.com/show_bug.cgi?id=783568

但我找不到/etc/xdg/autostart/gnome-keyring-*.desktop

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ffmpeg paperclip


    【解决方案1】:

    您为什么认为这与 PKCS11 有关?查看报错信息:

    Invalid too big or non positive size for width '0' or height '0'
    

    如果您查看生成的命令,它会尝试对大小为 0×0 像素的视频进行编码:

    ffmpeg -i ….flv -s 0x0 -y ….flv
    

    这也是回形针告诉你的:

    [paperclip] [ffmpeg] Convert Options: 0x0
    

    您需要为视频设置一个正尺寸——任何都可以,但如果您不想重新缩放,则完全省略 -s 将是理想的选择。我认为以下就足够了:

    has_attached_file :qflv, styles: {
        medium: {geometry: "640x480", format: 'flv'},
        thumb: {geometry: "100x100#", format: 'jpg', time: 10}
    }, processors: [:ffmpeg]
    

    注意使用x 而不是* 来指定尺寸。


    与您的问题无关,但请查看以下内容:

    *** THIS PROGRAM IS DEPRECATED ***
    

    您使用的是源自 Libav 而非 FFmpeg 的损坏且名称错误的 ffmpeg 版本。自此版本发布以来,已修复了数百个错误,因此请考虑更新您的错误。查看FFmpeg download page 了解一些选项。

    【讨论】:

    • 非常感谢!我实际上使用了一个名为rails-ffmpeg 的gem,所以如果我将“misnamed ffmpeg”更改为FFmpeg,gem 会受到影响吗?
    • 我找不到任何名为 rails-ffmpeg 的宝石。你说的“受影响”到底是什么意思?我很确定 Gem 不会发布自己的 ffmpeg 二进制文件,因此它可能也可以与其他人一起使用。
    • 哦,对不起,是paperclip-ffmpeg。谢谢!!
    • 我所说的“受影响”是指我是否需要将某些更改更改为paperclip-ffmpeg。例如,如果命名错误的 ffmpeg 和真正的 FFmpeg 使用不同的命令行指令,那么我们肯定要更改 gem。也许是一个非常新手的问题。
    • 除非 Paperclip 使用严重错误的ffmpeg 命令,否则无需更改任何内容。较新的 ffmpeg 版本对可以使用的语法有更多限制,并删除了一些选项,如 -sameq,但如果遇到任何问题,修复应该是微不足道的。包装器相当小:github.com/owahab/paperclip-ffmpeg/blob/master/lib/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多