视频第一帧
First frame of video
我正在创建一个单页应用程序,后端使用 Golang,前端使用 javascript。
我想找到一种方法如何使用 Golang 获取视频的第一帧。
首先,我将一个.mp4 视频文件上传到服务器。它保存在服务器上。
有没有办法使用 Golang 获取此视频的第一帧?
应该可以在前端使用 Javascript 来做到这一点,但我觉得这不是解决这个问题的正确方法。
我不知道如何使用 Golang 实现它,我还没有找到任何有用的库,甚至没有可以帮助我解决这个问题的内置函数。
我们将不胜感激每一条建议或建议。
按照评论中的建议,使用 ffmpeg would be the easiest approach. Below is an example adapted from this answer:
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
filename := "test.mp4"
width := 640
height := 360
cmd := exec.Command("ffmpeg", "-i", filename, "-vframes", "1", "-s", fmt.Sprintf("%dx%d", width, height), "-f", "singlejpeg", "-")
var buffer bytes.Buffer
cmd.Stdout = &buffer
if cmd.Run() != nil {
panic("could not generate frame")
}
// Do something with buffer, which contains a JPEG image
}
我正在创建一个单页应用程序,后端使用 Golang,前端使用 javascript。 我想找到一种方法如何使用 Golang 获取视频的第一帧。
首先,我将一个.mp4 视频文件上传到服务器。它保存在服务器上。
有没有办法使用 Golang 获取此视频的第一帧? 应该可以在前端使用 Javascript 来做到这一点,但我觉得这不是解决这个问题的正确方法。
我不知道如何使用 Golang 实现它,我还没有找到任何有用的库,甚至没有可以帮助我解决这个问题的内置函数。
我们将不胜感激每一条建议或建议。
按照评论中的建议,使用 ffmpeg would be the easiest approach. Below is an example adapted from this answer:
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
filename := "test.mp4"
width := 640
height := 360
cmd := exec.Command("ffmpeg", "-i", filename, "-vframes", "1", "-s", fmt.Sprintf("%dx%d", width, height), "-f", "singlejpeg", "-")
var buffer bytes.Buffer
cmd.Stdout = &buffer
if cmd.Run() != nil {
panic("could not generate frame")
}
// Do something with buffer, which contains a JPEG image
}