0
0
Fork 0

Save video metadata and improve video OpenGraph tags (#6481)

* Save metadata from video attachments, put correct dimensions into OG tags

* Add twitter:player for videos

* Fix code style and test
This commit is contained in:
Eugen Rochko 2018-02-16 07:22:20 +01:00 committed by GitHub
parent 1122579216
commit 9dbae6e8a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 151 additions and 44 deletions

View file

@ -160,23 +160,39 @@ class MediaAttachment < ApplicationRecord
meta = {}
file.queued_for_write.each do |style, file|
begin
geo = Paperclip::Geometry.from_file file
meta[style] = {
width: geo.width.to_i,
height: geo.height.to_i,
size: "#{geo.width.to_i}x#{geo.height.to_i}",
aspect: geo.width.to_f / geo.height.to_f,
}
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
meta[style] = {}
end
meta[style] = style == :small || image? ? image_geometry(file) : video_metadata(file)
end
meta
end
def image_geometry(file)
geo = Paperclip::Geometry.from_file file
{
width: geo.width.to_i,
height: geo.height.to_i,
size: "#{geo.width.to_i}x#{geo.height.to_i}",
aspect: geo.width.to_f / geo.height.to_f,
}
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
{}
end
def video_metadata(file)
movie = FFMPEG::Movie.new(file.path)
return {} unless movie.valid?
{
width: movie.width,
height: movie.height,
frame_rate: movie.frame_rate,
duration: movie.duration,
bitrate: movie.bitrate,
}
end
def appropriate_extension
mime_type = MIME::Types[file.content_type]