22 lines
		
	
	
		
			729 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			729 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module Paperclip
 | |
|   class AudioTranscoder < Paperclip::Processor
 | |
|     def make
 | |
|       meta = ::Av.cli.identify(@file.path)
 | |
|       # {:length=>"0:00:02.14", :duration=>2.14, :audio_encode=>"mp3", :audio_bitrate=>"44100 Hz", :audio_channels=>"mono"}
 | |
|       if meta[:duration] > 60.0
 | |
|         raise Mastodon::ValidationError, "Audio uploads must be less than 60 seconds in length."
 | |
|       end
 | |
|       
 | |
|       final_file = Paperclip::Transcoder.make(file, options, attachment)
 | |
|       
 | |
|       attachment.instance.file_file_name    = 'media.mp4'
 | |
|       attachment.instance.file_content_type = 'video/mp4'
 | |
|       attachment.instance.type              = MediaAttachment.types[:video]
 | |
| 
 | |
|       final_file
 | |
|     end
 | |
|   end
 | |
| end
 |