A computer-implemented method for setting colors of user interface components of a video player to complement a playing video, the method comprising: identifying a plurality of frames of the video; for each frame of the identified frames: identifying a dominant color of a frame of a video by: partitioning colors of pixels of the frame into a plurality of color partitions, identifying a color partition having a greatest number of the pixels of the frame, and averaging the pixels of the identified color partition; generating a plurality of color variants based on the dominant color by applying color parameters to color components of the dominant color, the color parameters defining allowable values or allowable ranges of values for the color components such that application of the parameters enforces color selection in accordance with these parameters; and generating, for each of the color variants and for each of a plurality of user interface component types, a user interface component color; identifying a playing state of the video, a current one of the identified frames before a current playing point in the video, and a next one of the identified frames after a the current playing point in the video; identifying first user interface component colors based on the playing state and on the user interface component colors generated for the current identified frame; identifying second user interface component colors based on the playing state and on the user interface component colors generated for the next identified frame; and setting colors of user interface components of the video player based on the identified first user interface component colors and on the identified second user interface component colors. identifying a plurality of frames of the video; for each frame of the identified frames: identifying a dominant color of a frame of a video by: partitioning colors of pixels of the frame into a plurality of color partitions, identifying a color partition having a greatest number of the pixels of the frame, and averaging the pixels of the identified color partition; generating a plurality of color variants based on the dominant color by applying color parameters to color components of the dominant color, the color parameters defining allowable values or allowable ranges of values for the color components such that application of the parameters enforces color selection in accordance with these parameters; and generating, for each of the color variants and for each of a plurality of user interface component types, a user interface component color; identifying a dominant color of a frame of a video by: partitioning colors of pixels of the frame into a plurality of color partitions, identifying a color partition having a greatest number of the pixels of the frame, and averaging the pixels of the identified color partition; partitioning colors of pixels of the frame into a plurality of color partitions, identifying a color partition having a greatest number of the pixels of the frame, and averaging the pixels of the identified color partition; generating a plurality of color variants based on the dominant color by applying color parameters to color components of the dominant color, the color parameters defining allowable values or allowable ranges of values for the color components such that application of the parameters enforces color selection in accordance with these parameters; and generating, for each of the color variants and for each of a plurality of user interface component types, a user interface component color; identifying a playing state of the video, a current one of the identified frames before a current playing point in the video, and a next one of the identified frames after a the current playing point in the video; identifying first user interface component colors based on the playing state and on the user interface component colors generated for the current identified frame; identifying second user interface component colors based on the playing state and on the user interface component colors generated for the next identified frame; and setting colors of user interface components of the video player based on the identified first user interface component colors and on the identified second user interface component colors.