• GamingChairModel@lemmy.world
    link
    fedilink
    arrow-up
    6
    ·
    11 months ago

    One of the areas where YouTube/Vimeo/Facebook/Twitch really excel, compared to things like PeerTube, is storing a shitload of file formats with all the different options of resolution/quality and codec. When a user uploads a supported file, YouTube automatically generates files containing h.264 video in mp4 containers at several different resolutions/bandwidth/quality settings, and then processes the more popularly viewed videos into more bandwidth-efficient codecs, like VP9 or AV1 (at the cost of much more processing/server load, which is why they only do this for videos that reach a particular threshold of views).

    Then, when someone views a video, it seamlessly sends the “best” video for that person’s resources and supported codecs, including stepping up or down in quality mid-stream based on the performance of that connection.

    Decentralization of these functions is a complex task, because not everyone will have the right hardware to do these things efficiently. Intel, AMD, and Apple CPUs support different hardware acceleration for video encoding or decoding, while Intel, AMD, Nvidia, and Apple have different GPU support, too. So transcoding and related functionality tends to be much more device-dependent. It’s not an insumountable problem, but in the meantime we’ll just basically live with less efficient quality-per-bandwidth settings on PeerTube videos. So that’ll exacerbate the cost of storage and bandwidth (or the quality) in a service that relies on user-donated storage and bandwidth.