aa1aef6727
Because the input videos for BigBlueButton recording processing switch resolution and aspect ratio, the filter chain gets re-initialized, and any state in the filters is lost. This causes problems with the following filters: `color`: Timestamps restart from 0, rather than continuing at the point where they left off. `fps=start_time=12.345`: After reset, the fps filter thinks it's at the start of the file again, so the next frame it sees gets duplicated output for timestamps from the `start_time` until it catches back up. `setpts=PTS-STARTPTS`: The 'STARTPTS' is re-read as the first pts the filter sees after reinitialization, so timestamp of the next frame is reset to 0. (In practise, this didn't cause any problems because the duplicate frames created by the fps filter had the original start time.) The end result of all of these issues is that a lot of duplicate frames were created with invalid timestamps, which eventually get discarded by ffmpeg. But a lot of time is wasted, causing recordings to sometimes take hours to process when they should be ready in minutes. The fixes are as follows: * The `color` filters are used to generate the background and substitutes for missing videos. Move them out to separate filter chains by using the 'lavfi' input format, which lets you use a filter as if it was an input file. * Rather than use the `fps` filter's `start_time` feature, use the `trim` filter to remove early frames. * The actual start pts is already known by the script, so replace `setpts=PTS-STARTPTS` with `setpts=PTS-12.345/TB`, substituting in the absolute time. |
||
---|---|---|
.. | ||
edl | ||
generators | ||
workers | ||
edl.rb | ||
events_archiver.rb | ||
workers.rb |