by jasode 5 years ago

>A great way Chrome can render content faster is to take advantage of the multi-core CPUs and advanced GPUs present in today’s devices. Multi-core means we can do multiple kinds of work in parallel. For example, Chrome parallelizes running JavaScript, scrolling a web page, decoding an image or video,

I've noticed that Firefox is not as smooth as Chrome when playing 4k video. This has been an ongoing issue experienced by many for several years: https://www.google.com/search?q=firefox+4k+video+stutters

I just re-tested this on the latest Firefox 93.0 and while it pegs an entire cpu, the playback performance is still jerky and unusable. And changing the oft-suggested setting of "gfx.webrender.all = true" still doesn't resolve it.

I don't know what Chrome is doing differently but 4k playback just works with the default settings.

jd3 5 years ago

Over the past ~10 years, I've come to the conclusion that it's best to just pipe high quality video streams into a cross-platform external video player like mpv[0][1][2].

I can't remember what Firefox uses internally to decode/display different video codecs (ffmpeg like mpv? system builtins? hardware media encode/decode, like on the M1?), but I've always found that, through yt-dlp[3]/ streamlink[4] integration, a native external video player like mpv is better able to support high quality video streams without constantly dropping frames or tanking the performance of the tab/browser.

I can't put my finger on exactly why browser video streams feel so bad to me, but they do. Maybe it's the DOM overhead, or maybe it's something else. My personal takeaway is that browsers still just aren't optimized enough for fast/performant video playback.

[0]: https://mpv.io/

[1]: https://github.com/grmat/play-with

[2]: https://addons.mozilla.org/en-US/firefox/addon/play-with/

[3]: https://github.com/yt-dlp/yt-dlp

[4]: https://github.com/streamlink/streamlink

jamienicol 5 years ago

gfx.webrender.all no longer has any effect, as webrender is enabled everywhere by default (if supported by your hardware, which it probably is)

It would be very helpful if you could capture a performance profile while playing the video, by going to profiler.firefox.com and following the instructions.