tutorial thoughtbot rails active ruby-on-rails video amazon-s3 ffmpeg paperclip

ruby-on-rails - rails - thoughtbot github



Paperclip AV Transcoder no funciona en el servidor remoto (1)

Puedo subir videos localmente. Los videos se procesan con clip y todos los metadatos se guardan correctamente también. Cuando intenté subir un video usando nuestro servidor remoto, recibí el error:

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

He instalado ffmpeg usando LinuxBrew . Dice que todo está instalado correctamente (verifica qué brebaje y qué ffmpeg , así como también verifica si la gema está correctamente instalada).

Cuando diseño mi modelo para el video (que es lo que permite almacenar la metainformación y controlar cómo se carga el video), no funciona de manera remota.

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]

Sin embargo, cuando elimino esto de mi modelo, tengo:

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

El video se carga en S3 (sin los datos ni el estilo que necesito).

Cualquier ayuda sería muy apreciada. Creo que AV tiene problemas para encontrar ffmpeg, pero no estoy seguro de por qué o cómo solucionarlo. Gracias de antemano por cualquier consejo.


Tuve el mismo problema la semana pasada. ¡Prueba esto!

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/

Asegúrate de que ya estás incluido:

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

Ejecute la migración del clip de papel:

rails g paperclip model video

Asegúrese de agregar en post_controller.rb:

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

Subir formulario:

<%= f.file_field :video %>

Mostrar página:

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

En este punto, deberías obtener este error:

Av :: UnableToDetect (no se puede detectar ninguna biblioteca compatible):

Para Mac

Ve a tu terminal y escribe:

brew options ffmpeg

Luego ejecute lo siguiente para instalar ffmpeg:

Para versiones anteriores de la receta de preparación:

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

Para versiones más nuevas de la receta de cerveza:

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

Para Linux Mint / Ubuntu / Debian basado en Linux

Abra una terminal (Ctrl + Alt + T) y ejecute los siguientes comandos uno por uno para instalar ffmpeg.

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

En este punto, las cargas de video funcionarán localmente

Ahora, para cargas remotas, deberá configurar https://devcenter.heroku.com/articles/buildpacks

Esto ahora debería llevarlo a su error

Av :: UnableToDetect (no se puede detectar ninguna biblioteca compatible)

Necesitarás crear un archivo de proceso en la raíz del directorio de tu aplicación para obtener más información sobre Procfile aquí: https://devcenter.heroku.com/articles/procfile

touch Procfile

¡Espero que esto ayude!