Ich benutze carrierwave, um einen Film auf Amazon S3 hochzuladen, der perfekt funktioniert.
Nun möchte ich beim Hochladen oder nach dem Hochladen ein Wasserzeichen in den Film einfügen, ich weiß nicht, was ist der beste Weg?
Ich habe es versucht:
movie_controller.rb
Aktion uploadVideo
Nur um herauszufinden, ob das Video von stremio aufgenommen wurde.
Aber dann habe ich den Fehler, dass der Film nicht gefunden wird, das Problem ist, dass es nicht in der Amazon S3-Bucket sieht, es sieht auf meinem lokalen Server
%Vor%Was könnte die Lösung sein? oder sollte ich das in carrierwave uploader tun?
UPDATE:
Wenn ich das nach der .save-Aktion mache, schaut es sich amazon s3 bucket an .. sagt aber auch, dass der Film nicht da ist. Aber wenn ich es direkt im Browser anrufe, wird es angezeigt.
UPDATE-Code:
%Vor%Aktualisierungsfehler:
%Vor%Aktualisierung: Den Code im Uploader hinzugefügt:
%Vor%Fehler:
%Vor%UPDATE - Film-Uploader
%Vor%Mit Kyle zusammen haben wir herausgefunden, dass folgendes erforderlich ist
nur Version 1.0.0 funktioniert gut
%Vor%Die Funktion befindet sich jetzt im carrierwave-Uploader und sieht folgendermaßen aus:
%Vor%Im Moment gibt es keine Fehler mehr, Problem ist immer noch, dass das Wasserzeichen nicht funktioniert.
Aktualisierung:
Eine funktionierende Lösung ist:
%Vor%Aus der CarrierWave-Dokumentation:
CarrierWave bietet Ihnen einen Speicher für permanenten Speicher und einen Cache für temporären Speicher. Sie können verschiedene Speicher verwenden, einschließlich Dateisystem und Cloud-Speicher.
und
... Sie können Dateien zwischenspeichern, indem Sie sie dem Attribut zuweisen. Sie werden automatisch gespeichert, wenn der Datensatz gespeichert wird.
Angenommen, Sie haben Ihren Uploader in die Spalte video
Ihres Modells gemountet (zB - mount_uploader :video, VideoUploader
), ruft video.url
den Cache-Pfad auf, nachdem Sie > einem Wert zugewiesen haben video
Spalte. Nachdem Sie das Modell gespeichert haben, sucht die url
-Methode im Speicherpfad.
Wenn Sie @vid.video.store_path
aufrufen, wird ffmpeg in Ihrem Fall aufgefordert, sich Ihren S3-Bucket anzusehen - am besten Machen Sie sich mit dem Cache und dem Speicherpfad vertraut , da die Wasserzeichenmarkierung in der lokalen, zwischengespeicherten Version der Datei leistungsfähiger sein kann.
Wir machen etwas Ähnliches in unserer Anwendung, die sich mit Audio beschäftigt. Natürlich verwenden wir kein Video oder Wasserzeichen, aber wir verwenden streamio-ffmpeg, um etwas zu transkodieren.
Anstatt Code im Controller für das Wasserzeichen zu verwenden, verschieben Sie stattdessen diese Funktionalität in den Uploader. Zum Beispiel könnte unsere Methode convert_to_mp3
Ihre Wasserzeichenmethode sein. Es scheint so, als würde dies Ihr Problem potentiell lösen.
Tags und Links ruby ruby-on-rails amazon-s3 ffmpeg