jlelse
/
bbb-download
Archived
1
Fork 0

Put all videos into a mkv video container (also without converting webms, should work with VLC)

This commit is contained in:
Jan-Lukas Else 2020-05-25 10:11:12 +02:00
parent 751b779d8e
commit b4959e43ea
1 changed files with 31 additions and 73 deletions

View File

@ -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())