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!