Completion of Ruby on Rails processing of video and animated gif files while streaming to storage on S3.
There is a Ruby on Rails application that 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 the customers. There is a written gem (basically a wrapper similar to Carrierwave) that will perform processing of the streaming file as the file is saved directly to Amazon S3.
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.
- 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.
Our Possible Approach
We would 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.).
We would maintain still images, animated gifs, and video using the same wrapper gem (Carrierwave re-write), taking roughly the same amount of time for each file type.
We would write full test coverage of code using MiniTest
The 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. So we would incorporate speed for the hour-long video to be processed just as fast as a still image.