In Video.js, a "tech" (short for technology) is the underlying playback engine. The most common tech is the HTML5 video element, but Video.js can also use Flash (legacy), YouTube, or custom techs.
For HLS streaming, browsers do not natively support .m3u8 playlists. To solve this, Video.js uses a middleware tech that intercepts the stream, transmuxes it into something the HTML5 video element can understand (usually MP4 fragments), and feeds the data to the native player. In Video
Historically, this tech was named Hls. You accessed it via: This property gave you direct access to the
player.tech_.hls
This property gave you direct access to the underlying HLS implementation, allowing you to: Flash—though Flash is dead
You might wonder why we use tech_ (with an underscore). The tech_ property is internal to Video.js and represents the underlying playback technology (like HTML5, Flash—though Flash is dead, or native HLS). It’s not meant for public API use, but it’s often the only way to access advanced stream methods.
Pro tip: If there’s a public method on the player for what you need (e.g., player.currentTime()), always prefer that over player.tech_.vhs. Use tech_.vhs only when absolutely necessary.