feat: initial commit

This commit is contained in:
Alex Wellnitz 2025-02-11 12:07:24 +01:00
parent 4f8bd11858
commit de07752466
10 changed files with 121 additions and 1 deletions

View File

@ -1 +1,44 @@
# flotte
**Erläuterung der Zeichnung:**
* **Start: Input Video (A):** Der Prozess beginnt mit dem Eingabevideo, das transkodiert werden soll.
* **Video Segmentierung (B):** Das Eingabevideo wird in mehrere Segmente aufgeteilt. Dies ermöglicht die parallele Verarbeitung durch die Map-Nodes.
* **Segment 1, Segment 2, Segment N (C, D, E):** Repräsentieren die einzelnen Video-Segmente, die erzeugt wurden.
* **Map Node 1, Map Node 2, Map Node N: Map Task (F1, F2, FN):** Stellen die verschiedenen Knoten im MapReduce-Cluster dar, die die Map-Aufgaben ausführen. Jeder Knoten erhält ein oder mehrere Video-Segmente zur Verarbeitung.
* **Dekodierung (G1, G2, GN):** Innerhalb jedes Map-Nodes wird das zugewiesene Video-Segment zunächst dekodiert.
* **Transkodierung (H1, H2, HN):** Nach der Dekodierung erfolgt die eigentliche Transkodierung des Segments in das gewünschte Zielformat.
* **Transkodiertes Segment 1, Transkodiertes Segment 2, Transkodiertes Segment N (I1, I2, IN):** Die Ergebnisse der Map-Phase. Jeder Map-Node gibt ein transkodiertes Video-Segment aus.
* **Reduce Node: Reduce Task (J):** Ein zentraler Knoten, der die Reduce-Aufgabe übernimmt. Er sammelt die transkodierten Segmente von den Map-Nodes.
* **Segment Aggregation (K):** Der Reduce-Node führt die transkodierten Segmente in der korrekten Reihenfolge zusammen.
* **Finale Video Enkodierung (L):** Nach der Aggregation kann eine finale Enkodierung des gesamten Videos erfolgen, falls notwendig.
* **Ende: Transkodiertes Video (M):** Der Prozess endet mit der Ausgabe des vollständig transkodierten Videos.
**Mermaid Code:**
```mermaid
graph LR
A[Start: Input Video] --> B{Video Segmentierung};
B --> C(Segment 1);
B --> D(Segment 2);
B --> E(Segment N);
C --> F1[Map Node 1: Map Task];
D --> F2[Map Node 2: Map Task];
E --> FN[Map Node N: Map Task];
F1 --> G1{Dekodierung};
F2 --> G2{Dekodierung};
FN --> GN{Dekodierung};
G1 --> H1{Transkodierung};
G2 --> H2{Transkodierung};
GN --> HN{Transkodierung};
H1 --> I1[Transkodiertes Segment 1];
H2 --> I2[Transkodiertes Segment 2];
HN --> IN[Transkodiertes Segment N];
I1 & I2 & IN --> J[Reduce Node: Reduce Task];
J --> K{Segment Aggregation};
K --> L{Finale Video Enkodierung};
L --> M[Ende: Transkodiertes Video];
style F1,F2,FN fill:#f9f,stroke:#333,stroke-width:2px
style J fill:#ccf,stroke:#333,stroke-width:2px
```

24
cmd/root.go Normal file
View File

@ -0,0 +1,24 @@
package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
var rootCmd = &cobra.Command{
Use: "flotte",
Short: "Short",
Long: `Long`,
Run: func(cmd *cobra.Command, args []string) {
cmd.Help()
},
}
func Execute() {
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}

20
cmd/version.go Normal file
View File

@ -0,0 +1,20 @@
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(versionCmd)
}
var versionCmd = &cobra.Command{
Use: "version",
Short: "Print the version number of flotte",
Long: `All software has versions. This is flotte's`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("flotte v0.9 -- HEAD")
},
}

10
go.mod Normal file
View File

@ -0,0 +1,10 @@
module github.com/alexohneander/flotte
go 1.23.5
require github.com/spf13/cobra v1.8.1
require (
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
)

10
go.sum Normal file
View File

@ -0,0 +1,10 @@
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

1
internal/http/server.go Normal file
View File

@ -0,0 +1 @@
package http

1
internal/map_node/api.go Normal file
View File

@ -0,0 +1 @@
package mapnode

View File

@ -0,0 +1 @@
package preprocessor

View File

@ -0,0 +1 @@
package reducenode

9
main.go Normal file
View File

@ -0,0 +1,9 @@
package main
import (
"github.com/alexohneander/flotte/cmd"
)
func main() {
cmd.Execute()
}