beispiel-programme_in_go
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| beispiel-programme_in_go [2018-05-28 08:01:21] – manfred | beispiel-programme_in_go [2023-01-17 00:05:55] (aktuell) – [Verwendung einer Bibliothek] manfred | ||
|---|---|---|---|
| Zeile 57: | Zeile 57: | ||
| Tschüß, verbesserte Welt! | Tschüß, verbesserte Welt! | ||
| - | |||
| - | ==== Funktion importieren (eigene Bibliothek) ==== | ||
| - | |||
| - | * [[http:// | ||
| - | |||
| - | > vi begruessung.go | ||
| - | <file go begruessung.go> | ||
| - | package begruessung | ||
| - | |||
| - | import " | ||
| - | |||
| - | // Begrüßung | ||
| - | func Hallo(name string) { | ||
| - | begruessung := "Hallo %v!\n" | ||
| - | fmt.Printf(begruessung, | ||
| - | } | ||
| - | |||
| - | // Verabschiedung | ||
| - | func Tschuess(name string) { | ||
| - | verabschiedung := " | ||
| - | fmt.Printf(verabschiedung, | ||
| - | } | ||
| - | </ | ||
| - | > go build begruessung.go | ||
| - | |||
| - | Leider kompiliert " | ||
| - | |||
| - | > vi Funktionsimport.go | ||
| - | <file go Funktionsimport.go> | ||
| - | package main | ||
| - | |||
| - | import " | ||
| - | |||
| - | func main() { | ||
| - | var Welt string = " | ||
| - | |||
| - | begruessung.Hallo(Welt) | ||
| - | |||
| - | begruessung.Tschuess(Welt) | ||
| - | } | ||
| - | </ | ||
| - | > go build Funktionsimport.go | ||
| - | > ./ | ||
| Zeile 906: | Zeile 863: | ||
| > ./web_check -HOST www.heise.de -PFAD / -STRING ' | > ./web_check -HOST www.heise.de -PFAD / -STRING ' | ||
| KO | KO | ||
| + | |||
| + | |||
| + | ==== Golang os exec Examples: Command Start and Run ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | <file go programmaufruf.go> | ||
| + | package main | ||
| + | |||
| + | import ( | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ) | ||
| + | |||
| + | func main() { | ||
| + | //var psize string | ||
| + | //psize = " | ||
| + | var psize string = " | ||
| + | var film = os.Args[1] | ||
| + | |||
| + | prog := " | ||
| + | cmd := exec.Command(prog, | ||
| + | |||
| + | out, err := cmd.Output() | ||
| + | if err != nil { | ||
| + | log.Fatal(err) | ||
| + | } | ||
| + | fmt.Printf(" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | > go build programmstart.go | ||
| + | ./ | ||
| + | [STREAM] | ||
| + | index=0 | ||
| + | codec_name=mpeg2video | ||
| + | codec_long_name=MPEG-2 video | ||
| + | profile=Main | ||
| + | codec_type=video | ||
| + | codec_tag_string=[0][0][0][0] | ||
| + | codec_tag=0x0000 | ||
| + | width=720 | ||
| + | height=576 | ||
| + | ... | ||
| + | |||
| + | //In der Praxis wird man eine solche Aufgabe nicht so lösen, sondern dafür eine entsprechende Bibliothek einsetzen.// | ||
| + | |||
| + | |||
| + | === Verwendung einer Bibliothek === | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | <file go FFprobeTest.go> | ||
| + | package main | ||
| + | |||
| + | import ( | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | |||
| + | " | ||
| + | ) | ||
| + | |||
| + | func string2int(s string) int { | ||
| + | i, err := strconv.Atoi(s) | ||
| + | if err != nil { | ||
| + | i = 0 | ||
| + | } | ||
| + | return i | ||
| + | } | ||
| + | |||
| + | func main() { | ||
| + | var film = os.Args[1] | ||
| + | |||
| + | ctx, cancelFn := context.WithTimeout(context.Background(), | ||
| + | defer cancelFn() | ||
| + | |||
| + | data, err := ffprobe.ProbeURL(ctx, | ||
| + | if err != nil { | ||
| + | log.Panicf(" | ||
| + | } | ||
| + | |||
| + | // | ||
| + | // | ||
| + | |||
| + | for i, s := range data.Streams { | ||
| + | codectype := s.CodecType | ||
| + | sprache, _ := s.TagList.GetString(" | ||
| + | fmt.Printf(" | ||
| + | |||
| + | if " | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | fmt.Printf(" | ||
| + | |||
| + | drehung := 0 | ||
| + | rotation, | ||
| + | drehlength := len([]rune(rotation)) | ||
| + | if drehlength > 0 { | ||
| + | drehung = string2int(rotation) | ||
| + | } | ||
| + | fmt.Printf(" | ||
| + | |||
| + | spieldauer := 0 | ||
| + | duration, | ||
| + | durlength := len([]rune(duration)) | ||
| + | if durlength > 0 { | ||
| + | var hms [3]int | ||
| + | rsplit := regexp.MustCompile(" | ||
| + | for g, h := range rsplit.Split(duration, | ||
| + | hms[g] = string2int(h) | ||
| + | } | ||
| + | |||
| + | // hms -> H:M:S -> Stunde: | ||
| + | spieldauer = hms[0]*3600 + hms[1]*60 + hms[2] | ||
| + | } | ||
| + | |||
| + | fmt.Printf(" | ||
| + | |||
| + | // Alle TAGs aus dem Container anzeigen | ||
| + | //for n, t := range s.TagList { | ||
| + | // | ||
| + | //} | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | > go build FFprobeTest.go | ||
| + | > ./ | ||
| + | Spur: 0, Typ: video, Sprache: eng | ||
| + | Spur: 0, Typ: video, Width: 720 | ||
| + | Spur: 0, Typ: video, Height: 576 | ||
| + | Spur: 0, Typ: video, PAR: 16:15 | ||
| + | Spur: 0, Typ: video, DAR: 4:3 | ||
| + | Spur: 0, Typ: video, Level: 8 | ||
| + | Spur: 0, Typ: video, FieldOrder: tt | ||
| + | Spur: 0, Typ: video, FPS: 25/1 | ||
| + | Spur: 0, Typ: video, avg FSP: 25/1 | ||
| + | Spur: 0, Typ: video, Drehung: 0 Grad | ||
| + | Spur: 0, Typ: video, Spieldauer: 122 Sekunden | ||
| + | Spur: 1, Typ: audio, Sprache: eng | ||
| + | Spur: 2, Typ: subtitle, Sprache: eng | ||
| + | Spur: 3, Typ: subtitle, Sprache: ger | ||
| + | </ | ||
| + | |||
/home/http/wiki/data/attic/beispiel-programme_in_go.1527494481.txt · Zuletzt geändert: von manfred
