feat: initial commit
This commit is contained in:
parent
4f8bd11858
commit
de07752466
43
README.md
43
README.md
@ -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
24
cmd/root.go
Normal 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
20
cmd/version.go
Normal 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
10
go.mod
Normal 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
10
go.sum
Normal 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
1
internal/http/server.go
Normal file
@ -0,0 +1 @@
|
||||
package http
|
1
internal/map_node/api.go
Normal file
1
internal/map_node/api.go
Normal file
@ -0,0 +1 @@
|
||||
package mapnode
|
1
internal/preprocessor/api.go
Normal file
1
internal/preprocessor/api.go
Normal file
@ -0,0 +1 @@
|
||||
package preprocessor
|
1
internal/reduce_node/api.go
Normal file
1
internal/reduce_node/api.go
Normal file
@ -0,0 +1 @@
|
||||
package reducenode
|
Loading…
x
Reference in New Issue
Block a user