Put all videos into a mkv video container (also without converting webms, should work with VLC)
This commit is contained in:
parent
751b779d8e
commit
b4959e43ea
104
bbb-download.go
104
bbb-download.go
|
@ -143,7 +143,7 @@ func main() {
|
||||||
"-i", path.Join(presentationId, imgnames[j]),
|
"-i", path.Join(presentationId, imgnames[j]),
|
||||||
"-t", fmt.Sprint(durations[j]),
|
"-t", fmt.Sprint(durations[j]),
|
||||||
"-pix_fmt", "yuv420p",
|
"-pix_fmt", "yuv420p",
|
||||||
"-vf", "scale=-1:720",
|
"-vf", "scale=-1:1080",
|
||||||
path.Join(presentationId, vidnames[j]))
|
path.Join(presentationId, vidnames[j]))
|
||||||
err = cmd.Run()
|
err = cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -188,101 +188,59 @@ func main() {
|
||||||
fmt.Println("slide videos merged")
|
fmt.Println("slide videos merged")
|
||||||
|
|
||||||
// download webcams
|
// download webcams
|
||||||
|
webcamsFile := ""
|
||||||
fmt.Println("downloading webcams")
|
fmt.Println("downloading webcams")
|
||||||
err = DownloadFile(path.Join(presentationId, "webcams.webm"), webcamsWebmUrl)
|
err = DownloadFile(path.Join(presentationId, "webcams.webm"), webcamsWebmUrl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = DownloadFile(path.Join(presentationId, "orig-webcams.mp4"), webcamsMp4Url)
|
err = DownloadFile(path.Join(presentationId, "webcams.mp4"), webcamsMp4Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Failed to download webcams:", err.Error())
|
fmt.Println("No webcams")
|
||||||
return
|
} else {
|
||||||
}
|
fmt.Println("webcams.mp4 file is downloaded")
|
||||||
cmd = exec.Command("ffmpeg",
|
webcamsFile = path.Join(presentationId, "webcams.mp4")
|
||||||
"-i", path.Join(presentationId, "orig-webcams.mp4"),
|
|
||||||
"-framerate", "1",
|
|
||||||
"-q:a", "0",
|
|
||||||
"-q:v", "0",
|
|
||||||
"-vf", "scale=-1:720",
|
|
||||||
path.Join(presentationId, "webcams.mp4"))
|
|
||||||
err = cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Failed to convert orig-webcams.mp4 to MP4:", err.Error())
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Successful download, convert to MP4
|
|
||||||
fmt.Println("webcams.webm file is downloaded")
|
fmt.Println("webcams.webm file is downloaded")
|
||||||
fmt.Println("converting webcams.webm to webcams.mp4")
|
webcamsFile = path.Join(presentationId, "webcams.webm")
|
||||||
cmd = exec.Command("ffmpeg",
|
|
||||||
"-i", path.Join(presentationId, "webcams.webm"),
|
|
||||||
"-framerate", "1",
|
|
||||||
"-q:a", "0",
|
|
||||||
"-q:v", "0",
|
|
||||||
"-vf", "scale=-1:720",
|
|
||||||
path.Join(presentationId, "webcams.mp4"))
|
|
||||||
err = cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Failed to convert webcams.webm to MP4:", err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// download deskshare
|
// download deskshare
|
||||||
deskshare := true
|
deskshareFile := ""
|
||||||
fmt.Println("downloading deskshare")
|
fmt.Println("downloading deskshare")
|
||||||
err = DownloadFile(path.Join(presentationId, "deskshare.webm"), deskshareWebmUrl)
|
err = DownloadFile(path.Join(presentationId, "deskshare.webm"), deskshareWebmUrl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = DownloadFile(path.Join(presentationId, "orig-deskshare.mp4"), deskshareMp4Url)
|
err = DownloadFile(path.Join(presentationId, "deskshare.mp4"), deskshareMp4Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("No deskshare")
|
fmt.Println("No deskshare")
|
||||||
deskshare = false
|
|
||||||
} else {
|
} else {
|
||||||
cmd = exec.Command("ffmpeg",
|
fmt.Println("deskshare.mp4 file is downloaded")
|
||||||
"-i", path.Join(presentationId, "orig-deskshare.mp4"),
|
deskshareFile = path.Join(presentationId, "deskshare.mp4")
|
||||||
"-framerate", "1",
|
|
||||||
"-q:a", "0",
|
|
||||||
"-q:v", "0",
|
|
||||||
"-vf", "scale=-1:720",
|
|
||||||
path.Join(presentationId, "deskshare.mp4"))
|
|
||||||
err = cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Failed to convert orig-deskshare.mp4 to MP4:", err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Successful download, convert to MP4
|
|
||||||
fmt.Println("deskshare.webm file is downloaded")
|
fmt.Println("deskshare.webm file is downloaded")
|
||||||
fmt.Println("converting deskshare.webm to deskshare.mp4")
|
deskshareFile = path.Join(presentationId, "deskshare.webm")
|
||||||
cmd = exec.Command("ffmpeg",
|
|
||||||
"-i", path.Join(presentationId, "deskshare.webm"),
|
|
||||||
"-framerate", "1",
|
|
||||||
"-q:a", "0",
|
|
||||||
"-q:v", "0",
|
|
||||||
"-vf", "scale=-1:720",
|
|
||||||
path.Join(presentationId, "deskshare.mp4"))
|
|
||||||
err = cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Failed to convert deskshare.webm to MP4:", err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("merging slides, webcams and deskshare side by side")
|
fmt.Println("merging slides, webcams and deskshare side by side")
|
||||||
cmd = exec.Command("ffmpeg",
|
streams := 1
|
||||||
"-i", path.Join(presentationId, "slides.mp4"),
|
cmd = exec.Command("ffmpeg", "-i", path.Join(presentationId, "slides.mp4"))
|
||||||
"-i", path.Join(presentationId, "webcams.mp4"),
|
if webcamsFile != "" {
|
||||||
"-i", path.Join(presentationId, "deskshare.mp4"),
|
cmd.Args = append(cmd.Args, "-i")
|
||||||
"-framerate", "1",
|
cmd.Args = append(cmd.Args, webcamsFile)
|
||||||
"-filter_complex", "hstack=inputs=3",
|
streams++
|
||||||
meetingName+".mp4")
|
|
||||||
if !deskshare {
|
|
||||||
cmd = exec.Command("ffmpeg",
|
|
||||||
"-i", path.Join(presentationId, "slides.mp4"),
|
|
||||||
"-i", path.Join(presentationId, "webcams.mp4"),
|
|
||||||
"-framerate", "1",
|
|
||||||
"-filter_complex", "hstack=inputs=2",
|
|
||||||
meetingName+".mp4")
|
|
||||||
}
|
}
|
||||||
|
if deskshareFile != "" {
|
||||||
|
cmd.Args = append(cmd.Args, "-i")
|
||||||
|
cmd.Args = append(cmd.Args, deskshareFile)
|
||||||
|
streams++
|
||||||
|
}
|
||||||
|
cmd.Args = append(cmd.Args, "-c")
|
||||||
|
cmd.Args = append(cmd.Args, "copy")
|
||||||
|
for i := 0; i < streams; i++ {
|
||||||
|
cmd.Args = append(cmd.Args, "-map")
|
||||||
|
cmd.Args = append(cmd.Args, strconv.Itoa(i))
|
||||||
|
}
|
||||||
|
cmd.Args = append(cmd.Args, meetingName+".mkv")
|
||||||
err = cmd.Run()
|
err = cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Failed to merge slides and webcams:", err.Error())
|
fmt.Println("Failed to merge slides and webcams:", err.Error())
|
||||||
|
|
Reference in New Issue