-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathomxcontroller.go
More file actions
61 lines (54 loc) · 1.16 KB
/
Copy pathomxcontroller.go
File metadata and controls
61 lines (54 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// PLAYER OBJECT STRUCT AND METHODS
package main
import (
"io"
"os"
"os/exec"
"syscall"
)
var commandList = map[string]string{"pause": "p", "up": "\x1b[A", "down": "\x1b[B", "left": "\x1b[D", "right": "\x1b[C"}
type Player struct {
Playing bool
Paused string
FilmName string
Film *exec.Cmd
PipeIn io.WriteCloser
}
func (p *Player) StartFilm(name string) error {
var err error
p.FilmName = name
p.Paused = "Pause"
p.Playing = true
p.Film = exec.Command("omxplayer", "-o", "hdmi", name)
p.Film.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
p.PipeIn, err = p.Film.StdinPipe()
if err == nil {
p.Film.Stdout = os.Stdout
err = p.Film.Start()
}
return err
}
func (p *Player) PauseFilm() {
if p.Paused == "Pause" {
p.Paused = "Play"
} else {
p.Paused = "Pause"
}
}
func (p *Player) EndFilm() error {
pgid, err := syscall.Getpgid(p.Film.Process.Pid)
if err == nil {
syscall.Kill(-pgid, 15)
p.FilmName = ""
pageData.CurrentFilm = ""
p.Playing = false
}
return err
}
func (p *Player) SendCommandToFilm(command string) error {
if command == "pause" {
p.PauseFilm()
}
_, err := p.PipeIn.Write([]byte(commandList[command]))
return err
}