I am trying to using the D-Bus interface on omxplayer in order to control the running video. I'm attempting this using the go.dbus library found here: https://github.com/guelfey/go.dbus
The omxplayer documentation provides a dbuscontrol.sh script that I can use successfully. It sets some environments variable and then can use dbus-send in order to query omxplayer.
I'm trying to reproduce this in Go but I keep getting the error "The name org.mpris.MediaPlayer2 was not provided by any .service files"
Here is my code:
package main
import (
"encoding/json"
"fmt"
"os"
"github.com/guelfey/go.dbus"
"github.com/guelfey/go.dbus/introspect"
)
func main() {
os.Setenv("OMXPLAYER_DBUS_ADDR", "/tmp/omxplayerdbus.pi")
os.Setenv("OMXPLAYER_DBUS_PID", "/tmp/omxplayerdbus.pi.pid")
conn, err := dbus.SessionBus()
if err != nil {
panic(err)
}
node, err := introspect.Call(conn.Object("org.mpris.MediaPlayer2.omxplayer", "/org/mpris/MediaPlayer2"))
if err != nil {
fmt.Println(err)
}
data, _ := json.MarshalIndent(node, "", " ")
var s []string
err = conn.BusObject().Call("org.freedesktop.DBus.ListNames", 0).Store(&s)
if err != nil {
fmt.Fprintln(os.Stderr, "Failed to get list of owned names:", err)
os.Exit(1)
}
fmt.Println("Currently owned names on the session bus:")
for _, v := range s {
fmt.Println(v)
}
os.Stdout.Write(data)
}