This just adds a catch to a Promise.all in renderHitsounds() in render_frame.js. Without it, the render would get stuck forever after ffmpeg exits unexpectedly instead of either failing completely or recovering. The specific issue we ran into was with a hitsound audio file that ffmpeg couldn't handle (ogg vorbis inside a .wav container). Command to reproduce the issue: !render https://osu.ppy.sh/beatmapsets/1276314#osu/2651771 strains 60s.
Still testing various maps, will edit to a full PR once I feel confident this doesn't introduce any regressions.
The output from when ffmpeg exited with exit code 1:
This just adds a catch to a
Promise.all
inrenderHitsounds()
in render_frame.js. Without it, the render would get stuck forever after ffmpeg exits unexpectedly instead of either failing completely or recovering. The specific issue we ran into was with a hitsound audio file that ffmpeg couldn't handle (ogg vorbis inside a .wav container). Command to reproduce the issue:!render https://osu.ppy.sh/beatmapsets/1276314#osu/2651771 strains 60s
.Still testing various maps, will edit to a full PR once I feel confident this doesn't introduce any regressions.
The output from when ffmpeg exited with exit code 1: