2015-07-24 9 views
7

Ich kann Videos lokal hochladen. Die Videos werden mit Büroklammer verarbeitet und alle Metadaten werden ebenfalls korrekt gespeichert. Als ich versuchte, ein Video mit unserem Remote-Server zu laden, erhielt ich den Fehler:Paperclip AV-Transcoder funktioniert nicht auf dem Remote-Server

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

I ffmpeg mit LinuxBrew installiert haben. Es sagt, alles ist korrekt installiert (überprüfen, welche brauen und welche ffmpeg, sowie überprüfen, ob der Edelstein ordnungsgemäß installiert ist).

Wenn ich mein Modell für das Video gestalte (was es ermöglicht, die Meta-Informationen zu speichern und die Kontrolle darüber zu haben, wie das Video hochgeladen wird), funktioniert es nicht remote.

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] 

Allerdings, wenn ich das von meinem Modell entfernen und haben:

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

Das Video zu S3 hochgeladen (ohne die Daten oder Styling, die ich brauche).

Jede Hilfe würde sehr geschätzt werden. Ich denke, AV hat Probleme, ffmpeg zu finden, aber ich bin mir nicht sicher, warum oder wie ich es beheben soll. Vielen Dank im Voraus für eine Beratung.

Antwort

11

Ich hatte das gleiche Problem gerade letzte Woche - Versuchen Sie das!

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/ 

Stellen Sie sicher bereits gebündelt:

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

die Büroklammer Migration starten:

rails g paperclip model video 

Seien Sie sicher, in post_controller hinzuzufügen.rb:

private 

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

hochladen Form:

<%= f.file_field :video %> 

Seite zeigen:

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

An dieser Stelle sollten Sie diese Fehlermeldung erhalten:

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

Für Mac

zu Ihrem Terminal gehen und geben Sie in:

brew options ffmpeg 

Dann führen Sie den folgenden ffmpeg zu installieren:

Für ältere Versionen von brauen Rezept:

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

Für neuere Versionen von Gebräu Rezept:

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

Für Linux Mint/Ubuntu/Debian-basierte Linux

Öffnen Sie ein Terminal (Strg + Alt + T), und führen Sie folgende Befehle nacheinander ffmpeg zu installieren.

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

An diesem Punkt Video-Uploads funktionieren lokal

jetzt für Remote-Uploads müssen Sie Setup https://devcenter.heroku.com/articles/buildpacks

Dies sollte Ihr Fehler bringen Sie jetzt zu

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

Sie müssen eine Procfile im ro erstellen ot Ihrer App-Verzeichnis weitere Informationen über procfile hier: https://devcenter.heroku.com/articles/procfile

touch Procfile 

hoffe, das hilft!

+0

Ich konnte etwas sehr ähnliches tun! Vielen Dank. – zreitano

+1

Können Sie teilen, was für Sie funktioniert hat? –

Verwandte Themen