Go bindings for libVLC enabling multimedia playback, streaming, and recording in Go applications.
libvlc-go is a Go library that provides bindings for the libVLC media framework and a high-level media player interface. It enables Go applications to play, stream, and record audio and video content using the robust capabilities of VLC, supporting a wide range of formats and protocols. The library simplifies multimedia integration by offering both low-level access to libVLC's API and convenient abstractions for common tasks.
Go developers building desktop applications, media tools, or any software requiring audio/video playback, streaming, or recording capabilities. It's particularly useful for those creating cross-platform media players, screen recorders, or streaming clients.
Developers choose libvlc-go because it brings the extensive format support and mature features of VLC to the Go ecosystem with an idiomatic API. It eliminates the need to write complex C interop code, provides both low-level and high-level interfaces, and includes practical examples for building real-world multimedia applications.
Handcrafted Go bindings for libVLC and high-level media player interface
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides direct access to libVLC's C API for both 2.X and 3.X versions, with separate Go modules ensuring compatibility, as detailed in the installation section.
Offers simplified interfaces for playback, event handling, and media management, reducing low-level C interop, as shown in the basic usage example.
Enables playing local files, network streams, and device capture on Linux, Windows, and macOS, leveraging VLC's extensive format support.
Includes support for equalizers, Chromecast streaming, and media discovery, extending beyond basic playback, as evidenced by the example applications.
Requires installing libVLC development files separately for each platform, with platform-specific wiki instructions, adding deployment complexity.
Tightly coupled with libVLC, so updates or changes in VLC can break compatibility, and it introduces a large external dependency.
The README relies on external libVLC documentation for advanced features, which may require switching contexts and lacks integrated guidance.