Description
Provides golang bindings for libvlc version 2.X/3.X/4.X. This is a work in
progress and it is not safe for use in a production environment. The current
implementation contains only a small portion of libvlc's functionality.
Full documentation can be found at: http://godoc.org/github.com/adrg/libvlc-go
libvlc-go alternatives and similar packages
Based on the "Video" category.
Alternatively, view libvlc-go alternatives based on common mentions on social networks and blogs.
-
M3U8
Parser and generator of M3U8-playlists for Apple HLS. Library for Go language. :cinema: -
gortsplib
RTSP 1.0 client and server library for the Go programming language -
go-astisub
Manipulate subtitles in GO (.srt, .ssa/.ass, .stl, .ttml, .vtt (webvtt), teletext, etc.) -
gst
Go bindings for GStreamer (retired: currently I don't use/develop this package) -
go-m3u8
Parse and generate m3u8 playlists for Apple HTTP Live Streaming (HLS) in Golang (ported from gem https://github.com/sethdeckard/m3u8) -
go-mpd
Go library for parsing and generating MPEG-DASH Media Presentation Description (MPD) files -
golibnotify
Go bindings for libnotify -- Create and update OS notifications in linux
TestGPT | Generating meaningful tests for busy devs
Do you think we are missing an alternative of libvlc-go or a related project?
Popular Comparisons
README
Go bindings for libVLC and high-level media player interface.
The package can be useful for adding multimedia capabilities to applications through the provided player interfaces. It relies on Go modules in order to mirror each supported major version of libVLC.
Documentation for v3, which implements bindings for libVLC 3.X, can be found on pkg.go.dev.
Documentation for v2, which implements bindings for libVLC 2.X, can be found on pkg.go.dev.
Example applications:
Prerequisites
The libVLC development files are required. Instructions for installing the VLC SDK on multiple operating systems can be found on the wiki pages of this project.
Installation
In order to support multiple versions of libVLC, the package contains a Go module for each major version of the API. Choose an installation option depending on the version of libVLC you want to use.
libVLC v3.X
go get github.com/adrg/libvlc-go/v3
libVLC v2.X
go get github.com/adrg/libvlc-go/v2
# Build for libVLC < v2.2.0
go build -tags legacy
All versions above also work for projects which are not using Go modules. However, consider switching to modules.
Examples
- GTK 3 media player (using gotk3)
- GTK 3 screen recorder (using gotk3)
- GTK 3 media discovery (using gotk3)
- GTK 3 equalizer (using gotk3)
- GTK 2 media player (using go-gtk)
- GTK 2 screen recorder (using go-gtk)
- Basic player usage
- Basic list player usage
- Handling events
- Retrieve media tracks
- Retrieve media information
- Display screen as player media
- Stream media to Chromecast
- Player equalizer usage
Examples for all supported API versions can be found at https://github.com/adrg/libvlc-go-examples.
Usage
package main
import (
"log"
vlc "github.com/adrg/libvlc-go/v3"
)
func main() {
// Initialize libVLC. Additional command line arguments can be passed in
// to libVLC by specifying them in the Init function.
if err := vlc.Init("--no-video", "--quiet"); err != nil {
log.Fatal(err)
}
defer vlc.Release()
// Create a new player.
player, err := vlc.NewPlayer()
if err != nil {
log.Fatal(err)
}
defer func() {
player.Stop()
player.Release()
}()
// Add a media file from path or from URL.
// Set player media from path:
// media, err := player.LoadMediaFromPath("localpath/test.mp4")
// Set player media from URL:
media, err := player.LoadMediaFromURL("http://stream-uk1.radioparadise.com/mp3-32")
if err != nil {
log.Fatal(err)
}
defer media.Release()
// Retrieve player event manager.
manager, err := player.EventManager()
if err != nil {
log.Fatal(err)
}
// Register the media end reached event with the event manager.
quit := make(chan struct{})
eventCallback := func(event vlc.Event, userData interface{}) {
close(quit)
}
eventID, err := manager.Attach(vlc.MediaPlayerEndReached, eventCallback, nil)
if err != nil {
log.Fatal(err)
}
defer manager.Detach(eventID)
// Start playing the media.
err = player.Play()
if err != nil {
log.Fatal(err)
}
<-quit
}
In action
A list of projects using libvlc-go, in alphabetical order. If you want to showcase your project in this section, please create a pull request with it.
- Alio - Command-line music player with Emacs style key bindings.
- Tripbot - An ongoing 24/7 slow-TV art project.
Stargazers over time
Contributing
Contributions in the form of pull requests, issues or just general feedback,
are always welcome.
See [CONTRIBUTING.MD](CONTRIBUTING.md).
Contributors: adrg, fenimore, tarrsalah, danielpellon, patknight, sndnvaps.
Discord server
libvlc-go is part of the libVLC Discord Community server. Feel free to come say hello!
References
For more information see the libVLC documentation.
License
Copyright (c) 2018 Adrian-George Bostan.
This project is licensed under the MIT license. See [LICENSE](LICENSE) for more details.
*Note that all licence references and agreements mentioned in the libvlc-go README section above
are relevant to that project's source code only.