Deep Dive: Thumbnailing Microservice
Updated: Jan 27, 2021
Take a Closer Look into Yadle's Thumbnailing Microservices
When the Yadle agent discovers new or modified files, a series of downstream events are triggered for microservices depending on the type of file discovered.
As a high level overview, Yadle will:
This article will shed insight into the workings and progression of the thumbnailing microservices.
To best illustrate this, we’ll go through an example flow for a collection of different file types: an image, sequence, video, and 3d object. No matter the file type, each discovered file by the Yadle agent will first get a generic file type icon which acts as a placeholder until the corresponding microservices complete the thumbnail generation task. If the file type isn’t currently supported for thumbnailing, then the generic filetype icon will remain for that file.
Yadle supports a wide range of files that our customers in VFX and AEC use. Check out the complete list of all supported file types Yadle generates thumbnails for here.
Image file types will typically be first to receive thumbnails. Two thumbnails will be generated for 2D images; a small and medium size.
Small Thumbnail: This is the thumbnail that is displayed alongside the file details in the search results when displayed in Rows view mode or as a collection of thumbnails only in Lightbox view mode. The small thumbnail is created so that the width is 200 pixels and the height is scaled proportionately.
Medium Thumbnail: Clicking on a small thumbnail in either of the view modes, a carousel viewer will open displaying the medium sized thumbnail. The medium thumbnail is created with a width of 640 pixels and the height is scaled proportionately. In the carousel viewer, it is possible to browse through the available medium thumbnails of all search results by clicking the left or right arrows. The medium sized thumbnail will also appear in the file details page.
There are two separate microservices that handle the generation of scrubbable thumbnail previews for video file types. One is specifically for r3d file types due to their uniqueness, and the other handles all the rest of the video formats Yadle supports.
No matter the duration of the video, the microservices will stitch together a 2D filmstrip using 100 equally spaced frames. Each frame to be used for the scrubbable thumbnail is sized to a height of 120 pixels and the width is scaled proportionately.
From the search results, hovering the cursor over a video file thumbnail allows a user to quickly scrub through to preview the content.
As a basic understanding, image sequences are simply a collection of related individual 2D frames that when played back at a standard frame rate, resembles a video type shot. The individual frames are processed and receive thumbnails in the same manner as described above for images.
Once the thumbnails are generated for each frame, there is a specific microservice which determines if a collection of files are candidates to be an image sequence. There is a combination of different logic involved in this decision making process. Things such as same parent directory, similar filename with frame number, number of frames, and file extension are some of the criteria the image sequence microservice will look for. There is a default set of file extensions that can be potential image sequence candidates as well as a minimum threshold frame count of 50. Both of these can be modified to suit the needs of your organization.
When a collection of files are deemed to be an image sequence, 100 equally spaced frames are used to create the scrubbable thumbnail preview. The small thumbnails that have been generated for each of the 100 frames are stitched together into a single filmstrip. As the small thumbnails are used for this, the scrubbable image sequence thumbnail will be 200 pixels wide and the height scaled proportionately.
Lastly, if an image sequence is part of your search results, instead of all the individual frames displaying, Yadle will only show the first frame of the sequence with all subsequent frames denoted in the file details.
The ability to quickly preview 3D models without having to load them into their respective applications can be a huge time saver. At Yadle, we understand the importance of supporting a large variety of 3D file types for our customers as the trend towards 3D objects and scenes continues to accelerate.
Turntable previews of 3D objects are generated using 24 frames for each of rotations about the z and x-axis. With 360 degrees in a full rotation of each axis, each frame represents 15 degrees of rotation. The frames are stitched together into a filmstrip that is sized to a height of 120 pixels and width of 213 pixels for each of the 48 total frames.
Hovering the cursor over the thumbnail starting from the left will first show the 3D object rotated about the z-axis followed by rotation about the x-axis. Depending on the material and textures files that exist alongside the 3D model, will determine if the rendered turntable is just a grey object or has material and texture applied.
While the microservice responsible for generating the turntable thumbnail previews can tackle a wide range of 3D file types, proprietary formats such as Maya’s ma and mb require tethering to a workstation with Maya installed in order to open the models and render thumbnails. When it comes to rendering large size 3D files, the underlying system running the Yadle microservices needs to have sufficient memory to open the file otherwise it will be skipped.
Where Do Thumbnails Get Stored?
All generated thumbnails are stored on the local filesystem of the system running the Yadle servers. For SaaS deployments, this means that the thumbnails are stored on Yadle's secure infrastructure. On premise deployments will have all generated thumbnails stored locally. The thumbnails make up a majority of the disk consumption of Yadle.
Can I Use My Own Thumbnails or Turntables?
Yes! Utilizing the Yadle API, it is possible to use your own specified thumbnails instead of the ones generated by Yadle's thumbnailing microservices.
To learn more about how to do this, refer to the Yadle API Documentation: Thumbnails.