We got a report from one of the FV Player users that playing a video on his Android phone for 15 minutes causes it to really get hot. He didn’t run into such issue when watching a long video on YouTube or a movie on Netflix.
Mistakes do happen, but we really felt ashamed to let this one through. But we quickly discovered it’s a core Flowplayer issue. FV Player is built on top of the amazing Flowplayer technology which gives us a lot of benefits, but occasionally it causes issues too. So it was clear we got to fix this and submit our fix back to Flowplayer like we always do.
In Flowplayer 7 the loading animation consists of 4 animated SVG graphics which are appended to the HTML as the player initializes. As you click the player these animations become visible thanks to CSS. So the animations are happening in background even if they are not needed at all, even before you click to play any video.
The issue is less visible on a desktop computer. You need something like 40 instances of FV Player to really notice this. You can see if when you record a performance profile in Google Chrome. Here’s the performance of a test page with 40 players:
Chrome Performance profiling for 40 FV Players. The top graph gray area extending past 6000 ms is a problem.
Removing these graphics reduced the CPU usage of an idle Flowplayer on my phone almost down to zero. So indeed – hidden animated SVG loads the CPU a lot. I was noticing this issue in both Chrome and Safari.
So we submitted a fix to Flowplayer (and already included it in FV Player 7.2.8.727 ) which removes these SVGs on player initialization and puts them back on load. Then removes them again on unload. It could be even better, we would prefer to put them in only when the player is in loading state or seeking via some event hook, but that can’t be reliably determined as sometimes only the CSS class is-loading
or is-seeking
is added.
Or even better – just use a CSS animation like Flowplayer 6 did. But then it would have to match the different Flowplayer 7 skins in (sharp outline, round outline, etc.).
However that’s not all – Flowplayer also keeps checking the player size using the requestAnimationFrame()
call. Perhaps it’s the recommended way of doing such things these days, but the fact is that it causes some small pieces of JavaScript to execute even if the web page is completely idle with no video playing. So in FV Player we avoided this and use window resize
event instead.
After our fix the CPU is idle after all 40 FV Players are initialized. The top graph is much cleaner now
Both fixes were included in FV Player 7.2.8.727.
Martin Viceník
Martin graduated as an engineer in Computer Science from Slovak Technical University in Bratislava. He grew up in Liptovský Mikuláš in northern Slovakia next to the beautiful Tatra mountains. He is the developer behind our FV Player.
Leave a Reply