One-sentence Summary: Completion of Ruby on Rails processing of video and animated gif files while streaming to storage on S3.
Background: We currently have a Ruby on Rails application which uses Carrierwave to accept a streaming file (image, animated gif, or video). Carrierwave stores the stream as a file, processes the file, and then uploads it to Amazon S3. This process is too slow for the needs of our customers. We have written a gem (basically a wrapper similar to Carrierwave) which will perform processing of the streaming file as the file is saved directly to Amazon S3.
What is needed:
Processing of still images for this project has been completed. Animated gifs and video is much more complicated, as the application must buffer chunks of the stream coming in, figure out details about the file (frame size, type, other information?), and then perform necessary actions with the stream depending on those details.
Handle animated gifs and videos by "piping" / buffering the beginning of the stream in memory to determine needed information (including, but not limited to frame size, type, etc.). Our application should then handle still images, animated gifs, and video using the same wrapper gem (our Carrierwave re-write), taking roughly the same amount of time for each file type.
Full test coverage of code written using minitest
TL;DR Version™ - Our API is really fast for images, but takes a minimum of several seconds for video, and upwards of minutes to hours depending on how many hours a video could be. We need an hour-long video to be processed just as fast as a still image.
Our development team believes the framework is in place.
The remaining work should not take longer than 30-35 hours to complete for a senior level Ruby / Rails developer.
Senior / Lead-level Ruby on Rails developer.
Experience with Carrierwave.
Experience with Amazon Web Services.
Experience with Docker and docker-compose.
Experience with Minitest.
Ability to work with little guidance and with a remote team.
Must have legal documentation to work in the United States.
Must sign a CIIAA / contracting agreement for work in the United States.
$5000, negotiable with the optimum skill set, payable at milestones to be worked out between the awarded contractor and the company.
TL;DR Version 2.0 ™ - Our API is really fast for images, but takes a minimum of several seconds for video, and upwards of minutes to hours depending on how many hours a video could be. We need an hour-long video to be pre-processed and "piped" to perform separate processing (e.g. concurrent creation of a smaller resolution video, or video at a higher frame rate, etc.) as fast as preprocessing and "piped" to perform separate processing of a still image.
(Yes, I apologize to all of you - the original TL;DR Version™ was written poorly. Sorry for any confusion.)