1

我正在尝试上传视频并将文件转换为 mp4 并使用paperclip-ffmpegpaperclipgems 减小文件大小。运行本地服务器一切正常,我只在heroku上遇到这个问题。我在 vendor/ffmpeg/ 中安装了 ffmpeg(我按照以下步骤操作:https ://gist.github.com/3963576 )。这是我得到的代码和我得到的错误:

模型/视频.rb:

class Video < ActiveRecord::Base
  attr_accessible :content, :user_id, :video
  has_attached_file :video , :styles => { 
    :medium => { :geometry => "500x500", :format => 'mp4',
        :convert_options => { :output => { :vcodec => 'libx264',
        :b => '1000k', :bt => '200k',
        :acodec => 'libfaac', :ab => '56k', :ac => 2 } } }
  }, :processors => [:ffmpeg]

  belongs_to :user
end

当我运行时heroku logs

2013-01-02T00:38:20+00:00 app[web.1]: Started POST "/videos" for 101.170.255.251 at 2013-01-02 00:38:20 +0000
2013-01-02T00:38:20+00:00 app[web.1]: Processing by VideosController#create as HTML
2013-01-02T00:38:20+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"X0IKts46TF8aFvEb1I/szFo/28omlVBXIIyJ3APz3YA=", "video"=>{"content"=>"", "video"=>#<ActionDispatch::Http::UploadedFile:0x00000004ac88a8 @original_filename="sample.mov", @content_type="video/quicktime", @headers="Content-Disposition: form-data; name=\"video[video]\"; filename=\"sample.mov\"\r\nContent-Type: video/quicktime\r\n", @tempfile=#<File:/tmp/RackMultipart20130102-2-1ch9zcp>>}, "commit"=>"Post"}
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] ffmpeg -i "/tmp/sample20130102-2-4j5sgh.mov" 2>&1
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Resize
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Command Success
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Making...
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Building Destination File: 'sample20130102-2-4j5sgh' + 'mp4'
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Destination File Built
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Adding Source
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Adding Geometry
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Convert Options: 500x280
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Adding Format
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] -i :source -y -vcodec libx264 -b 1000k -bt 200k -acodec libfaac -ab 56k -ac 2 -s 500x280 :dest
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Extracting Target Dimensions
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Building Parameters
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Target Size is Available
2013-01-02T00:38:20+00:00 app[web.1]: [paperclip] [ffmpeg] Keeping Aspect Ratio
2013-01-02T00:38:20+00:00 app[web.1]: Command :: ffmpeg -i '/tmp/sample20130102-2-4j5sgh.mov' -y -vcodec libx264 -b 1000k -bt 200k -acodec libfaac -ab 56k -ac 2 -s 500x280 '/tmp/sample20130102-2-4j5sgh20130102-2-1mr35ix.mp4'
2013-01-02T00:38:20+00:00 app[web.1]: ffmpeg version git-2013-01-01-d079d1d Copyright (c) 2000-2012 the FFmpeg developers
2013-01-02T00:38:20+00:00 app[web.1]:   built on Jan  1 2013 12:59:49 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
2013-01-02T00:38:20+00:00 app[web.1]:   configuration: --enable-shared --disable-asm --prefix=/app/vendor/ffmpeg
2013-01-02T00:38:20+00:00 app[web.1]:   libavfilter     3. 30.102 /  3. 30.102
2013-01-02T00:38:20+00:00 app[web.1]:   libavcodec     54. 85.100 / 54. 85.100
2013-01-02T00:38:20+00:00 app[web.1]:   libavdevice    54.  3.102 / 54.  3.102
2013-01-02T00:38:20+00:00 app[web.1]:   libavutil      52. 13.100 / 52. 13.100
2013-01-02T00:38:20+00:00 app[web.1]:   libswresample   0. 17.102 /  0. 17.102
2013-01-02T00:38:20+00:00 app[web.1]:   libswscale      2.  1.103 /  2.  1.103
2013-01-02T00:38:20+00:00 app[web.1]:   libavformat    54. 58.100 / 54. 58.100
2013-01-02T00:38:21+00:00 app[web.1]:     creation_time   : 2013-01-02 00:36:58
2013-01-02T00:38:21+00:00 app[web.1]:     minor_version   : 0
2013-01-02T00:38:21+00:00 app[web.1]:     major_brand     : qt  
2013-01-02T00:38:21+00:00 app[web.1]: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/sample20130102-2-4j5sgh.mov':
2013-01-02T00:38:21+00:00 app[web.1]:     model           : iPhone 4
2013-01-02T00:38:21+00:00 app[web.1]:     compatible_brands: qt  
2013-01-02T00:38:21+00:00 app[web.1]:     model-eng       : iPhone 4
2013-01-02T00:38:21+00:00 app[web.1]:     make-eng        : Apple
2013-01-02T00:38:21+00:00 app[web.1]:     date-eng        : 2012-12-28T00:39:34+1100
2013-01-02T00:38:21+00:00 app[web.1]:     encoder         : 6.0
2013-01-02T00:38:21+00:00 app[web.1]:     encoder-eng     : 6.0
2013-01-02T00:38:21+00:00 app[web.1]:   Duration: 00:00:00.03, start: 0.000000, bitrate: 9465 kb/s
2013-01-02T00:38:21+00:00 app[web.1]:     Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 75 kb/s
2013-01-02T00:38:21+00:00 app[web.1]:     date            : 2012-12-28T00:39:34+1100
2013-01-02T00:38:21+00:00 app[web.1]:       creation_time   : 2013-01-02 00:36:58
2013-01-02T00:38:21+00:00 app[web.1]:     make            : Apple
2013-01-02T00:38:21+00:00 app[web.1]:   Metadata:
2013-01-02T00:38:21+00:00 app[web.1]:     Metadata:
2013-01-02T00:38:21+00:00 app[web.1]:       handler_name    : Core Media Data Handler
2013-01-02T00:38:21+00:00 app[web.1]:     Stream #0:1(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 8605 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc
2013-01-02T00:38:21+00:00 app[web.1]:     Metadata:
2013-01-02T00:38:21+00:00 app[web.1]:       handler_name    : Core Media Data Handler
2013-01-02T00:38:21+00:00 app[web.1]: Unknown encoder 'libx264'
2013-01-02T00:38:21+00:00 app[web.1]: Please use -b:a or -b:v, -b is ambiguous
2013-01-02T00:38:21+00:00 app[web.1]:       creation_time   : 2013-01-02 00:36:58
2013-01-02T00:38:21+00:00 app[web.1]: [paperclip] An error was received while processing: #<Paperclip::Error: error while processing video for sample20130102-2-4j5sgh: Command 'ffmpeg -i :source -y -vcodec libx264 -b 1000k -bt 200k -acodec libfaac -ab 56k -ac 2 -s 500x280 :dest' returned 1. Expected 0>
2013-01-02T00:38:21+00:00 app[web.1]:   Rendered videos/new.html.erb within layouts/application (3.2ms)
2013-01-02T00:38:21+00:00 heroku[router]: at=info method=POST path=/videos host=stark-sea-5654.herokuapp.com fwd=101.170.255.251 dyno=web.1 queue=0 wait=0ms connect=3ms service=3685ms status=200 bytes=1878
2013-01-02T00:38:21+00:00 app[web.1]:   Rendered layouts/_footer.html.erb (0.0ms)
2013-01-02T00:38:21+00:00 app[web.1]: Completed 200 OK in 342ms (Views: 124.8ms | ActiveRecord: 10.4ms)
2013-01-02T00:38:21+00:00 app[web.1]:   Rendered layouts/_header.html.erb (1.2ms)

在消息之前一切正常,Unknown encoder 'libx264'所以我认为这可能与 ffmpeg 有关?

4

1 回答 1

2

ffmpeg 不附带 libx264 安装。libx264 需要单独安装,并且在 ffmpeg ./configure 中需要包含 libx264。本指南应该可以帮助您使用 libx264 安装 ffmpeg:https ://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide

于 2013-01-02T02:15:26.417 回答