feat: Added FFMpeg library for video transcoding and gorm for database operations in generalnode routes
This commit is contained in:
@@ -2,10 +2,15 @@ package generalnode
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/alexohneander/flotte/pkg/models"
|
||||
"github.com/alexohneander/flotte/pkg/types/request"
|
||||
respone "github.com/alexohneander/flotte/pkg/types/response"
|
||||
"github.com/gin-gonic/gin"
|
||||
ffmpeg "github.com/u2takey/ffmpeg-go"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func registerRoutes(router *gin.Engine) *gin.Engine {
|
||||
@@ -41,5 +46,42 @@ func registerRoutes(router *gin.Engine) *gin.Engine {
|
||||
})
|
||||
})
|
||||
|
||||
// Start Transcoding
|
||||
router.GET("/transcode", func(c *gin.Context) {
|
||||
db, err := gorm.Open(sqlite.Open("flotte.db"), &gorm.Config{})
|
||||
if err != nil {
|
||||
fmt.Println("failed to connect database")
|
||||
}
|
||||
|
||||
// Get file from tmp folder
|
||||
moviePath := "./tmp/bbb_sunflower_1080p_60fps_normal.mp4"
|
||||
|
||||
// Get map node counter
|
||||
var mapNodes []models.Service
|
||||
db.Where("node_type = ?", "map").Find(&mapNodes)
|
||||
|
||||
// Cut Video in 10sek Segments
|
||||
i := 0
|
||||
iframes := 0
|
||||
for i < 10 {
|
||||
segmentPath := fmt.Sprintf("./tmp/seg_%d.mp4", i)
|
||||
err := ffmpeg.Input(moviePath, ffmpeg.KwArgs{"ss": iframes}).
|
||||
Output(segmentPath, ffmpeg.KwArgs{"t": 10}).
|
||||
OverWriteOutput().
|
||||
Run()
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
i++
|
||||
iframes = iframes + 10
|
||||
}
|
||||
|
||||
// send n segments to n map-nodes
|
||||
fmt.Println(mapNodes)
|
||||
|
||||
c.JSON(200, gin.H{"status": "start transcoding"})
|
||||
})
|
||||
return router
|
||||
}
|
||||
|
Reference in New Issue
Block a user