Overview
An advanced, project-based course focused on delivering a production-ready playblasting toolset that replaces Maya's outdated media encoder.
The completed toolset will allow for a unified playblast experience with support for automation, custom scripts and provide a robust Qt-based graphical user interface.
* This is a Patreon series. Project files and videos marked with a are Total Access exclusives.
Course Outline
35 Videos (6 hours 51 minutes)
00 - Introduction
-
A general overview of this series, the course requirements and what viewers can expect in upcoming lessons.
01 - Project Overview
-
An overview of the project objectives and deliverables including a detailed walkthrough of the prototype playblast UI and its desired functionality.
02 - Production Quality
-
A review of the term "Production Quality" and what it means to deliver a finished project that reaches this level of quality.
03 - Requirements
-
A comprehensive breakdown of the project requirements and expected functionality that should be implemented by the end of this course.
04 - Playblast Logic (Part 1)
-
This first of the two major sections in this project focusing on wrapping all of the playblast and encoding logic into a single standalone class.
05 - Playblast Logic (Part 2)
-
Continuing on from the previous lesson, the initial setup for the ffmpeg executable is added.
06 - Playblast Logic (Part 3)
-
In this lesson, special handling is implemented to support custom macros for the output directory and filename.
07 - Playblast Logic (Part 4)
-
The focus of this lesson is on the helper methods required to set up the camera and manage the viewport for the playblast operation.
08 - Playblast Logic (Part 5)
-
Over the next few lessons, the remaining user configurable playblast options (resolution, frame range and encoding settings) will be implemented along with the helper methods for supporting custom presets.
09 - Playblast Logic (Part 6)
-
Continuing on from the previous lesson, in this video the required frame range logic and preset helper methods are implemented.
10 - Playblast Logic (Part 7)
-
In this lesson, the methods responsible for setting the encoder, encoder specific options and output format are implemented.
11 - Playblast Logic (Part 8)
-
While testing the code a couple potential problems were discovered. This lesson will highlight those issues and implement the necessary fixes.
12 - Playblast Logic (Part 9)
-
With the majority of the methods required to configure a playblast complete, it's time to put it all together and implement the remainder of the execute method.
13 - Playblast Logic (Part 10)
-
Continuing on from the previous lesson, this video implements the pre and post playblast logic and finalizes the playblast operation.
14 - Encoding with ffmpeg (Part 1)
-
With the playblast operation complete, the next step is to encode the playblasted image sequence, using ffmpeg, to create the final h264 encoded mp4.
15 - Encoding with ffmpeg (Part 2)
-
Using the QProcess class, the ffmpeg command will be executed in a separate process with the ffmpeg output directed back to Maya.
16 - Encoding with ffmpeg (Part 3)
-
With video encoding complete, it is time to add support for audio that correctly handles the playback start time and audio offset.
17 - Cleanup
-
In this lesson, the remaining methods -- for cleaning up the temporary image directory and opening the final output in a media player -- are implemented.
18 - Node Visibility (Part 1)
-
The final remaining feature to be added to this class is the ability to control which node types are visible during the playblast.
19 - Node Visibility (Part 2)
-
Continuing on from the previous lesson, the required node visibility methods are implemented.
20 - Node Visibility (Part 3)
-
Wrapping up the ZurbriggPlayblast class, visibility logic is added to temporarily alter the viewport display during a playblast.
21 - User Interface (Part 1)
-
With the playblast logic complete, it is time to create a robust, production ready front end for the playblast tool using Qt for Python (PySide2).
22 - User Interface (Part 2)
-
Building on the base code from the previous lesson, the first step is to implemented the default functionality of Playblast button.
23 - User Interface (Part 3)
-
The next step in the UI's creation is to hook up the Output Window so that any messages from the UI, Maya or ffmpeg are displayed to the user.
24 - User Interface (Part 4)
-
In this lesson, UI functionality is added to make the ffmpeg executable path a user configurable option.
25 - User Interface (Part 5)
-
In this lesson, the output selection buttons are implemented -- including special handling to resolve supported macros.
26 - User Interface (Part 6)
-
The next area of the UI to be implemented is the options section. These options expose most of the user configurable playblast settings.
27 - User Interface (Part 7)
-
Continuing on from the previous lesson, in this video the remaining methods connected to the playblast option widgets are implemented.
28 - User Interface (Part 8)
-
With the individual refresh methods complete, it becomes trivial to implement the main refresh method called by the Refresh button.
29 - User Interface (Part 9)
-
In this lesson, the functionality for the Encoder Settings dialog is implemented.
30 - User Interface (Part 10)
-
Wrapping up the user configurable options, the remaining logic required by the Node Visibility dialog is added.
31 - User Interface (Part 11)
-
The final pieces of the UI to be implemented are the methods for loading and saving the default playblast values.
32 - User Interface (Part 12)
-
To improve usability, in this lesson support is added that allows the tool to be easily integrated into Maya's shelves and menus.
33 - Final Thoughts
-
Final thoughts on the completed FFmpeg Playblast project.
34 - Overscan Update
-
After completing this series, I realized I’d overlook a feature on the Playblast tool, one that I consider to be very important for a production pipeline.